You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* track(#374): memory.copy/memory.fill repro — bulk-mem lowering gap
19 falcon sites (11 fill + 8 copy). Same _ => None class as #369/#372; loud-skips
on v0.11.47. No WasmOp::MemoryCopy/MemoryFill, no decoder arm, no lowering — a real
lowering to build (decode + stack-effect + bounds-checked copy/fill loop with
memmove-overlap + OOB trap). Repro only; fix = next block, own release.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* feat(#374): lower memory.copy/memory.fill (bulk-memory) — bounds-checked, trap-correct
memory.copy/memory.fill fell through the decoder `_ => None` and (since
v0.11.46/GI-FPU-001) loud-skipped the whole function — 19 falcon sites, the
largest remaining bulk-mem gap. Unlike #372 the lowering did not exist at all.
- WasmOp::MemoryCopy / MemoryFill + decoder arms (memory 0 only; non-zero
memory index loud-skips, preserving the GI-FPU-001 honesty contract)
- stack effect: pop 3, push 0 (wasm_stack_check)
- optimizer decline -> direct selector fallback (#120/#188/#372 pattern)
- select_with_stack lowering: fill = STRB byte loop (low byte of val); copy =
memmove byte loop with direction by dst/src order (dst>src copies backward).
Bounds (Software mode) trap via inline UDF guarded by a LOCAL skip branch,
end-EXCLUSIVE (off+len>size or u32-overflow traps; ==size ok), matching
wasmtime. The 3 dead popped operands are reused as walking pointers (only R12
extra) — no temp allocation.
Gate (value-level, no silicon): bulk_memory_374_differential.py 16/16 vs
wasmtime over discriminating vectors (forward, overlap dst>src backward, overlap
dst<src forward, self-copy, len==0, dst/src+len==size boundaries NO trap, OOB
dst/src TRAP, low-byte fill). Frozen-safe: control_step 0x00210A55 13/13,
flight_seam 0x07FDF307, div_const 338/338 byte-identical. Unit tests for
decoder/stack-check/selector. rivet GI-MEM-002 (+VER-001).
Falcon silicon (falcon-v1.56.fused.wasm) gates the release before #374 closes.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* chore(release): v0.11.49 — #374 bulk-memory (memory.copy/fill) + pin sweep + changelog
Pin sweep 0.11.48 -> 0.11.49 (workspace.package + 10 path-dep pins + MODULE.bazel
+ Cargo.lock synth-* packages). CHANGELOG v0.11.49 with falsification.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
0 commit comments