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
fix(#369): unsupported decoder ops loud-skip, never silently drop (GI-FPU-001) (#371)
* fix(#369): unsupported decoder ops loud-skip the function, never silently drop (GI-FPU-001)
The decoder's `convert_operator` returns None for any op it can't lower, and the
caller silently dropped it — leaving the operand stack wrong and the function a
SILENT miscompile (scalar f32.add -> `mov r0,r1`, returning an operand instead of
the sum; same `_ => None` line drops memory.copy). Per the #180/#185 contract, an
unsupported op must surface loudly, never silently continue.
- wasm_decoder.rs: FunctionOps gains `unsupported: Option<String>`;
decode_function_body records the first value-affecting op that decodes to None
(everything except the intentional Nop/Unreachable, via is_intentionally_ignored).
- main.rs compile loop: a flagged function is LOUD-SKIPPED (warning naming the op +
symbol absent -> caller gets a link error), reusing the #168 skipped_funcs path,
before selection. An all-skipped module errors loudly rather than emitting nothing.
General fix: covers scalar f32/f64 (#369), bulk-memory (memory.copy/fill), and any
other decoder-dropped value-affecting op. Honest interim until real VFP (GI-FPU-002)
and bulk-memory lowering land.
Verified: f32/f64 module now loud-skips (was silent `mov r0,r1`); all three frozen
oracles byte-identical (control_step 0x00210A55 13/13, flight_seam 0x07FDF307,
div_const 338/338 — no fixture uses floats); unit test + fmt + clippy clean.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* chore(release): v0.11.46 — #369 GI-FPU-001 unsupported-op loud-skip
Pin sweep 0.11.45 -> 0.11.46 (workspace.package + 10 crate path-deps +
MODULE.bazel + Cargo.lock). CHANGELOG v0.11.46 with falsification statement.
rivet: GI-FPU-001 -> implemented + GI-FPU-VER-001 (verifies, sw-verification:
unit test + frozen byte-identity). Frozen oracles re-confirmed on the bumped
tree (control_step ORACLE PASS).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
0 commit comments