注目★★★★★Lobsters
MojoのPointer、安全とunsafeを1型に統合
30秒で把握
- 1MojoのPointerは安全操作とunsafe操作を1つの型で扱う
- 2originが参照寿命と可変参照の排他性をコンパイル時検査
- 3unsafe_leak後の初期化・破棄・メモリ解放は利用者が管理
要約
Mojoのraw pointerは、安全な操作とunsafeな操作を同じPointer型で扱う。unique ownership、ASAP destruction、originにより、参照先の寿命や可変参照の排他性をコンパイル時に検査する。nullはPointerそのものではなくOptional[Pointer]で表す。一方、unsafe_offsetやunsafe_leakを使うと、未初期化メモリの読み書きや解放後利用はプログラマーの責任になる。動的確保ではAllocationがメモリ所有権を持ち、linear typeによって明示的な破棄やdeallocが要求される。安全型とunsafe型を分けず、操作ごとに安全性を決める設計を採用した。
あなたへの影響
MojoでFFIや動的メモリを扱う日本のエンジニアは、unsafe APIの使用箇所で初期化・破棄・解放後利用を次スプリントで検証すべきです。
推奨:Pointerのoriginは寿命と排他性を補助しますが、UntrackedOriginでは未初期化メモリの管理を代替しないため、Allocationの所有権を明示的に処理してください。