Skip to content

Commit d096811

Browse files
committed
chore(deps): zwasm moved to its own org — repoint the dep and retire co-development
Smell-audited: 1: the sweep's only real judgement was archival-vs-live, and it is recorded rather than applied silently. Dated records keep their original wording (ADRs, lessons, CHANGELOG, the CLOSED sweep_plan.md, F-001's 2026-06-08 entry, the fastest-scripting research report) — they state where the tag was pushed and how the repos related AT THE TIME, which is still true of those dates; rewriting them to the new org would falsify a history, not correct a fact. Live documents get the correction. One residual is recorded instead of being left to be discovered: the v1.10.0 tag still carries the old URL. zwasm left `clojurewasm/zwasm` for its own org, <https://github.com/zwasm/zwasm>, where it continues under separate, joint maintainership. Functional: - `build.zig.zon` `.url` names the new org directly. A transfer redirect is only an alias until something else claims the vacated name, so a dependency URL must not rest on one. `.hash` is content-addressed and unchanged — `zig fetch` against both URLs returns the same `zwasm-2.5.0-FT1Fv4KPkgCaKsDmsn05BTYsoEhH7RCUreSX8a3mwFha`. - `legal/THIRD_PARTY.md` attribution and `docs/examples/wasm/README.md` (which additionally pointed at the org root, not the repo). Relationship — the co-development protocol is retired, not just relocated. The `dogfooding_handover` mailbox (`from_cljw_NN`/`to_cljw_NN`), the "both repos are the user's" finding-handling split, and `.dev/zwasm_capabilities.md`'s per-unit refresh duty were all mechanisms between two repos under one owner: - `.dev/zwasm_capabilities.md` is FROZEN — a record of what the final pin embeds, not a watch list; its refresh mandate and mailbox section are gone. - `.claude/CLAUDE.md` no longer tells the loop to refresh that ledger per unit. - `.dev/project_facts.md` F-001 gains a dated amendment (location + relationship; the invariant itself is untouched); F-016 records that its "track zwasm's WASI advances" clause is moot while the no-downgrade invariant stands as shipped. - `.dev/debt.yaml` D-515's "L5: FILE via CODEV" pointed at a dead channel. Residual, recorded in handover: the v1.10.0 tag still names the old URL, and cw-playground / cw-serverless-demo build cljw from that tag, so their future rebuilds depend on the redirect. It holds only while nothing claims the vacated name — never create a repo called `zwasm` under the `clojurewasm` org. Verified: `zig fetch` on both URLs (identical hash), smoke + `phase16_wasm_ffi` green (11 passed / 0 failed), and the built binary reports `(ReleaseSafe, wasm)` and runs the FFI (`add` 2 40 => 42).
1 parent db31748 commit d096811

9 files changed

Lines changed: 111 additions & 64 deletions

File tree

‎.claude/CLAUDE.md‎

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -619,15 +619,13 @@ zig fmt src/ # format
619619
producers, root slots, reentrant accumulators, pins, in-txn, per-tag traces,
620620
the `isGcManaged` membrane) + a moving-GC migration checklist. `GC-ROOT:`
621621
markers in source anchor each published-root site here.
622-
- [`.dev/zwasm_capabilities.md`](../.dev/zwasm_capabilities.md) — cljw's view of the
623-
**embedded zwasm v2** runtime's embedding-API capabilities + cljw's adoption
624-
status (F-001). zwasm is SHA-pinned but co-developed (`~/Documents/MyProducts/
625-
zwasm`) and is growing a **JIT-backed engine** (ADR-0200) — the
626-
north-star capability (ROADMAP §9.0 gap area II × III). **The loop MUST read this
627-
ledger at every gap-area-unit start (Step 1a) and every Phase boundary**, refresh
628-
it against zwasm's live status sources listed there, and flip the JIT row from
629-
BUILDING→adoptable only when zwasm marks it ready AND the pin is (user-)bumped.
630-
This is the always-on, git-tracked face of the CODEV co-dev protocol.
622+
- [`.dev/zwasm_capabilities.md`](../.dev/zwasm_capabilities.md) — cljw's record of
623+
the **embedded zwasm v2** runtime's embedding-API capabilities + what cljw
624+
adopted (F-001). **FROZEN as of 2026-08-12**: zwasm moved to its own org
625+
(<https://github.com/zwasm/zwasm>) under separate maintainership, and v2.5.0 is
626+
cljw's final pin — so the per-unit refresh duty and the CODEV mailbox protocol
627+
that file used to carry are **retired**. Read it as background on what the
628+
final pin embeds, not as a watch list.
631629

632630
## References
633631

‎.dev/debt.yaml‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1704,7 +1704,12 @@ standing:
17041704
- L6 monomorphization dedup (std.sort clones 0.22MB etc.): opportunistic.
17051705
- L7 UCD two-stage packing (~-0.1MB): only when touching the generator.
17061706
- L5 zwasm-side campaign (691KB arm64 emitter, unused component-model
1707-
surfaces): FILE via CODEV; defends the 4.0MB zwasm budget line.
1707+
surfaces): the 2026-07-16 round LANDED (zwasm ADR-0204 / D-522 stage 1,
1708+
-1,083KB measured here) and the budget line was re-set to 2.5MB. No
1709+
further round is fileable: zwasm left the org 2026-08-12
1710+
(github.com/zwasm/zwasm, separate maintainership), so the CODEV channel
1711+
this lever used is gone — a future size request is an ordinary
1712+
upstream report, not a co-dev handover.
17081713
Method: scripts/binary_size_report.sh before/after each lever (reference
17091714
platform = macOS arm64 ReleaseSafe -Dwasm stripped); component budget
17101715
breach → attribute → lever or a conscious ADR-0172 revision, never silent.

‎.dev/handover.md‎

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,12 @@
1313
tier comes back. Commit **and** push (atomic
1414
Step 6). `build.zig.zon` `.zwasm` = tag pin **v2.5.0**
1515
(`278587f6`, 2026-08-12, FINAL — full WASI 0.3 + the `libzwasm.a` C-API
16-
export fix; neither reaches cljw's Zig embedding surface. Tagging zwasm is
17-
user-only, its ADR-0156). Latest release:
16+
export fix; neither reaches cljw's Zig embedding surface). **zwasm now lives
17+
at `github.com/zwasm/zwasm`** — its own org since 2026-08-12, separate
18+
maintainership; the dep URL names it directly rather than riding the transfer
19+
redirect, and the content `.hash` was unchanged by the move. Co-development
20+
(the `dogfooding_handover` mailbox, `.dev/zwasm_capabilities.md`'s per-unit
21+
refresh duty) is RETIRED — see F-001's 2026-08-12 entry. Latest release:
1822
**v1.10.0** (2026-08-12) — **the FINAL release**. CHANGELOG is the
1923
release-history SSOT.
2024
- **First task on resume**: nothing is pending. The wind-down is DONE:
@@ -33,6 +37,11 @@
3337
release create` is TOCTOU across the two matrix legs — if they reach it
3438
within the same instant, the loser fails on "already exists" under
3539
`set -e`. v1.10.0 missed it by 47 s. Never hit, never fixed.
40+
- **The v1.10.0 TAG still names `clojurewasm/zwasm`** (fixed after it; it is the
41+
final release), and both demos' Dockerfiles build cljw from that tag — so
42+
their future rebuilds ride GitHub's transfer redirect. Verified working
43+
2026-08-12. It holds only while nothing claims the vacated name: **never
44+
create a repo called `zwasm` under the `clojurewasm` org.**
3645
- **Forbidden**: bare `zig build test` without `-Dwasm`; bare `zig build` for a
3746
probe (use ReleaseSafe). The FULL gate runs `--serial-e2e`, ALONE; never a
3847
concurrent build during a gate. `.claude/**` edits + cross-repo publishes may
@@ -51,8 +60,7 @@
5160
own SSOT — read the script, not a list here.
5261
- **2026-08-12: the README declares ClojureWasm no longer maintained**
5362
(`1c8a9cbf`); the Sponsors badge, README footer line, and `.github/FUNDING.yml`
54-
are gone with it. Issues/PRs were always disabled — Discussions is the one
55-
channel. Wind-down context + the surveyed wording/transfer research:
63+
are gone with it. Wind-down context + the surveyed wording/transfer research:
5664
memory `clojurewasm-wind-down-plan`, `private/notes/2026-08-11-{sunset-wording,
5765
transfer-risk}-survey.md`.
5866
- 2026-08-11/12: Discussions #12/#13/#14 (BuddhiLW) answered in code — three
@@ -68,10 +76,8 @@
6876
## Standing units (tracked in .dev/debt.yaml)
6977

7078
- **D-565** — external-contributor reproducibility sweep (Discussion #11).
71-
Items (1)-(6) DISCHARGED 2026-08-04; the ledger row carries what each was.
7279
Residual: (7) survey-workflow setup notes, (8) handover pointing at
73-
gitignored `private/notes/` recipes. Companion: zwasm D-526.
74-
80+
gitignored `private/notes/` recipes. The row carries the rest.
7581
- **Perf campaign (§9.2.S) — PAUSED** (D-520 / D-386 / D-005/006). **D-513**
7682
item (1) `clojure.core.reducers` is the only remaining piece (repl + var :doc
7783
landed); it is IN PROGRESS — its "take up on a real consumer" deferral is the
@@ -83,7 +89,8 @@
8389

8490
cljw's differentiator = **Wasm interop (gap II) × VM-perf fusion→JIT (gap
8591
III)**. zwasm JIT (ADR-0200) is the cljw default; remaining =
86-
components-through-the-JIT (zwasm-side, D-500). Distal — needs a user nod.
92+
components-through-the-JIT — now wholly upstream's call (D-500, and zwasm is a
93+
separate project since 2026-08-12). Distal — needs a user nod.
8794
NOTE ADR-0177: "edge execution" is an AIM owned by D-552, not a capability.
8895

8996
## Reading order (resume)

‎.dev/project_facts.md‎

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,27 @@ the ADR); debt D-036 (Phase 16 inline-vs-Pod decision); ROADMAP
226226
build differentiation: **ADR-0133**. Mac full gate verified green; ubuntunote
227227
verification is the remaining step. `-Dwasm` everywhere (not mixed) per the
228228
user's "冒頭から -Dwasm" — a mixed wasm/non-wasm build sequence is what breaks.
229+
- **2026-08-12 (user chat — zwasm transferred out of the org; LOCATION amendment,
230+
the invariant itself is unchanged).** zwasm moved from `clojurewasm/zwasm` to
231+
its own org, **<https://github.com/zwasm/zwasm>**, where it is maintained
232+
jointly by its author and an outside contributor. F-001's substance —
233+
cljw embeds zwasm v2, unavoidably, resolved through the `build.zig.zon`
234+
tag pin — is **untouched**; what changes is where the dep comes from and the
235+
relationship around it:
236+
- `build.zig.zon` `.url` now names the `zwasm` org **directly**. GitHub
237+
redirects the old path, but a transfer redirect is only an alias until
238+
something else claims the vacated name, so a dependency URL must never rest
239+
on one. `.hash` is content-addressed and did not change (`zig fetch`
240+
verified against both URLs).
241+
- **Co-development is over.** The `dogfooding_handover` mailbox
242+
(`from_cljw_NN` / `to_cljw_NN`), the "both repos are the user's" finding-
243+
handling split recorded in the 2026-06-05 entry above, and
244+
`.dev/zwasm_capabilities.md`'s per-unit refresh duty are all **retired** —
245+
they were mechanisms between two repos under one owner. A zwasm-side finding
246+
is now an ordinary upstream report.
247+
- Earlier entries in this history keep their original wording: they record
248+
where the tag was pushed and how the two repos related **at the time**, which
249+
remains true of those dates.
229250

230251
---
231252

@@ -1222,3 +1243,9 @@ namespace — the surface this invariant guarantees is always present), ADR-0158
12221243
that ClojureWasm as a zwasm consumer forces the latest Wasm/WASI (Component Model
12231244
always on); no Wasm-1.0-only downgrade axis. Recorded as law; operationalised by
12241245
ADR-0135 Amendment 1 + ADR-0158.
1246+
- 2026-08-12: the **invariant stands as shipped** — the `-Dwasm` build selects
1247+
zwasm's full modern surface (Wasm 3.0 + WASI 0.3 at the v2.5.0 pin) and exposes
1248+
no downgrade knob. What is moot is the *tracking* clause "when zwasm advances
1249+
WASI, cljw tracks it as the new floor": v2.5.0 is the final pin and zwasm now
1250+
lives in its own org under separate maintainership (F-001, same date). A forker
1251+
who bumps the pin inherits the invariant — never add the downgrade axis back.

‎.dev/reference_clones.md‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,10 @@ Read the source for *why*; run `clj` for *what*.
7575
- Use: WebAssembly runtime reference (Phase 16+ Pod boundary design)
7676
- Not resident (multi-GB). `git clone --depth 1 https://github.com/bytecodealliance/wasmtime ~/Documents/OSS/wasmtime`
7777
- For Component Model / Canonical ABI questions the FIRST reference is zwasm
78-
itself (`~/Documents/MyProducts/zwasm/`, co-developed and SHA-pinned into
79-
`build.zig.zon`) — it is the implementation cljw actually runs on.
78+
itself, tag-pinned into `build.zig.zon` — it is the implementation cljw
79+
actually runs on. Upstream is <https://github.com/zwasm/zwasm> (its own org
80+
since 2026-08-12, separate maintainership); a local clone of it, if present,
81+
is read-only reference like everything else in this file.
8082

8183
## Quality-elevation corpora (interim-goal re-cut, 2026-05-29)
8284

‎.dev/zwasm_capabilities.md‎

Lines changed: 42 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,38 @@
11
# zwasm capability ledger — cljw's view of the embedded Wasm runtime (F-001)
22

3-
> **SSOT for "what does the zwasm we embed offer, and what has cljw adopted".**
3+
> **The record of what the zwasm we embed offers, and what cljw adopted.**
44
> cljw embeds **zwasm v2** (F-001, unavoidable). The dep is a **tag pin** —
5-
> **v2.5.0** (see § Pin), pinned 2026-08-12, and this is cljw's **final** pin:
6-
> the runtime is no longer maintained (README), so this ledger stops tracking
7-
> zwasm's growth here. Prior pins: v2.4.1 (2026-08-04) the two cljw-found
5+
> **v2.5.0** (see § Pin), pinned 2026-08-12, and this is cljw's **final** pin.
6+
> Prior pins: v2.4.1 (2026-08-04) the two cljw-found
87
> component/output fixes, v2.4.0 (2026-08-03) the external-consumer release,
98
> v2.3.0 (2026-07-17) the WASI-0.3.0-official inventory sweep, v2.2.1
109
> (2026-07-16) the binary-size campaign, v2.2.0 (`cf5d20d7`, 2026-07-09)
11-
> the AOT-full-fidelity release (ADR-0203). zwasm continues under active
12-
> co-development (`~/Documents/MyProducts/zwasm`) and its embedding API keeps
13-
> *growing* — notably a **JIT-backed
14-
> engine** (the cljw north star, ROADMAP §9.0 gap area II × III). cljw has **adopted
15-
> the JIT as its default** (`.auto`, D-488 discharged); the remaining north-star step
16-
> is components-through-the-JIT (zwasm-side, D-500). This file is the durable record
17-
> so the loop never re-derives "is zwasm's JIT ready yet?" from scratch.
10+
> the AOT-full-fidelity release (ADR-0203). cljw **adopted the JIT as its
11+
> default** (`.auto`, D-488 discharged); the north-star step it never reached is
12+
> components-through-the-JIT (zwasm-side, D-500).
1813
19-
## The read-at-boundaries convention (why this file exists)
14+
## Status of this file: FROZEN (2026-08-12)
2015

21-
The cljw loop **cannot infer zwasm's status from its own tree** — the pin is frozen
22-
at one commit while zwasm moves on. So, at every **gap-area-unit start** (CLAUDE.md
23-
Step 1a) **and every Phase boundary**, the loop MUST:
16+
This ledger existed to answer "what does zwasm have now, and has cljw adopted
17+
it?" for a **moving** dependency. Both halves of that question are closed:
2418

25-
1. Read THIS file (cljw's recorded view + adoption status).
26-
2. Refresh it against zwasm's **live** status sources (below). If zwasm shipped a
27-
capability cljw's north star needs, update the table here + decide adoption.
28-
3. Treat a capability as **adoptable only when zwasm marks it ready AND cljw bumps
29-
the pin** (`build.zig.zon`) — never adopt against an unpinned/moving API.
19+
- **cljw is no longer maintained** (README), and v2.5.0 is its final pin.
20+
- **zwasm left the `clojurewasm` org** on 2026-08-12 for its own org,
21+
<https://github.com/zwasm/zwasm>, where it continues under **separate,
22+
joint maintainership**. It is no longer a project this repo co-develops.
3023

31-
This is the cljw-side, git-tracked face of the **dogfooding handover protocol**
32-
(simplified, no-loop, 2-state — `dogfooding_handover/PROTOCOL.md` below). **Also at
33-
each unit boundary (after a commit, before the next Step 0), check the INBOX**
34-
(`to_cljw_*.md` with `Status: SENT`); handle it, then flip to `CONSUMED`. When cljw
35-
needs a not-yet-ready zwasm capability, the request goes out as a `from_cljw_NN.md`
36-
(finished-form, request-don't-workaround; mark the dependent cljw task PENDING), never
37-
a cljw-side shim.
24+
So everything below is a **record of what cljw's final pin embeds**, not a
25+
watch list. The obligations this file used to carry are retired: there is no
26+
per-unit refresh duty, no `dogfooding_handover` mailbox (the `from_cljw_NN` /
27+
`to_cljw_NN` channel was between two repos under one owner and ended with the
28+
transfer), and no adoption decisions pending. Capability rows are accurate as
29+
of the dates they carry and are **not** kept current against zwasm's ongoing
30+
development — read zwasm's own repo for that.
3831

39-
## zwasm live status sources (read these to refresh the table)
40-
41-
| Source | What it tells you |
42-
|-------------------------------------------------------------|----------------------------------------------------------------|
43-
| `~/Documents/MyProducts/zwasm/private/dogfooding_handover/` | **the mailbox** — `PROTOCOL.md` + `from_cljw_NN`/`to_cljw_NN` |
44-
| `~/Documents/MyProducts/zwasm/.dev/ROADMAP.md` | zwasm phase plan (p17 = JIT) |
45-
| `~/Documents/MyProducts/zwasm/.dev/decisions/0200_*.md` | ADR-0200 — JIT-DEFAULT engine + research-driven API |
46-
| `git -C ~/Documents/MyProducts/zwasm log --oneline -15` | recent JIT work (zwasm#477 multi-arg invoke arm64/x86_64) |
32+
A forker who wants to move to a newer zwasm should treat this as background,
33+
bump `build.zig.zon` themselves, and re-verify against the five `phase16_wasm_*`
34+
e2e — the embedding surface cljw actually depends on is narrow (Engine / Module /
35+
Instance / `runWasmCapturedFull` / `wasi.host.Host`).
4736

4837
## Pin
4938

@@ -95,10 +84,11 @@ a cljw-side shim.
9584
- `lazy` dependency: resolved only under `-Dwasm`. So a churning dep never
9685
breaks the day-to-day gate when the flag is off — it
9786
only gates what `cljw.wasm/*` can do.
98-
- Pin-bump (to a newer tag/SHA): zwasm `docs/consuming_prerelease_zwasm.md`. Re-pin is
99-
**user-gated** (a moving north-star API; the loop proposes, the user confirms).
87+
- Pin-bump (to a newer tag/SHA): `zig fetch "git+https://github.com/zwasm/zwasm.git?ref=<tag>#<SHA>"`
88+
prints the content hash; hand-edit `.url` + `.hash` + keep `.lazy` (`--save` mangles the
89+
entry). No further bump is planned — v2.5.0 is final for this repo.
10090

101-
## Capability table (refresh at each boundary)
91+
## Capability table (frozen; rows accurate as of the dates they carry)
10292

10393
| Capability | zwasm status (as of 2026-06-22) | in cljw's tree? | cljw adoption | ref |
10494
|---------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------|---------------------------------------------------------------------------------------------------------------------------------|--------------|
@@ -117,10 +107,11 @@ a cljw-side shim.
117107
| guard-page bounds-check elision (JIT) | NEW in v2.2.0 (D-507/ADR-0202) — reservation-backed linear memory + fault→trap PC-redirect; bounds checks elided by default, diff-fuzz-gated (D-510) | YES (pin) | transparent — cljw's `.auto` guests get the faster JIT bodies; no embedding-API change | zwasm D-507 |
118108
| .cwasm AOT + on-disk compile cache | NEW in v2.2.0 (ADR-0203) — full-fidelity `.cwasm` v0.5 serialize/load (aot-diff 62/62) + transparent `--cache` (D-508); JIT helpers de-baked (D-516) | YES (pin) | NOT adopted — zwasm-CLI-side surface today; candidate for cljw cold-start (evaluate when an embedding API for the cache lands) | zwasm D-508 |
119109

120-
## Forward plan — the JIT adoption unit (gap area II × III) — ACTIVE
110+
## The JIT adoption unit (gap area II × III) — CLOSED, partially reached
121111

122-
The north-star capability is **running Wasm components through zwasm's JIT engine**
123-
from cljw. The trigger has FIRED (to_cljw_02, 2026-06-21) and adoption is in progress:
112+
The north-star capability was **running Wasm components through zwasm's JIT
113+
engine** from cljw. Scalar/SIMD function invocation got there; components did
114+
not (they stayed interp-pinned on the zwasm side, D-500). The record:
124115

125116
1. **Trigger (DONE)**: zwasm shipped the embedder-stable JIT engine (`to_cljw_02`);
126117
cljw switched the dep to relative-path (user-directed experiment, no-push).
@@ -259,3 +250,13 @@ have surfaced it.
259250
behaviour follow (five phase16 wasm e2e + the full gate green on it). This
260251
ledger's watch duty ends here: cljw is no longer maintained, while zwasm
261252
continues under separate maintainership.
253+
254+
- **2026-08-12 (same day)** — **zwasm transferred out of the `clojurewasm` org**
255+
to its own org, <https://github.com/zwasm/zwasm>, to be maintained jointly by
256+
its author and an outside contributor. cljw's dep URL now names that org
257+
directly rather than riding GitHub's transfer redirect (a redirect is only an
258+
alias until something else claims the old name — the RepoJacking shape). The
259+
`.hash` is content-addressed and did not change, verified by `zig fetch`
260+
against both URLs. This file is FROZEN as of this entry; the co-development
261+
protocol it used to carry (per-unit refresh, `dogfooding_handover` mailbox)
262+
is retired with the transfer, since the two repos no longer share an owner.

‎build.zig.zon‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,15 @@
3030
// (`-Dcompiler-rt`, sub-3.0 DCE); v2.3.0 (2026-07-17) WASI-0.3.0 sweep;
3131
// v2.2.1 (2026-07-16) binary-size campaign; v2.2.0 (2026-07-09) AOT
3232
// full fidelity.
33+
//
34+
// zwasm moved out of the `clojurewasm` org to its own `zwasm` org on
35+
// 2026-08-12, where it continues under separate maintainership. The URL
36+
// below is the canonical one; do NOT rely on GitHub's transfer redirect
37+
// from `clojurewasm/zwasm`, which stops being an alias the moment
38+
// anything else claims that name. The `.hash` is content-addressed, so
39+
// the move did not change it (verified by `zig fetch` on both URLs).
3340
.zwasm = .{
34-
.url = "git+https://github.com/clojurewasm/zwasm.git?ref=v2.5.0#278587f608a7564d8f2dfa53f567aab70f661296",
41+
.url = "git+https://github.com/zwasm/zwasm.git?ref=v2.5.0#278587f608a7564d8f2dfa53f567aab70f661296",
3542
.hash = "zwasm-2.5.0-FT1Fv4KPkgCaKsDmsn05BTYsoEhH7RCUreSX8a3mwFha",
3643
.lazy = true,
3744
},

‎docs/examples/wasm/README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# WebAssembly as an FFI — polyglot demo
22

3-
ClojureWasm can embed a WebAssembly engine ([zwasm](https://github.com/clojurewasm)
3+
ClojureWasm can embed a WebAssembly engine ([zwasm](https://github.com/zwasm/zwasm)
44
v2) and call modules compiled from **other languages** as if they were Clojure
55
namespaces. This is the "WebAssembly as an FFI" idea: a Clojure REPL loads a
66
sandboxed `.wasm` and invokes its exports.

0 commit comments

Comments
 (0)