Asayomu Tech
注目★★★★★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の回帰テストを追加する必要があります。

詳細を読む → 元記事へ※ 本文は元記事をご確認ください (asayomu は要約のみ提供)

関連する記事

※ 外部記事の権利は原著作者に帰属します。著作権削除要請は copyright@asayomu.jp までご連絡ください(受領確認 24h・実処理 72h 以内)。