The shipped wai-web package needs WebAssembly with sign-extension, non-trapping float-to-int and bulk memory, and i64 crossing the JS boundary as BigInt. reach/build.sh derives three more builds from that package with pinned tools (binaryen version_123 by archive SHA-256; TypeScript, esbuild and acorn by package-lock.json): - L1: the shipped binary legalised at the JS interface, for engines where i64 does not cross as BigInt; - L2: MVP-lowered and legalised, at four profiles (full, verify_decode, verify, receipt), for MVP-only WebAssembly; - J: the wasm2js translation, one ES5 script per profile, with an ES5-floor runtime and glue: memory views refreshed when the buffer changes, i64 values carried as Numbers where there is no BigInt. wai-load.js (ES5) picks shipped, L1, L2 or J from feature probes alone and says why; a rung can be forced for testing. test/conformance.js (ES5) runs the workloads over the repository's corpora on any rung and compares every output with the shipped build's; run-modern.mjs forces every rung and profile on a modern Node and runs the demo verify scripts against each full build. Co-Authored-By: Claude Opus 5.5 <[email protected]>
34 KiB
34 KiB