Skip to content

Commit d0f26ac

Browse files
committed
chore(deps): bump zwasm pin v2.0.0 -> v2.1.0 (table64-JIT)
Smell-audited: 0: mechanical dep pin bump + ledger/handover sync; no smell. zwasm v2.1.0 (d5d685ad) lands native table64 (i64-indexed table) JIT compilation (zwasm D-475) + table64 elem-segment / instantiate-bounds hardening. cljw declares no tables in its host or FFI fixtures, so it is behaviorally unaffected — a clean engine follow keeping the embedded runtime current toward the gap-II×III north star. build.zig.zon .zwasm re-pinned (tag URL + hash zwasm-2.1.0-FT1Fv7J...); -Dwasm ReleaseSafe build resolves + compiles; smoke green (phase16_wasm_engine_select, 7 pass / corpus 3888/3888). zwasm_capabilities.md ledger refreshed (header / Pin / capability table table64 row / 2026-07-06 history).
1 parent 2c83eb5 commit d0f26ac

3 files changed

Lines changed: 29 additions & 16 deletions

File tree

‎.dev/handover.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
## Resume contract
77

88
- **HEAD**: `main` (`git log` = SSOT; tip ≈ `4a51ed2c`). Per-commit = smoke; commit
9-
**and** push (atomic Step 6). `build.zig.zon` `.zwasm` = stable tag pin `v2.0.0` (cljw 1.0.0).
9+
**and** push (atomic Step 6). `build.zig.zon` `.zwasm` = tag pin `v2.1.0` (table64-JIT; bumped from v2.0.0).
1010
- **1.0.0 RELEASED (2026-07-01).** cljw `v1.0.0` tagged + pushed (commit a6db5dd6);
1111
release.yml published the GitHub Release (macos-aarch64 + linux-x86_64 binaries +
1212
sha256). Pins the coherent stable **zwasm v2.0.0** (D-543 resolved; the D-501 no-max

‎.dev/zwasm_capabilities.md‎

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
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.0.0** (`0853f3c1`, see § Pin), pinned 2026-07-01 — the stable release cljw
6-
> 1.0.0 ships on (bumped from alpha.3 for the D-501 no-max-table grow fix). zwasm is itself under active
5+
> **v2.1.0** (`d5d685ad`, see § Pin), pinned 2026-07-06 — the table64-JIT release
6+
> (bumped from stable v2.0.0 for zwasm D-475 native table64 JIT). zwasm is itself under active
77
> co-development (`~/Documents/MyProducts/zwasm_from_scratch`, branch
88
> `zwasm-from-scratch`) and its embedding API is *growing* — notably a **JIT-backed
99
> engine** (the cljw north star, ROADMAP §9.0 gap area II × III). cljw has **adopted
@@ -42,10 +42,12 @@ a cljw-side shim.
4242

4343
## Pin
4444

45-
- **TAG PIN — STABLE v2.0.0 (`0853f3c1`), pinned 2026-07-01.** `build.zig.zon`
46-
`.zwasm` = `.url = "git+…/zwasm.git#v2.0.0"` + `.hash = "zwasm-2.0.0-FT1Fvyv…"`,
47-
resolved from GitHub. Bumped from v2.0.0-alpha.3 for the coherent cljw 1.0.0 release
48-
(picks up the no-max-table `table.grow` JIT fix, zwasm D-501 tier-1). This replaced the
45+
- **TAG PIN — v2.1.0 (`d5d685ad`), pinned 2026-07-06.** `build.zig.zon`
46+
`.zwasm` = `.url = "git+…/zwasm.git#v2.1.0"` + `.hash = "zwasm-2.1.0-FT1Fv7J…"`,
47+
resolved from GitHub. Bumped from stable v2.0.0 for zwasm D-475 (native table64 JIT
48+
compilation) + table64 elem-segment / instantiate-bounds hardening; cljw uses no
49+
tables, so behaviorally unaffected. Prior stable pin was **v2.0.0** (`0853f3c1`,
50+
2026-07-01, the cljw 1.0.0 release engine). This replaced the
4951
2026-06-21 relative-path JIT-adoption experiment (`.path = "../zwasm_from_scratch"`,
5052
no-push) once zwasm cut the pinnable tag (3-host green) — so the no-push mode is
5153
LIFTED and cljw pushes `main` again. v2.0.0 is a full stable GitHub Release
@@ -71,6 +73,7 @@ a cljw-side shim.
7173
| Components on JIT | interp-pinned (D-500, zwasm CM-API core); Win64 string-arg wrapper-thunk gap | YES (tag-pin) | unaffected — `.auto` default leaves components on interp (zwasm-side pin) | D-500, D-404 |
7274
| WIT component marshalling | future | NO | NOT adopted | D-404 |
7375
| no-max table `table.grow` (JIT) | tier-1 FIXED in v2.0.0 (D-501) — grows to a synth cap `max(min*2, 1024)`; unbounded no-max grow still interp-only | YES (pin) | unaffected (no `table.grow` / table decl in cljw host or FFI fixtures); available if a guest needs it | D-501 |
76+
| table64 (i64-indexed tables) on JIT | NEW in v2.1.0 (D-475) — table64 ops / `call_indirect` / elem segments compile natively (u64 index width, wrap-safe bounds); i32 tables keep the fast path | YES (pin) | unaffected (cljw declares no tables); a table64 guest now rides the JIT instead of the interp fallback | zwasm D-475 |
7477

7578
## Forward plan — the JIT adoption unit (gap area II × III) — ACTIVE
7679

@@ -151,3 +154,12 @@ was the `.auto`-default flip; this ledger tracks adoption status per capability.
151154
confirmed the embedding API (`Engine.init` / `runWasmCapturedFull` / `wasi.host.Host` /
152155
`Module.InstantiateOpts`) is signature-stable. Resolves the D-543 "1.0.0 embeds a
153156
pre-1.0 zwasm" incoherent-pin story — cljw 1.0.0 now ships on a coherent stable zwasm v2.0.0.
157+
- **2026-07-06** — **PIN BUMP STABLE v2.0.0 → v2.1.0 (`d5d685ad`)**. zwasm cut a
158+
`v2.1.0` release (table64-JIT): D-475 lands native JIT compilation of table64
159+
(i64-indexed tables — the memory64 proposal's table extension), so table64 ops /
160+
`call_indirect` / active elem segments no longer fall back to the interpreter, plus
161+
instantiate-time 64-bit bounds hardening + an AOT loud-reject for oversized table64
162+
minimums. cljw declares no tables in its host or FFI fixtures, so it is behaviorally
163+
unaffected — a clean engine follow, not a required fix. Bumped to keep the embedded
164+
engine current toward the gap-II×III north star; `build.zig.zon` `.zwasm` re-pinned
165+
(tag URL + hash), smoke green.

‎build.zig.zon‎

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,17 @@
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.0.0** (zwasm@0853f3c1, 2026-07-01): the coherent
14-
// release cljw 1.0.0 ships on. Bumped from v2.0.0-alpha.3 to pick up the
15-
// no-max-table `table.grow` JIT fix (zwasm D-501 tier-1, PR #115: grows to a
16-
// `max(min*2, 1024)` cap). `.auto`=JIT-default; cljw uses explicit `.interp`/`.jit`
17-
// and is behaviorally unaffected (no `table.grow` usage). (Prior relative-path
18-
// form: `.path = "../zwasm_from_scratch"`, see git history.) lazy + flag-guard
19-
// means a churning dep cannot break the default gate.
13+
// PINNED to STABLE tag **v2.1.0** (zwasm@d5d685ad, 2026-07-06): the table64-JIT
14+
// release. Bumped from v2.0.0 to pick up native table64 (i64-indexed table)
15+
// JIT compilation (zwasm D-475, PR #127) + table64 elem-segment / bounds
16+
// hardening. cljw uses no tables in its host or FFI fixtures, so this is
17+
// behaviorally unaffected — a clean engine follow. `.auto`=JIT-default; cljw
18+
// rides `.auto` (D-488). (Prior relative-path form: `.path =
19+
// "../zwasm_from_scratch"`, see git history.) lazy + flag-guard means a
20+
// churning dep cannot break the default gate.
2021
.zwasm = .{
21-
.url = "git+https://github.com/clojurewasm/zwasm.git#v2.0.0",
22-
.hash = "zwasm-2.0.0-FT1FvyvVigD7I5-Bcc0cT3L_Z2BjgVTl6sjuGLdOHOrc",
22+
.url = "git+https://github.com/clojurewasm/zwasm.git#v2.1.0",
23+
.hash = "zwasm-2.1.0-FT1Fv7J_iwADA4XfXfKPCuoNE9IzQgo4HXfLR1sO6D0h",
2324
.lazy = true,
2425
},
2526
},

0 commit comments

Comments
 (0)