Skip to content

Commit 7cc7cdc

Browse files
committed
chore(deps): zwasm pin v2.3.0 -> v2.4.0 (pin hygiene, no behaviour follow)
zwasm v2.4.0 is its external-consumer release: `-Dcompiler-rt` so a static libzwasm.a links from rustc/gcc/clang (zwasm #153/#154, reported by @jtakakura against zwasm-rust-sdk), plus a DCE fix keeping the WasmGC cohort out of sub-3.0 builds (zwasm #150, v1_0 .text -11.6%). Neither reaches cljw, and the ledger says so rather than implying a follow: cljw links zwasm through Zig (`b.lazyDependency`), which supplies its own compiler-rt, and it passes no `-Dwasm` override so it builds at zwasm's default 3.0 — where #150's guard is `if (comptime false)` and the real helper bodies run unchanged. No cljw-side size or output delta is claimed, because none was measured. Verified on the new pin: `zig build -Dwasm`, phase16 wasm e2e (ffi / engine_select / run / component / require_component) 5/5, smoke gate 7 passed / 0 failed. No version bump: v1.5.1 already has ten unreleased commits behind it (ADR-0175/0176 GC work, the build-stdout fix, the CI full-gate change), so cutting a cljw release is a separate decision from this pin.
1 parent 6356faf commit 7cc7cdc

4 files changed

Lines changed: 49 additions & 25 deletions

File tree

‎.dev/handover.md‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
== the local full gate, all e2e), so a red push CI is the immediate
1111
e2e signal, not a next-day nightly. Commit **and** push (atomic
1212
Step 6). `build.zig.zon` `.zwasm` = tag pin
13-
`v2.3.0` (2026-07-17 engine follow, no API change). Latest release:
13+
`v2.4.0` (2026-08-03; zwasm's external-consumer release — nothing in
14+
it reaches cljw, pin hygiene only). Latest release:
1415
**v1.5.1** (2026-07-17; zwasm-pin patch release on top of v1.5.0 =
1516
the ADR-0174 host-class campaign + Thread lifecycle; tap carries
1617
cljw 1.5.1 + zwasm). CHANGELOG is the release-history SSOT.

‎.dev/zwasm_capabilities.md‎

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22

33
> **SSOT for "what does the zwasm we embed offer, and what has cljw adopted".**
44
> cljw embeds **zwasm v2** (F-001, unavoidable). The dep is a **tag pin** —
5-
> **v2.3.0** (see § Pin), pinned 2026-07-17 — the WASI-0.3.0-official
6-
> inventory-sweep release (no embedding-API/JIT-output change); prior v2.2.1
7-
> (2026-07-16) was the binary-size campaign, v2.2.0 (`cf5d20d7`, 2026-07-09)
5+
> **v2.4.0** (see § Pin), pinned 2026-08-03 — the external-consumer release,
6+
> none of which reaches cljw; prior v2.3.0 (2026-07-17) was the
7+
> WASI-0.3.0-official inventory sweep, v2.2.1 (2026-07-16) the binary-size
8+
> campaign, v2.2.0 (`cf5d20d7`, 2026-07-09)
89
> the AOT-full-fidelity release (ADR-0203). zwasm is itself under active
910
> co-development (`~/Documents/MyProducts/zwasm`) and its embedding API is
1011
> *growing* — notably a **JIT-backed
@@ -44,16 +45,24 @@ a cljw-side shim.
4445

4546
## Pin
4647

47-
- **TAG PIN — v2.3.0, pinned 2026-07-17.** `build.zig.zon`
48-
`.zwasm` = `.url = "git+…/zwasm.git#v2.3.0"` + `.hash = "zwasm-2.3.0-FT1Fv8Qh…"`,
49-
resolved from GitHub. The WASI-0.3.0-official inventory-sweep release:
50-
docs truth-sweep vs the officially released WASI 0.3.0 (2026-06-11),
48+
- **TAG PIN — v2.4.0, pinned 2026-08-03.** `build.zig.zon`
49+
`.zwasm` = `.url = "git+…/zwasm.git#v2.4.0"` + `.hash = "zwasm-2.4.0-FT1Fv9E0…"`,
50+
resolved from GitHub. The external-consumer release: `-Dcompiler-rt`
51+
bundles Zig's compiler-rt into `libzwasm.a` for non-Zig linkers
52+
(zwasm #153/#154), and a DCE fix keeps the WasmGC cohort out of
53+
sub-3.0 builds (zwasm #150). **Neither reaches cljw, structurally**:
54+
cljw links zwasm through Zig (`b.lazyDependency`), which supplies its
55+
own compiler-rt, and it passes no `-Dwasm` override so it builds at
56+
zwasm's default `3.0` — where the DCE guard is `if (comptime false)`
57+
and the real helper bodies run unchanged. So this pin is hygiene, not
58+
a behaviour follow; no cljw-side size or output delta is claimed.
59+
Verified: `zig build -Dwasm` + phase16 wasm e2e (ffi / engine_select /
60+
run / component / require_component) all green on the new pin.
61+
Executed under the user's standing tag-watch directive, user-
62+
directed this session. Prior: **v2.3.0** (2026-07-17), the
63+
WASI-0.3.0-official inventory sweep (docs truth-sweep,
5164
`wasi:clocks/system-clock` + `get-resolution` component-host support,
52-
Homebrew packaging (`brew install clojurewasm/tap/zwasm`). NO
53-
embedding-API / behaviour / JIT-output change — a pure engine follow
54-
for cljw (the new surface is component-host-level, which cljw does not
55-
use). Executed under the user's standing tag-watch directive, user-
56-
directed this session. Prior: **v2.2.1** (2026-07-16), the binary-size
65+
Homebrew packaging) — also a pure engine follow. Prior: **v2.2.1** (2026-07-16), the binary-size
5766
campaign (zwasm ADR-0204 / D-522 stage 1: JIT host-callback thunk
5867
collapse, `api.jit_host_bridge` 1,311 KB → 232 KB, zwasm CLI −21%;
5968
measured cljw effect: shipped binary 8,583,352 → **7,499,896 B

‎CHANGELOG.md‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,18 @@ All notable changes to ClojureWasm are documented here. The format follows
55
[SemVer](https://semver.org/). SemVer compatibility guarantees start at the
66
first stable `1.0.0` tag; pre-1.0 `alpha` / `rc` tags may still change surfaces.
77

8+
## [Unreleased]
9+
10+
### Changed
11+
12+
- **zwasm pinned to v2.4.0** (its external-consumer release:
13+
`-Dcompiler-rt` for linking `libzwasm.a` from a non-Zig toolchain, and
14+
a DCE fix that keeps the WasmGC cohort out of sub-3.0 builds). Neither
15+
reaches cljw — cljw links zwasm through Zig, which supplies its own
16+
compiler-rt, and it builds at zwasm's default Wasm 3.0 level where the
17+
DCE guard is inert. Pin hygiene, not a behaviour follow; `-Dwasm`
18+
build + the phase16 wasm e2e suite verified green on the new pin.
19+
820
## [1.5.1] - 2026-07-17
921

1022
Patch release: dependency follow.

‎build.zig.zon‎

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,22 @@
1010
},
1111
// zwasm v2 embedding API (F-001 / D-037). `lazy` so the DEFAULT build +
1212
// gate never resolve it — only `-Dwasm` (b.lazyDependency) does.
13-
// PINNED to STABLE tag **v2.3.0** (2026-07-17): the WASI-0.3.0-official
14-
// inventory-sweep release (docs truth-sweep + wasi:clocks/system-clock
15-
// host support + Homebrew packaging). NO embedding-API or JIT-output
16-
// change — a pure engine follow for cljw (the new surface is
17-
// component-host-level WASI 0.3.0 clocks). Prior v2.2.1 (2026-07-16)
18-
// was the binary-size-campaign release (zwasm ADR-0204 / D-522: JIT
19-
// host-callback thunk collapse, zwasm CLI -21% — to_cljw_06);
20-
// v2.2.0 (2026-07-09) the AOT-full-fidelity release (ADR-0203).
21-
// cljw's embedding surface (Engine/Module/Instance via `.auto`
22-
// =JIT-default, D-488) is unchanged. lazy + flag-guard means a
13+
// PINNED to STABLE tag **v2.4.0** (2026-08-03): the external-consumer
14+
// release — `-Dcompiler-rt` for linking libzwasm.a from a non-Zig
15+
// toolchain, plus a DCE fix keeping the WasmGC cohort out of sub-3.0
16+
// builds. NEITHER reaches cljw: cljw links zwasm through Zig
17+
// (`b.lazyDependency`), which supplies its own compiler-rt, and it
18+
// builds at zwasm's default `-Dwasm=3.0`, so the sub-3.0 DCE fix is
19+
// out of scope. This pin is hygiene — keeping the tag current, not
20+
// chasing a behaviour change. Prior v2.3.0 (2026-07-17) = WASI-0.3.0
21+
// inventory sweep; v2.2.1 (2026-07-16) = binary-size campaign (zwasm
22+
// ADR-0204 / D-522, CLI -21%); v2.2.0 (2026-07-09) = AOT full fidelity
23+
// (ADR-0203). cljw's embedding surface (Engine/Module/Instance via
24+
// `.auto` =JIT-default, D-488) is unchanged. lazy + flag-guard means a
2325
// churning dep cannot break the default gate.
2426
.zwasm = .{
25-
.url = "git+https://github.com/clojurewasm/zwasm.git#v2.3.0",
26-
.hash = "zwasm-2.3.0-FT1Fv8QhjQB0rGBMyCP2GebQU-A4xxuXl-6WF0EXo-ao",
27+
.url = "git+https://github.com/clojurewasm/zwasm.git#v2.4.0",
28+
.hash = "zwasm-2.4.0-FT1Fv9E0jQCqP2Pd8DiSEWZMwqmdl-uPzntoEnBxDlro",
2729
.lazy = true,
2830
},
2931
},

0 commit comments

Comments
 (0)