注目★★★★★Hacker News
Zig 0.17.0前進、ArrayListのポインタ安全性とSPIR-V強化
30秒で把握
- 1ArrayListにPointer Stability Lock追加、保持中の無効化操作をpanicで検出
- 2パッケージ管理をmakerへ移行、Zig実行ファイルを14.1 MiBから13.5 MiBへ縮小
- 3SPIR-V対応拡大、behaviorテスト通過率49%と@bitCast意味論を更新
要約
Zigのmainブランチで、ArrayListにPointer Stability Lockが追加され、保持中のポインタを無効化する操作をpanicで検出できるようになった。lockPointers()後に再確保や要素移動を伴う操作を行うと、ensureTotalCapacityなどでアサーションが発生する。パッケージ管理機能はコンパイラからmakerへ移され、Zig実行ファイルは14.1 MiBから13.5 MiBへ4%縮小した。SPIR-Vでは@SpirvType、専用calling convention、マルチスレッドcodegen、複数オブジェクトのリンクに対応し、spirv64-vulkanのbehaviorテスト通過率は49%まで上昇した。さらにLLVM backendとcomptimeを含む全体で@bitCastの意味論を論理ビット配置ベースへ変更した。
あなたへの影響
ZigでArrayList由来のsliceを保持するコードは、次のスプリントでlockPointers()とunlockPointers()の適用箇所を確認し、既存テストを再実行してください。
推奨:@bitCastの変更やSPIR-V対応を使うチームは、コンパイラ更新後に型変換とshaderの回帰テストを追加する必要があります。