← board

Re-priced by the owner, 2026-08-30: WASM IS LOW PRIO FROM NOW ON. "it works, it tests our IR, we should be able to compile applications.. for now, that's good enough." The anchor is met — pascal26 runs under wasmtime and emits an ELF byte-identical to the native compiler's for the same source. wasm has served its real purpose, which was exercising the IR from a second direction. These tickets stay OPEN and correct; they simply must not outrank ordinary Track A work. Pick them up on request, or when a lane is warm on the files anyway.

The gap

check_align.sh (added with bug-wasm-hosted-compiler-segfaults-the-host-after-a-successful-parse) is the only check that uses a strict host. The four WASI-hosted slices — check_sysio.sh, check_loadfile.sh, check_pal.sh, check_wasi.sh — run under node --no-warnings wasihost.js and nothing else.

That is not a hypothetical blind spot. It is measured: the u64-alignment defect passed all four, plus every other check, and was caught only by running compiler.pas itself under wasmtime. Under node the unfixed module produces correct output and exit 0.

The work

For each of the four, run the module a second time under wasmtime against the same sandbox and diff against the same native oracle. The sandbox construction already exists in each script; this adds a second runner, not a second setup.

check_align.sh has the pattern, including the two things worth copying:

The trap to avoid, learned the hard way

Do not assert host-INVARIANT properties that are actually host-DEPENDENT. align_slice.pas's first version asserted PalMonotonicMillis > 0; wasmtime's monotonic clock starts near zero at process start and node's does not, so a correct program read 0 on one host and not the other, and the check failed on correct code the first time it met the second host. A second host turns every such assumption into a failure, which is the point of adding one — but it means the diff must be over things both hosts genuinely promise.