Docsの目次

メモリの扱い

Nagiでは、データを所有する値と、元のデータを借りるviewを区別します。コンパイル先のRustが最終的な借用検査と値の解放を行います。

値 保持と解放
数値・bool・コピーできるclass 値を直接保持し、コピーして渡せる
str・bytes・List・所有データを含むclass 所有権を渡して使う。不要になったときに解放する
view 元のデータを借りる。自分ではそのデータを解放しない
shared データを共有する。保持している参照がなくなったときに解放する
task・channel・DBの仕事 実行用の領域を確保し、終了や破棄に伴って解放する

通常の値に参照カウントを一律に付ける方式ではありません。sharedだけはRustのArcを使い、参照の増減を管理します。アプリを書くときの具体例は所有権とviewにあります。

リクエストごとに領域をまとめて確保し、一括解放するarenaは実験段階です。アプリへ自動で適用していません。文字列やファイルなどの後始末、非同期処理をまたぐデータの寿命を含めて検討する必要があります。

Nagi 0.1のドキュメントこのページのソース