Verona
システムプログラミング向けのリサーチ用の言語
これはオブジェクトのラッパー
cownsは「concurrent owners」の略
システムプログラミングには予測可能性とraw accessが必要だが、
今の所raw accessを安全に行うための型システムは達成されていない
高レベルならいけてる
言語の設計は、スケーラビリティと安全性を両立するのが難しい
?
不要になったオブジェクトを探してGCするためには遅延が生まれる
同時に別の箇所の並列なメモリ書換えをできないようにする
そうしてしまうと、並列プログラミングができなくなってしまう
対処法
一部、安全でないライブラリを提供する
言語の一部として並行性モデルを提供する
よくしらない

Veronaではこれらの2つの対処法に代わって
cownsというモデルを導入する
これは
リソースのセットすることをカプセル化する
一度に一つの実行スレッドによってアクセスされる
オブジェクトを cown()
で包むことで並列にできる
以下のように書くことで x
に直接アクセスできなくなる
veronavar c = cown(x) // cはcown[T]型
一度包むとスケジューリングしないと使えない
veronawhen (var x = c)
{
// xは`T & mut`型
// Access internals of cown(c) using name x in here
}
ここに出てくる x
は cown(x)
の中身の x
ショートハンドが用意されている
veronavar c = cown(x)
when (c)
{
// c : T & mut
}
銀行口座に残高を加えるプログラムの例
参考