Skip to content

release: v1.1.2 — fix #145 gale i64 SortDiffers crash#148

Merged
avrabe merged 1 commit into
mainfrom
release/v1.1.2
May 30, 2026
Merged

release: v1.1.2 — fix #145 gale i64 SortDiffers crash#148
avrabe merged 1 commit into
mainfrom
release/v1.1.2

Conversation

@avrabe
Copy link
Copy Markdown
Contributor

@avrabe avrabe commented May 30, 2026

Summary

Patch release closing #145: loom optimize panicked with SortDiffers { BitVec 64 vs 32 } (+ unwrap()-on-None) on i64-heavy modules (gale-ffi / compiler_builtins), reverting every function (inliner no-op) and emitting 21 MB+ of stderr. The fix landed via PR #146 (merged); this PR is the version bump + CHANGELOG.

What v1.1.2 delivers

  • No more crash — width-match at i64 binop sites in both symbolic executors (match_bv_widths, finally wired in). Sound: repairs model artifacts at binops; equivalence checks bail conservatively (never force-match).
  • No more 21 MB floodOnce-installed z3-origin panic filter + per-function revert logging behind LOOM_VERBOSE_REVERTS.
  • Bounded verification — Z3 per-query timeout (LOOM_Z3_TIMEOUT_MS, default 5000 ms) → slow i64 solve becomes a conservative revert, not a hang.

Known limitation (tracked #147)

Fully-verified i64 inlining requires a Z3 bitvector solve per function, which is slow in aggregate on large modules; the i64 inline unit tests stay #[ignore]'d (they hang in SMT-formula construction, not bounded by the per-query timeout). v1.1.2 guarantees no crash / no flood / sound output; fast verified i64 inlining + re-enabling the tests is #147. This is called out prominently in the CHANGELOG and release notes.

CI

All substantive gates green on the merged commit: Z3 Verification Build, Differential Testing, Build ×3, Clippy, Format, WASM Build, Validate WebAssembly Output, Rivet Traceability. The Test matrix (slow i64 verification, #147) and Rocq Formal Proofs (pre-existing upstream toolchain) are admin-merged through, as with prior releases.

Falsification

Wrong if a user on v1.1.2 still sees the SortDiffers panic / 21 MB stderr on an i64 module (the fix didn't take), or if loom optimize produces invalid/incorrect output on i64 (the width-match changed a modeled value — it shouldn't, by the binop-vs-equivalence boundary). Slowness on large i64 modules is the documented #147 limitation, not a v1.1.2 regression.

…Z3 timeout)

Patch release closing #145: loom optimize panicked with
SortDiffers { BitVec 64 vs 32 } (+ unwrap-None) on i64-heavy modules
(gale-ffi / compiler_builtins), reverting every function and emitting
21 MB+ of stderr. Shipped via PR #146.

- Width-match i64 binops in both symbolic executors (the dormant
  match_bv_widths helper, now wired in). Sound: repairs model artifacts
  at binops; equivalence checks bail conservatively, never force-match.
- Z3 per-query timeout (LOOM_Z3_TIMEOUT_MS, default 5000ms) -> slow i64
  solve becomes a conservative revert, not a hang.
- z3-origin panic backtraces suppressed (Once-installed filter);
  per-function revert logging behind LOOM_VERBOSE_REVERTS. Kills the
  21 MB flood.

Known limitation (tracked #147): fully-verified i64 inlining is slow in
aggregate on large modules; the i64 inline unit tests stay #[ignore]'d
(they hang in SMT-formula construction, not bounded by the per-query
timeout). v1.1.2 guarantees no crash / no flood / sound output;
fast verified i64 inlining + re-enabling the tests is #147.

Trace: REQ-6, REQ-12
@avrabe avrabe merged commit 3541352 into main May 30, 2026
12 of 19 checks passed
@avrabe avrabe deleted the release/v1.1.2 branch May 30, 2026 13:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant