Releases: pulseengine/synth
Release list
synth v0.18.0
What's Changed
- fix(vcr-ra): const-CSE size-regression guard — CSE-last + per-segment size guard (#242) by @avrabe in #519
- docs(rivet): VCR-DEC-003 — settle synth-provenance-v1 contract for witness MC/DC reconciliation (#396) by @avrabe in #520
- docs(rivet): VCR-DEC-003 — resolve witness provenance offset-domain (#396) by @avrabe in #521
- test(vcr-ra): non-vacuous --relocatable gate for const-CSE — proves it fires + stays correct on gale's path (#242) by @avrabe in #522
- chore(vcr-mem): re-validate scry consumed surface against scry-sai-core 2.3.0 (#383, #242) by @avrabe in #523
- docs(vcr): correct #503 falcon result — gale-verified 0 of 3, not 2 of 3 (#503, #242) by @avrabe in #524
- test(vcr-oracle): #518 oracle-first — characterize i64-param miscompile on both selectors (#242) by @avrabe in #525
- test(vcr-oracle): broaden #518 oracle to the full AAPCS i64-param matrix (#242) by @avrabe in #526
- test(vcr-mem): pin scry 2.5.0 FEAT-039 open-world reachability soundness (#383, #242) by @avrabe in #527
- test(vcr-oracle): pin #518 cross-backend contrast — RV32 loud-skips vs ARM silent miscompile (#242) by @avrabe in #528
- test(vcr-oracle): #509 oracle-first — value-returning-branch drop on the shipped path (#242) by @avrabe in #529
- chore(ci): pin rivet v0.22.0 (release-handling) + document the readiness gate (#516) by @avrabe in #530
- chore(deps): bump anyhow from 1.0.102 to 1.0.103 by @dependabot[bot] in #536
- fix(arm): home i64 params per AAPCS register-pairs — close #518 silent miscompile (#242) by @avrabe in #531
- chore(release): v0.18.0 — i64-param AAPCS homing (#518) by @avrabe in #537
Full Changelog: v0.17.0...v0.18.0
synth v0.17.0
What's Changed
- chore(deps): bump scry-sai-core dev-dep to 2.0 (SCPV v3) by @avrabe in #506
- fix(arm): optimized path declines br_table to the direct selector (#507, #242) by @avrabe in #508
- docs(vcr): record optimizer_bridge/selector frontier second arc + #509 negative result (#242) by @avrabe in #510
- test(vcr-oracle): estimator↔encoder agreement oracle for the optimized path (#498, #242) by @avrabe in #511
- test(optimizer-bridge): delegate count_arm_byte_size to the production estimator (#511 follow-on, #242) by @avrabe in #512
- test(vcr-ra): reg_effect ↔ rewrite_op def/use consistency oracle (#242) by @avrabe in #513
- feat(vcr-ra): optimized-path const-CSE behind SYNTH_CONST_CSE (flag-off) (#242) by @avrabe in #514
- feat(vcr-ra): frame-slot dead-store elimination behind SYNTH_STACK_FWD (flag-off) (#242) by @avrabe in #515
- feat(vcr-ra): flip stack-reload-forwarding + frame-slot DCE to default-on (#242) by @avrabe in #516
- chore(release): v0.17.0 — stack-fwd + frame-slot DCE default-on (#242) by @avrabe in #517
Full Changelog: v0.16.0...v0.17.0
synth v0.16.0
What's Changed
- perf(vcr-ra): scope #468 redundant memory-base materialization (spike) by @avrabe in #469
- perf(vcr-ra): scope VCR-RA-002 leaf prologue shrink (spike) by @avrabe in #471
- docs(vcr-ra): resolve #470 — optimized-path ABI model is non-AAPCS by design by @avrabe in #473
- fix(vcr-ra): local promotion must never cause a compile failure (#474) by @avrabe in #475
- docs(vcr-ra): map the register-exhaustion recovery ladder (#242) by @avrabe in #476
- feat(vcr-ra): per-rung recovery-stats counter + measured ladder map (#242) by @avrabe in #478
- chore(release): v0.15.1 — bug-fix: local promotion never causes a compile failure (#474) by @avrabe in #477
- test(vcr-ra): shadow allocator vs recovery ladder — spurious vs genuine spill (#242) by @avrabe in #479
- feat(vcr-ra): uxth/uxtb mask fold, flag-off (#428, #242) by @avrabe in #480
- feat(vcr-ra): dead-frame elimination for promoted-local leaves, flag-off (#390, #242) by @avrabe in #481
- feat(vcr-ra): base-CSE — hoist linear-memory base once per field-init, flag-off (#468, #242) by @avrabe in #482
- docs(vcr-ra): RISC-V lever-parity scoping spike — map ARM perf levers to RV32 (#472, #242) by @avrabe in #484
- test(vcr-ra): RV32 lever baselines — pin pre-lever codegen for #472 levers (#472, #242) by @avrabe in #485
- docs(vcr): log RV32 lever-baseline + scoping slice in the roadmap (#472, #242) by @avrabe in #486
- feat(vcr-ra): RV32 immediate-shift-fold — const shift amount into slli/srli/srai, flag-off (#472, #242) by @avrabe in #487
- docs(vcr): log the driver-class non-leaf thin-forwarder prologue frontier (#428, #242) by @avrabe in #488
- ci(vcr-oracle): CI-gate the RV32 immediate-shift-fold execution oracle (#472, #242) by @avrabe in #489
- feat(vcr-ra): RV32 const-address-fold — fold constant addr into the access immediate off s11, flag-off (#472, #242) by @avrabe in #491
- fix(ci): exclude synth-verify from the Test job to stop z3 disk exhaustion (#306) by @avrabe in #493
- docs(vcr): record that #490 blocks the non-leaf prologue lever (#428, #490, #242) by @avrabe in #492
- fix(vcr-ra): optimized path preserves callee-saved r4-r8 — AAPCS prologue (#490, #242) by @avrabe in #495
- fix(optimizer): optimized-path block/br_if branch lands mid-instruction (#483, #242) by @avrabe in #497
- docs(vcr): record landed optimized-path fixes + the optimizer_bridge control-flow frontier (#242) by @avrabe in #501
- fix(optimizer): optimized path declines to direct on R4-R8 exhaustion (#496, #242) by @avrabe in #502
- fix(arm): lower functions needing the AAPCS stack-arg path with >8 scalar params/args (#503, #242) by @avrabe in #504
- chore(release): v0.16.0 — AAPCS stack-arg path lowers >8 scalar params/args (#503) by @avrabe in #505
Full Changelog: v0.15.0...v0.16.0
synth v0.15.1
What's Changed
- perf(vcr-ra): scope #468 redundant memory-base materialization (spike) by @avrabe in #469
- perf(vcr-ra): scope VCR-RA-002 leaf prologue shrink (spike) by @avrabe in #471
- docs(vcr-ra): resolve #470 — optimized-path ABI model is non-AAPCS by design by @avrabe in #473
- fix(vcr-ra): local promotion must never cause a compile failure (#474) by @avrabe in #475
- docs(vcr-ra): map the register-exhaustion recovery ladder (#242) by @avrabe in #476
Full Changelog: v0.15.0...v0.15.1
synth v0.15.0
What's Changed
- feat(vcr-ra): immediate-shift folding peephole, flag-off (#390, #242) by @avrabe in #463
- ci: pin rivet-cli to v0.19.0 + version-key its cache (#242 release cadence) by @avrabe in #464
- fix(deps): align the wasm-tools crate family to the 252 release (#465) by @avrabe in #466
- feat(vcr-ra): ship immediate-shift folding default-on — v0.15.0 (#390, #242) by @avrabe in #467
Full Changelog: v0.14.0...v0.15.0
synth v0.14.0
What's Changed
- feat(perf): redundant stack-reload elimination — lever 1 toward native parity (#390, #242) by @avrabe in #455
- chore(deps): bump actions/checkout from 6 to 7 by @dependabot[bot] in #431
- chore(deps): bump wat from 1.244.0 to 1.252.0 by @dependabot[bot] in #437
- feat(vcr-ra): i32 local promotion to callee-saved registers — flag-off v1 (#390, #242) by @avrabe in #458
- chore(deps): bump wasmparser from 0.248.0 to 0.252.0 by @dependabot[bot] in #434
- docs(vcr-ra): local-promotion scoping spike — cost + de-risk the parity lever (#390, #242) by @avrabe in #456
- test(vcr-ra): probe reallocator preserves cross-call callee-saved values (#390, #242) by @avrabe in #459
- docs(vcr-ra): close the leaf-only-lift end-to-end gap empirically (#390, #242) by @avrabe in #460
- test(vcr-sel): widen cross-backend op-parity oracle to the full integer core (#242) by @avrabe in #461
- feat(vcr-ra): ship i32 local promotion default-on — v0.14.0 (#390, #242) by @avrabe in #462
Full Changelog: v0.13.0...v0.14.0
synth v0.13.0
What's Changed
- test(vcr-perf): CI-gate the Pass-1 spill-pressure baseline (VCR-PERF-001, #390, #242) by @avrabe in #441
- docs(vcr-perf): record gale #428 v0.12.0 gust_mix re-measurement — cmp→select is #1 (#242) by @avrabe in #442
- test(dwarf): lock the --debug-line honest-fail contract on self-contained builds (VCR-DBG-001, #394, #242) by @avrabe in #443
- feat(vcr-sel): cmp→select → IT-block predication fusion, flag-off (VCR-SEL-004, #242, #428) by @avrabe in #444
- test(vcr-oracle): frozen-codegen .text byte gate in cargo CI (VCR-ORACLE-001, #242) by @avrabe in #445
- test(vcr-oracle): extend frozen-codegen byte gate to RV32 (VCR-ORACLE-001, #242) by @avrabe in #446
- docs(vcr-mem): cite meld v0.34.0 ADR-4 — multi-memory commitment shipped upstream (VCR-MEM-002, #242, #406) by @avrabe in #447
- test(vcr-sel): characterize the two-move arm as unreachable — root-cause gale's clamp-#2 decline (VCR-SEL-004, #428, #242) by @avrabe in #448
- feat(vcr-sel): reg_dead_by_redef recognizes the return terminator — two-move arm reachable (VCR-SEL-004 #7, #428, #242) by @avrabe in #449
- test(vcr-sel): cmp→select fusion census — blast-radius datum for the flip (VCR-SEL-004, #428, #242) by @avrabe in #450
- docs(vcr-sel): record fusion census in VCR-SEL-004 — refines the flip criteria (#242, #428) by @avrabe in #451
- test(vcr-oracle): execution-validate the cmp→select two-move arm in CI (VCR-ORACLE-001, #428, #242) by @avrabe in #452
- docs(vcr-oracle): record execution-differential slice + correct the qemu assumption (VCR-ORACLE-001, #242, #452) by @avrabe in #453
- feat(vcr-sel): ship cmp→select fusion default-on — v0.13.0 (VCR-SEL-004, #428, #242) by @avrabe in #454
Full Changelog: v0.12.0...v0.13.0
synth v0.12.0
What's Changed
- docs(changelog): correct v0.11.51 shrink confirmation scope — qemu-8KB, not on-silicon (#383) by @avrabe in #419
- test(dissolve): lock cabi-arena-realloc → __cabi_arena_realloc linkability (#418) by @avrabe in #420
- feat(vcr-mem): layer-2 shadow-stack budget decision logic, frozen-safe (#242, #383) by @avrabe in #421
- build(bazel): migrate crate_universe from_specs → from_cargo (#242) by @avrabe in #422
- test(vcr-mem): layer-2 end-to-end budget pipeline on real gust fixture (#242, #383) by @avrabe in #423
- test(vcr-mem): layer-2 cross-check on gust_kernel's flashed silicon budget (#242, #383) by @avrabe in #424
- test(vcr-mem): layer-2 honest-fail safety oracle — unbounded recursion refuses a proven budget (#242, #383) by @avrabe in #425
- feat(dwarf): capture per-instruction machine-offset → wasm-op source map (VCR-DBG-001, #242) by @avrabe in #427
- feat(dwarf): emit DWARF debug sections behind --debug-line (VCR-DBG-001, #242, #394) by @avrabe in #429
- chore(deps): bump scry-sai-core from 1.12.0 to 1.17.0 by @dependabot[bot] in #432
- chore(deps): bump pulseengine/rivet from 0.16.1 to 0.17.0 by @dependabot[bot] in #433
- chore(deps): bump wasm-encoder from 0.244.0 to 0.248.0 by @dependabot[bot] in #435
- chore(deps): bump gimli from 0.31.1 to 0.33.0 by @dependabot[bot] in #436
- chore(deps): bump wast from 248.0.0 to 252.0.0 by @dependabot[bot] in #438
- feat(dwarf): emit .rel.debug_* so a linker fixes up DWARF .text addresses (VCR-DBG-001 PR C, #394) by @avrabe in #430
- fix(dwarf): adapt LineProgram::new to gimli 0.33 6-arg signature (#436 fallout) by @avrabe in #439
- chore(release): v0.12.0 — DWARF source-line debugging (VCR-DBG-001, #242) by @avrabe in #440
Full Changelog: v0.11.51...v0.12.0
synth v0.11.51
Headline — VCR-MEM-001 layer-1 native-pointer shadow-stack shrink (#383)
--shadow-stack-size B is now active: under --native-pointer-abi it re-bases the shadow-stack top to B and shrinks the .bss reservation, unblocking large-memory modules on small-RAM targets. gale 's gust kernel dissolves to .bss 4240 (was ~1 MiB) and links into 8 KB.
Confirmation scope: qemu + 8 KB-constrained link (cortex-m3 lm3s6965evb): links into 8 KB (~4.8 KB used), boots, runs 5000 poll rounds with correct values. Physical STM32F100 reflash pending hardware — not literal-silicon-confirmed (gale #383). Opt-in / default-off.
Plus: cross-backend op-parity oracle (#387), register-polymorphic i32 pilot (#386), scry regalloc/stack-depth substrate, frozen-safe DWARF Tier-1 read→compose→emit logic (toward v0.12.0), and VCR traceability.
What's Changed
- feat(vcr-sel): register-polymorphic i32 lowering pilot — first VCR-SEL-001 measurement (#242) by @avrabe in #386
- feat(vcr-sel): cross-backend op-parity oracle — gate RV32-vs-ARM op-gaps (VCR-SEL-005, #242) by @avrabe in #387
- #383: --shadow-stack-size flag + VCR-MEM-001 design (honest-Err scaffold; retarget held for silicon) by @avrabe in #388
- docs(roadmap): #383 layer-2 unblocked by scry v1.11 (spike: msgq stack=32B vs 65536 reserved) by @avrabe in #389
- docs(roadmap): VCR-PERF-001 — gust 3.9× size gap, per-pass attribution (gale #390) by @avrabe in #391
- feat(vcr-mem): #383 layer-2 substrate — scry shadow-stack-depth proof verified in-tree (scry-sai-core v1.12) by @avrabe in #392
- docs(roadmap): VCR-RA-010 — scry-for-regalloc API-fitness check (spike: flight_seam 44/70 const locals) by @avrabe in #393
- docs(roadmap): source-to-object provenance spine — DWARF (#394) + MC/DC traceability (#396) by @avrabe in #395
- test(vcr-ra): lock scry's const-remat signal in-tree (VCR-RA-010 path-A substrate, #242) by @avrabe in #397
- docs(roadmap): VCR-DBG-001 → approved — DWARF Tier-1 feature-loop plan for v0.12.0 (first North-Star feature) by @avrabe in #398
- feat(dwarf): step 1 — decoder records per-op wasm byte offset (VCR-DBG-001, #394) by @avrabe in #399
- docs(rivet): wire scry cross-repo traceability — SCRY-001/REQ-011 + FEAT-023/REQ-012 by @avrabe in #400
- docs(roadmap): in-tree Pass-1 spill baseline — frozen-safe #390 reproduction (VCR-PERF-001, #242) by @avrabe in #402
- test(dwarf): step 2 — read input wasm .debug_line into (offset→line) rows (VCR-DBG-001, #394, #242) by @avrabe in #403
- docs(dwarf): step-3 de-risk — op_offsets vs DWARF address-space mismatch (VCR-DBG-001, #394, #242) by @avrabe in #405
- docs(roadmap): VCR-MEM-002 — multi-memory structural isolation lowering (#406, meld#300, #242) by @avrabe in #407
- docs(mem): VCR-MEM-001 layer-1 inputs in-hand — gust fixture + verified stack-first geometry (#383, #242) by @avrabe in #408
- feat(mem): VCR-MEM-001 layer-1 — native-pointer shadow-stack reservation shrink (#383, #242) by @avrabe in #409
- docs(rivet): close the requirement→test V for 5 implemented VCR features (#242) by @avrabe in #410
- docs(rivet): complete the native-pointer ABI verification cluster (#354/#359, #242) by @avrabe in #411
- docs(dwarf): step-3 fixture-acquisition finding — rustc/clang paths ruled out (VCR-DBG-001, #242) by @avrabe in #412
- test(dwarf): coherent-DWARF fixture unblocks step-3 (VCR-DBG-001, #242) by @avrabe in #413
- feat(dwarf): step-3 compose — op-index → source-line join (VCR-DBG-001, #242) by @avrabe in #414
- test(dwarf): step-4 emit-logic spike — read→compose→emit→read round-trips (VCR-DBG-001, #242) by @avrabe in #415
- docs(rivet): keep the DWARF verification artifact current with steps 1-4 (VCR-DBG-001, #242) by @avrabe in #416
- chore(release): v0.11.51 — VCR-MEM-001 shadow-stack shrink (#383) by @avrabe in #417
Full Changelog: v0.11.50...v0.11.51
synth v0.11.50
What's Changed
- fix(#378): fail honestly on out-of-layout local — never guess a frame offset by @avrabe in #379
- fix: encode_operand2 fails honestly on un-encodable ARM32 immediate (never mask) by @avrabe in #381
- fix(#382): materialize large static load/store offset (> imm12) — never skip the function by @avrabe in #384
- chore(release): v0.11.50 — #382 large load/store offset + #378/#381 honesty + GI-MEM-002→verified by @avrabe in #385
Full Changelog: v0.11.49...v0.11.50