2.1 KiB
WASM build reproducibility
v23では、src/を監査可能なkernel source、src/abi.jsonを公開ABI、
toolchain.lock.jsonを固定toolchain契約として扱います。
互換payloadを展開する
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/extract-wasm.ps1
現在配布している8 payloadをdist/wasm/へ展開し、byte数とSHA-256を
manifest.jsonへ記録します。COLOR SIMD/scalarがbyte単位で同一ならStandaloneでは
Base64文字列を1本へ自動集約し、異なる場合は各payloadを保持します。どちらの場合もmanifest上の2 ABI名は維持します。
sourceから再生成する
clang 17.0.6をPATHへ置き、次を実行します。
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/build-wasm.ps1
生成先はbuild/wasm-v23/です。src/shallow_kernel.c、
src/deep_kernel.c、src/bla_kernel_v18.c、src/color_kernel.cをそれぞれ
SIMD/scalarでcompileし、timestampを含まないsource manifestを生成します。
配布payloadへ昇格するときだけ-Promoteを指定します。昇格前に
tests/kernel-golden.mjsが、画素中心座標、escape iteration、magnitude、
smooth補正、SIMD/scalar同値性を検査します。golden失敗時はコピーも
kernels.js再生成も行いません。
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/build-wasm.ps1 -Promote
信頼境界
公式配布物のSHA-256を照合したclang 17.0.6とNode.js v22.18.0を作業領域内で使用し、
復元sourceのcompile、generated-WASM golden、SIMD/scalar同値性、画素中心契約を実行済みです。
golden合格後に8 payloadとkernels.jsを昇格し、Hosted/Standalone成果物も再生成しました。
実測結果と生成manifestのSHA-256はaudit/v23-source-baseline.jsonへ記録しています。
省略なしの再検証は、toolchainをPATHへ追加した状態で次を実行します。
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/test-all.ps1 -RequireToolchain