From c43fb7b61e4ad789022c7c58c8567570527dd26d Mon Sep 17 00:00:00 2001 From: Lann Martin Date: Thu, 6 Aug 2026 08:58:02 -0400 Subject: [PATCH 1/3] Point componentize-js references at the lann/componentize-js fork --- js/componentize/README.md | 2 +- js/componentize/websocket.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/js/componentize/README.md b/js/componentize/README.md index 10d692e..40b81d5 100644 --- a/js/componentize/README.md +++ b/js/componentize/README.md @@ -4,7 +4,7 @@ implements the `polymorph:websocket` **imports** over the standard browser `WebSocket` API, this one implements the standard browser API **over the WIT imports**, for JS guests componentized with -[componentize-js](https://github.com/dicej/componentize-js) (the wit-dylib +[componentize-js](https://github.com/lann/componentize-js) (the wit-dylib reboot). Application code written against `WebSocket` runs unchanged inside a component, against any host that serves `polymorph:websocket/connections`. diff --git a/js/componentize/websocket.js b/js/componentize/websocket.js index e101b45..b795a2f 100644 --- a/js/componentize/websocket.js +++ b/js/componentize/websocket.js @@ -1,6 +1,6 @@ // @ts-check // A WHATWG `WebSocket` shim for JS guests componentized with -// componentize-js (https://github.com/dicej/componentize-js, the wit-dylib +// componentize-js (https://github.com/lann/componentize-js, the wit-dylib // reboot of ComponentizeJS), backed by the `polymorph:websocket` imports. // // This is the inverse of `js/jco/websocket.js`: that module implements the From 5a24b1d3cfe03e38b6282978dde6b4346691a8bb Mon Sep 17 00:00:00 2001 From: Lann Martin Date: Thu, 6 Aug 2026 09:29:14 -0400 Subject: [PATCH 2/3] Bump componentize-js to the eager-settlement fix (lann/componentize-js#1) --- js/componentize/componentize-js.rev | 2 +- js/componentize/componentize-js.sha256 | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/js/componentize/componentize-js.rev b/js/componentize/componentize-js.rev index fcd1f88..df7e7ba 100644 --- a/js/componentize/componentize-js.rev +++ b/js/componentize/componentize-js.rev @@ -1 +1 @@ -bdd7c3d50e064d9c820218dbeb98be8bcae96875 +f417fa6d5f747a6fe8a956fcb7f18806bfa508fd diff --git a/js/componentize/componentize-js.sha256 b/js/componentize/componentize-js.sha256 index e1bba60..335119b 100644 --- a/js/componentize/componentize-js.sha256 +++ b/js/componentize/componentize-js.sha256 @@ -11,5 +11,5 @@ # The published builds (and these digests) are the webcrypto sibling's — # both repositories pin the same componentize-js revision; see # wpt/component.sh for the sourcing story. -linux-aarch64 043b3695a82fef4114454fa3e7195d8bfcaf704ac8e3880ba53e27526d2620ee e64592d1009bf7eed52d2d3efe33420c5c4c8d323bd9c3062db4fffe75cb713c -linux-x86_64 9a38c0a6b82f0bab9ac63cfc65d3a4218f65c96c68fe43998e0053762d1697cd 69b9b79f422abf26b0836a5ddd653ce751c433adf944d465b71f89cca31ff927 +linux-aarch64 f18dc2a472946fb531d6a6a64ca8e29d14c48027c6d719ccb5120c57e2d9eeb3 b5a7663d4893a239281408772c343f37e324ac778fbf9fc9b09368f52222580f +linux-x86_64 be573cd7631ccc10d3daa2c5b8b1ae99c3026e69e5fade0286287bcaed843963 ba88d9a02a04f15a0744eb6753944e7cf3b39a84eae4085f4654351c4687846c From 60e28d135fbffd7a0d87f8a262f623b387dd62cd Mon Sep 17 00:00:00 2001 From: Lann Martin Date: Thu, 6 Aug 2026 10:49:03 -0400 Subject: [PATCH 3/3] Drop --no-eager-subtask-return: the pinned componentize-js settles eager imports correctly --- js/componentize/wpt/parity/package.json | 6 +++--- scripts/jco-transpile.mjs | 6 ------ 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/js/componentize/wpt/parity/package.json b/js/componentize/wpt/parity/package.json index 5bde232..bb3398a 100644 --- a/js/componentize/wpt/parity/package.json +++ b/js/componentize/wpt/parity/package.json @@ -6,9 +6,9 @@ "description": "WPT parity gate: the vendored WebSocket suites run directly against the platform's WebSocket (baseline) and through the componentized shim transpiled by jco against websocket-jco (round trip); compare.mjs holds the round trip to the baseline's pass set.", "packageManager": "pnpm@10.34.5", "scripts": { - "transpile": "node ../../../../scripts/jco-transpile.mjs transpile ../build/parity-runner.component.wasm --name parity-runner --async-mode jspi --no-eager-subtask-return --map 'polymorph:websocket/*@0.1.0=../../../../jco/websocket.js#*' --map 'wpt:parity/reporter@0.1.0=../../reporter.js#reporter' -o generated", - "transpile:web": "node ../../../../scripts/jco-transpile.mjs transpile ../build/parity-runner.component.wasm --name parity-runner --async-mode jspi --no-eager-subtask-return --map 'polymorph:websocket/*@0.1.0=../../../../jco/websocket.js#*' --map 'wpt:parity/reporter@0.1.0=../../reporter.js#reporter' --map 'wasi:cli/*=../node_modules/@bytecodealliance/preview2-shim/dist/browser/cli.js#*' --map 'wasi:clocks/*=../node_modules/@bytecodealliance/preview2-shim/dist/browser/clocks.js#*' --map 'wasi:filesystem/*=../node_modules/@bytecodealliance/preview2-shim/dist/browser/filesystem.js#*' --map 'wasi:io/*=../node_modules/@bytecodealliance/preview2-shim/dist/browser/io.js#*' --map 'wasi:random/*=../node_modules/@bytecodealliance/preview2-shim/dist/browser/random.js#*' --map 'wasi:sockets/*=../sockets-stub.mjs#*' -o generated-web", - "transpile:smoke": "node ../../../../scripts/jco-transpile.mjs transpile ../build/smoke.component.wasm --name smoke --async-mode jspi --no-eager-subtask-return --map 'polymorph:websocket/*@0.1.0=../../../../jco/websocket.js#*' --map 'wpt:parity/reporter@0.1.0=../../reporter.js#reporter' -o generated-smoke", + "transpile": "node ../../../../scripts/jco-transpile.mjs transpile ../build/parity-runner.component.wasm --name parity-runner --async-mode jspi --map 'polymorph:websocket/*@0.1.0=../../../../jco/websocket.js#*' --map 'wpt:parity/reporter@0.1.0=../../reporter.js#reporter' -o generated", + "transpile:web": "node ../../../../scripts/jco-transpile.mjs transpile ../build/parity-runner.component.wasm --name parity-runner --async-mode jspi --map 'polymorph:websocket/*@0.1.0=../../../../jco/websocket.js#*' --map 'wpt:parity/reporter@0.1.0=../../reporter.js#reporter' --map 'wasi:cli/*=../node_modules/@bytecodealliance/preview2-shim/dist/browser/cli.js#*' --map 'wasi:clocks/*=../node_modules/@bytecodealliance/preview2-shim/dist/browser/clocks.js#*' --map 'wasi:filesystem/*=../node_modules/@bytecodealliance/preview2-shim/dist/browser/filesystem.js#*' --map 'wasi:io/*=../node_modules/@bytecodealliance/preview2-shim/dist/browser/io.js#*' --map 'wasi:random/*=../node_modules/@bytecodealliance/preview2-shim/dist/browser/random.js#*' --map 'wasi:sockets/*=../sockets-stub.mjs#*' -o generated-web", + "transpile:smoke": "node ../../../../scripts/jco-transpile.mjs transpile ../build/smoke.component.wasm --name smoke --async-mode jspi --map 'polymorph:websocket/*@0.1.0=../../../../jco/websocket.js#*' --map 'wpt:parity/reporter@0.1.0=../../reporter.js#reporter' -o generated-smoke", "baseline": "node baseline.mjs", "roundtrip": "node --experimental-wasm-jspi roundtrip.mjs", "compare": "node compare.mjs" diff --git a/scripts/jco-transpile.mjs b/scripts/jco-transpile.mjs index e29e545..5253417 100644 --- a/scripts/jco-transpile.mjs +++ b/scripts/jco-transpile.mjs @@ -36,11 +36,6 @@ const { values } = parseArgs({ map: { type: "string", multiple: true }, "world-name": { type: "string" }, "out-dir": { type: "string", short: "o" }, - // Never answer an async-lowered import with a bare RETURNED status; - // required for componentize-js guests, whose lowering does not - // implement the returned-immediately case (see the option's doc in - // jco-transpile). - "no-eager-subtask-return": { type: "boolean" }, // `types` only: WIT `@unstable` gates to enable, like `jco types // --feature` (repeatable). feature: { type: "string", multiple: true }, @@ -64,7 +59,6 @@ switch (command) { instantiation: values.instantiation, map, outDir: values["out-dir"], - noEagerSubtaskReturn: values["no-eager-subtask-return"], }); await writeFiles(files); break;