Skip to content

Pin the test node to 25 where exnref is stable#11

Merged
rasros merged 4 commits into
mainfrom
fix/pin-node-25-stable-exnref
Jun 8, 2026
Merged

Pin the test node to 25 where exnref is stable#11
rasros merged 4 commits into
mainfrom
fix/pin-node-25-stable-exnref

Conversation

@rasros

@rasros rasros commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

What changed

  • The kmp plugin now pins the js/wasm test node to 25.0.0 instead of 24.10.0, and drops the --experimental-wasm-exnref flag it had to pass on 24.
  • Added a kmp-positive sample (jvm + wasmWasi) and wired it into the smoke test, so the node pin has coverage: its Kotlin 2.3 wasmWasi output embeds exnref types that only instantiate on a node whose V8 has stable exception handling.

Why

wasmWasi compiles to the exnref exception-handling proposal by default since Kotlin 2.3. On node 24 (V8 13.6) exnref is experimental and only runs behind --experimental-wasm-exnref, and that experimental path intermittently crashed wasmWasiNodeTest under load on CI runners. Node 25 ships V8 14.1 where exnref is stable, so the module instantiates with no flag and the experimental path is gone. Pinning here means every consumer of com.eignex.kmp inherits the stable runtime; klause currently overrides this pin to 25 in its own build script and can drop that override once this ships.

Testing

Ran the kmp-positive sample: wasmWasiNodeTest executes on node-v25.0.0 and passes, and detekt on the sample is green. Confirmed the guard is real by temporarily reverting the pin to 24.10.0 (without the flag) — the sample then fails to compile the wasm module with "Invalid opcode 0x1f (enable with --experimental-wasm-exnref)". Restored to 25. The existing LintPluginRulesTest suite still passes.

@rasros rasros merged commit aded536 into main Jun 8, 2026
2 checks passed
@rasros rasros deleted the fix/pin-node-25-stable-exnref branch June 8, 2026 08:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant