Skip to content

Commit 7ec4443

Browse files
avrabeclaude
andauthored
chore(release): v0.11.40 — acceptance release: pin sweep + changelog + VCR-RA-001 -> implemented (#328)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
1 parent b53c807 commit 7ec4443

14 files changed

Lines changed: 75 additions & 43 deletions

File tree

CHANGELOG.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,38 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.11.40] - 2026-06-11
11+
12+
**THE ALLOCATOR ACCEPTANCE RELEASE — VCR-RA-001's five criteria are all met,
13+
and gale's k_mutex_unlock lane unblocks (#242, #326).**
14+
15+
- **i64 pair-spill via param frame-backing** (#325): the last acceptance
16+
criterion closes. The true pair-exhaustion blocker was pinned param home
17+
registers (no stack spill can free them); a third retry-ladder rung forces
18+
the proven #204 param frame-backing onto call-free functions, after which
19+
a consecutive pair always exists (pigeonhole over the freed pool). Ladder:
20+
default -> spill-only (#320) -> spill+param-backing, each rung triggered
21+
only by its predecessor's exact error — bit-identity stays structural.
22+
NEW high-pressure-i64 lane: hard Err on v0.11.39 -> 6/6 vs wasmtime.
23+
- **Arg-move cycles via the parallel-move resolver** (#327, gale #326): the
24+
call-marshal cycle-breaker no longer demands a callee-saved register —
25+
VCR-RA-004's resolver (v0.11.38) breaks cycles via a stack-scratch cell
26+
when registers are saturated. This unblocks the dissolved k_mutex_unlock
27+
(gale's exact error reproduced on main by the committed mutex_pressure
28+
lane; 7/7 vs wasmtime on the fix) AND killed a latent wrong-code bug: the
29+
old cycle-breaker miscompiled genuine 2-swaps (duplicated a value).
30+
- **VCR-RA-001 status: implemented.** All five criteria verified: no
31+
hard-fail on high-pressure i32 AND i64 modules; fixtures bit-identical
32+
through six releases; cycles equal-or-better on the G474RE (gale); the
33+
v0.11.20 cost-gate revert EXECUTED (#322); the backward-dataflow validator
34+
guarding every re-allocated segment (#323). Honest bounds: the 8-slot
35+
spill pool, stack-passed params, the R8-pair/i64-param class (tracked).
36+
37+
Falsification: wrong if gale's mutex lane fails on silicon (native ref 124),
38+
any previously-compiling module's bytes change, or any pressure lane
39+
disagrees with wasmtime.
40+
41+
1042
## [0.11.39] - 2026-06-11
1143

1244
**The assurance carrier: a backward-dataflow translation validator now guards

Cargo.lock

Lines changed: 17 additions & 17 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ resolver = "2"
2727
# semver to publish, so the convention now catches up: workspace
2828
# version follows the release tag, bumped pre-tag in the release
2929
# checklist. See docs/release-process.md.
30-
version = "0.11.39"
30+
version = "0.11.40"
3131
edition = "2024"
3232
rust-version = "1.88"
3333
authors = ["PulseEngine Team"]

MODULE.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ module(
77
name = "synth",
88
# Kept in lockstep with [workspace.package] version in Cargo.toml.
99
# Both are bumped pre-tag — see docs/release-process.md.
10-
version = "0.11.39",
10+
version = "0.11.40",
1111
)
1212

1313
# Bazel dependencies

artifacts/verified-codegen-roadmap.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ artifacts:
143143
shortcuts be reverted toward the clean form. Must keep the reserved-reg
144144
architecture (R9 globals / R11 mem-base / R12 IP-scratch) and the
145145
bounds-mode R10 invariant.
146-
status: proposed
146+
status: implemented
147147
tags: [codegen, register-allocation, ssa, regalloc2, track-a, release-v0.11.40]
148148
links:
149149
- type: derives-from

crates/synth-backend-awsm/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ categories.workspace = true
1111
description = "aWsm backend integration for the Synth compiler"
1212

1313
[dependencies]
14-
synth-core = { path = "../synth-core", version = "0.11.39" }
14+
synth-core = { path = "../synth-core", version = "0.11.40" }
1515
anyhow.workspace = true
1616
thiserror.workspace = true

crates/synth-backend-riscv/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ categories.workspace = true
1111
description = "RISC-V encoder, ELF builder, PMP allocator, and bare-metal startup for synth"
1212

1313
[dependencies]
14-
synth-core = { path = "../synth-core", version = "0.11.39" }
15-
synth-synthesis = { path = "../synth-synthesis", version = "0.11.39" }
14+
synth-core = { path = "../synth-core", version = "0.11.40" }
15+
synth-synthesis = { path = "../synth-synthesis", version = "0.11.40" }
1616
anyhow.workspace = true
1717
thiserror.workspace = true
1818
tracing.workspace = true

crates/synth-backend-wasker/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ categories.workspace = true
1111
description = "Wasker backend integration for the Synth compiler"
1212

1313
[dependencies]
14-
synth-core = { path = "../synth-core", version = "0.11.39" }
14+
synth-core = { path = "../synth-core", version = "0.11.40" }
1515
anyhow.workspace = true
1616
thiserror.workspace = true

crates/synth-backend/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ default = ["arm-cortex-m"]
1515
arm-cortex-m = ["synth-synthesis"]
1616

1717
[dependencies]
18-
synth-core = { path = "../synth-core", version = "0.11.39" }
19-
synth-synthesis = { path = "../synth-synthesis", version = "0.11.39", optional = true }
18+
synth-core = { path = "../synth-core", version = "0.11.40" }
19+
synth-synthesis = { path = "../synth-synthesis", version = "0.11.40", optional = true }
2020
anyhow.workspace = true
2121
thiserror.workspace = true

crates/synth-cli/Cargo.toml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,18 @@ verify = ["synth-verify"]
2727
# Path deps carry `version` so `cargo publish` rewrites them to the
2828
# crates.io coordinate. Bumping the workspace version requires
2929
# updating these in lockstep — see docs/release-process.md.
30-
synth-core = { path = "../synth-core", version = "0.11.39" }
31-
synth-frontend = { path = "../synth-frontend", version = "0.11.39" }
32-
synth-synthesis = { path = "../synth-synthesis", version = "0.11.39" }
33-
synth-backend = { path = "../synth-backend", version = "0.11.39" }
30+
synth-core = { path = "../synth-core", version = "0.11.40" }
31+
synth-frontend = { path = "../synth-frontend", version = "0.11.40" }
32+
synth-synthesis = { path = "../synth-synthesis", version = "0.11.40" }
33+
synth-backend = { path = "../synth-backend", version = "0.11.40" }
3434

3535
# Optional external backends
36-
synth-backend-awsm = { path = "../synth-backend-awsm", version = "0.11.39", optional = true }
37-
synth-backend-wasker = { path = "../synth-backend-wasker", version = "0.11.39", optional = true }
38-
synth-backend-riscv = { path = "../synth-backend-riscv", version = "0.11.39", optional = true }
36+
synth-backend-awsm = { path = "../synth-backend-awsm", version = "0.11.40", optional = true }
37+
synth-backend-wasker = { path = "../synth-backend-wasker", version = "0.11.40", optional = true }
38+
synth-backend-riscv = { path = "../synth-backend-riscv", version = "0.11.40", optional = true }
3939

4040
# Optional verification (requires z3)
41-
synth-verify = { path = "../synth-verify", version = "0.11.39", optional = true, features = ["z3-solver", "arm"] }
41+
synth-verify = { path = "../synth-verify", version = "0.11.40", optional = true, features = ["z3-solver", "arm"] }
4242

4343
# Optional PulseEngine WASM optimizer
4444
# Uncomment when loom crate is available:

0 commit comments

Comments
 (0)