generated at
Verona
システムプログラミング向けのリサーチ用の言語
C++実装であり、セルフホストすることはない ref
cownsというモデルを用いる
これはオブジェクトのラッパー
cownsは「concurrent owners」の略

型推論エンジン ref


verona/explore.mdの読みメモ
システムプログラミングには予測可能性とraw accessが必要だが、
今の所raw accessを安全に行うための型システムは達成されていない
高レベルならいけてる
言語の設計は、スケーラビリティと安全性を両立するのが難しい
不要になったオブジェクトを探してGCするためには遅延が生まれる
これを解決するためにOwnershipを使う
同時に別の箇所の並列なメモリ書換えをできないようにする
そうしてしまうと、並列プログラミングができなくなってしまう
対処法
一部、安全でないライブラリを提供する
言語の一部として並行性モデルを提供する
ref Pony
よくしらないmrsekut
Veronaではこれらの2つの対処法に代わってcownsというモデルを導入する
これは
リソースのセットすることをカプセル化する
一度に一つの実行スレッドによってアクセスされる
オブジェクトを cown() で包むことで並列にできる
以下のように書くことで x に直接アクセスできなくなる
verona
var c = cown(x) // cはcown[T]型
一度包むとスケジューリングしないと使えない
verona
when (var x = c) { // xは`T & mut`型 // Access internals of cown(c) using name x in here }
ここに出てくる x cown(x) の中身の x
ショートハンドが用意されている
verona
var c = cown(x) when (c) { // c : T & mut }
銀行口座に残高を加えるプログラムの例
リージョンを用いている
ここから先読んでない

参考