Skip to content

synth v0.59.0

Choose a tag to compare

@github-actions github-actions released this 26 Aug 14:33
· 165 commits to main since this release
b3b5540

What's Changed

  • fix(ci): rustc 1.98.0 added clippy::chunks_exact_to_as_chunks — sweep all 15 sites by @avrabe in #1014
  • plan(v0.59): "REACH" — the colourer is sound everywhere it fires, make it fire by @avrabe in #1011
  • RQ-59-WARALIAS (#989): ARM local.set/tee WAR aliasing — snapshot home-register aliases; optimized-path WAR + dropped-param-store declines (red-first) by @avrabe in #1015
  • plan(v0.59): correct RQ-59-REACH — increment 4 already landed, and the top bucket is not a reach failure by @avrabe in #1018
  • chore(deps): bump wasmparser from 0.255.0 to 0.256.0 by @dependabot[bot] in #998
  • plan(v0.59): add RQ-59-A64PANIC (#1013) and RQ-59-PARTIALCENSUS (#1017) from the 805-module corpus by @avrabe in #1019
  • RQ-59-ZEROINIT (#990): a local written on one arm of a br_if now reads the wasm-mandated 0 — domination-precise zero-init classification, ARM + RV32 by @avrabe in #1016
  • chore(rivet): RQ-59-WARALIAS and RQ-59-ZEROINIT are implemented by @avrabe in #1020
  • RQ-59-MINORHOLD (#965): enforce the 0.x-minor dependency hold — disable-and-assert, fail-closed tested classifier by @avrabe in #1022
  • RQ-59-REACH (#242): census verdict — do NOT widen the op model; unmodeled-op is a long tail, the named blocker is a missing RMW tie (Movt/SelectMove) by @avrabe in #1023
  • chore(rivet): RQ-59-MINORHOLD and RQ-59-REACH are implemented by @avrabe in #1024
  • RQ-59-MEASURE (#242): increment-4 verdict — DO NOT FLIP: colourer wins on net (-122 B / -36 cyc / -31 insns) but does not dominate (7 grew, one shared ldr.w mechanism) by @avrabe in #1025
  • RQ-59-WCETI64 (#936): price the residual four — I32WrapI64, I64ExtendI32S/U, I64Sub — from the real encoder's own bytes by @avrabe in #1026
  • chore(rivet): RQ-59-MEASURE and RQ-59-WCETI64 are implemented by @avrabe in #1027
  • RQ-59-FRESHNESS (#977): all 48 named stale-artifact sites converted — freshness coverage 7/58 -> 58/58 by @avrabe in #1028
  • RQ-59-SUBTRACT (#242): increment 6 — six Rocq-proved rules (74 -> 80), every superseded arm DELETED; selector 18,291 -> 18,278, wildcards 56 -> 55 by @avrabe in #1029
  • plan(v0.59): add RQ-59-POPCNT (#1021) and RQ-59-TIERCENSUS — a proof sitting above a defective expansion by @avrabe in #1030
  • RQ-59-CRSWEEP (#242): 11 critical/high findings verified — 10 stale, 1 CONFIRMED REAL and executing (#1021) by @avrabe in #1031
  • chore(deps): bump wat from 1.256.0 to 1.257.1 by @dependabot[bot] in #1034
  • chore(deps): bump taiki-e/install-action from 2.86.1 to 2.86.5 by @dependabot[bot] in #1038
  • chore(deps): bump wit-parser from 0.256.0 to 0.257.1 by @dependabot[bot] in #1032
  • chore(deps): bump ordeal from 0.18.0 to 0.19.0 by @dependabot[bot] in #1033
  • chore(deps): bump wast from 256.0.0 to 257.0.1 by @dependabot[bot] in #1035
  • chore(deps): bump pulseengine/rivet from 0.32.0 to 0.34.0 by @dependabot[bot] in #1037
  • RQ-59-POPCNT (#1021): i32.popcnt clobbered R11, the linear-memory base — R12-only rework, both backends, execution-differential gated by @avrabe in #1039
  • plan(v0.60): extend the North Star — derive what you check against, and reach is part of correctness by @avrabe in #1042
  • chore(rivet): RQ-59-CRSWEEP is implemented (#1031 merged) by @avrabe in #1044
  • RQ-59-A64PANIC (#1013): aarch64 ELF builder refuses cleanly (exit 1 + reason naming the declined symbol) instead of panicking by @avrabe in #1045
  • RQ-59-TIERCENSUS (#1021): 52 of 80 proved rules sit above an encoder expansion — unguarded clobber set is {Popcnt/R11 (#1021, fix #1039 pending)} + {i64 shifts' amount clobber (#1048, NEW, execution-confirmed)} by @avrabe in #1047
  • RQ-59-DATASEG (#1041): ARM relocatable path REFUSES active data segments it does not materialize — silent drop becomes a loud decline by @avrabe in #1049
  • RQ-59-STARTFN (#1046): the (start ...) section was silently discarded by ALL THREE backends — decode it and refuse loudly; fourth silent drop (globals inits, #1052) found and filed by @avrabe in #1053
  • plan(v0.59): POPCNT implemented; scope RQ-59-I64SHIFT (#1048) and RQ-59-STARTFN (#1046) by @avrabe in #1050
  • RQ-59-I64SHIFT (#1048): i64 shift/bit-count expansions destroyed their own operands — R12-only rewrite on both backends, operand-preservation now checker-visible by @avrabe in #1054
  • fix(rivet): repair federated resolution poisoned by dead path: entries — triage the 12 hidden dangling refs, commit rivet.lock, add advisory federated CI gate (#1012) by @avrabe in #1060
  • docs: state the compliance envelope, and write the trap-preservation rule down while it is free by @avrabe in #1043
  • plan(v0.59): scope RQ-59-GLOBALINIT (#1052) — the fourth silent drop by @avrabe in #1056
  • VCR-TIER-001 increment 1: canary gate over pseudo-op encoder expansions by @avrabe in #1061
  • RQ-59-GLOBALINIT (#1052): ARM relocatable path REFUSES global initializers it does not materialize — the fourth silent drop, plus teeth for the harness that was green over it by @avrabe in #1058
  • RQ-59-PARTIALCENSUS (#1017): census over the full decline set — 89% skip-only, but the median blocked module loses a quarter of its functions, not one by @avrabe in #1051
  • fix(rivet): release-v0.59.yaml was invisible to the graph — schema, the 8 links it hid, and a load floor (#1064) by @avrabe in #1065
  • docs(changelog): the v0.59 [Unreleased] entry, written from merged code — and the selector GREW +327 by @avrabe in #1066
  • chore(release): workspace version pin sweep 0.58.0 -> 0.59.0 (pre-tag) by @avrabe in #1067
  • docs(changelog): cut [Unreleased] to [0.59.0] - 2026-08-26 (final pre-tag) by @avrabe in #1068

Full Changelog: v0.58.0...v0.59.0