Verona
MicroSoft製のRustっぽいプログラミング言語
システムプログラミング向けのリサーチ用の言語
C++実装であり、セルフホストすることはない ref
cownsというモデルを用いる
これはオブジェクトのラッパー
cownsは「concurrent owners」の略
github
型推論エンジン ref
verona/explore.mdの読みメモ
システムプログラミングには予測可能性とraw accessが必要だが、
今の所raw accessを安全に行うための型システムは達成されていない
高レベルならいけてる
言語の設計は、スケーラビリティと安全性を両立するのが難しい
?
不要になったオブジェクトを探してGCするためには遅延が生まれる
これを解決するためにOwnershipを使う
同時に別の箇所の並列なメモリ書換えをできないようにする
そうしてしまうと、並列プログラミングができなくなってしまう
対処法
一部、安全でないライブラリを提供する
ref Rust: unsafe
言語の一部として並行性モデルを提供する
ref Pony
よくしらないmrsekut.icon
Veronaではこれらの2つの対処法に代わってcownsというモデルを導入する
これは
リソースのセットすることをカプセル化する
一度に一つの実行スレッドによってアクセスされる
オブジェクトをcown()で包むことで並列にできる
以下のように書くことでxに直接アクセスできなくなる
code:verona
var c = cown(x) // cはcownT型
一度包むとスケジューリングしないと使えない
code:verona
when (var x = c)
{
// xはT & mut型
// Access internals of cown(c) using name x in here
}
ここに出てくるxはcown(x)の中身のx
ショートハンドが用意されている
code:verona
var c = cown(x)
when (c)
{
// c : T & mut
}
銀行口座に残高を加えるプログラムの例
例1, 例2, 例3
リージョンを用いている
ここから先読んでない
参考
https://keens.github.io/blog/2020/01/26/uwasanoveronawonagametemiru/
https://twitter.com/luckystar___/status/1218257019162873856
https://twitter.com/nwtgck/status/1218008584006451200
https://twitter.com/miura1729/status/1218454335807295488
/nwtgck/Verona - Microsoft
https://www.zdnet.com/article/microsoft-were-creating-a-new-rust-based-programming-language-for-secure-coding/
https://developers.slashdot.org/story/19/12/02/2313238/microsoft-is-creating-a-new-rust-based-programming-language-for-secure-coding
#プログラミング言語