Swift for Wasm April 2026 Updates

Notable changes this month: Wasm-compatible swift-tar library, JavaScriptKit 0.50.0–0.51 releases with continued BridgeJS work and a new opt-in pointer-identity mode for SwiftHeapObject wrappers, WasmKit updates unifying WasmKitError typed throws and removing any GuestMemory existentials from *Guest*Pointer types (plus a small 0.2.2 patch release), and ElementaryUI 0.2.0–0.2.2 focused on performance and stability fixes.

Many thanks to 0xpablo, @inductor, @kateinoigakukun, Ken Tominaga, @krodak, Matthew Ayers, @owenv, @sliemeobn, @wfltaylor, and @xavgru for contributions!

Forum Discussions

Swift Toolchain

JavaScriptKit

Four releases this month: 0.50.0 introducing JSRemote<JSObject>, then 0.50.1, 0.50.2 bundling several BridgeJS fixes, finally 0.51.0 with identity mode, support for use of @JS types from other modules, simplified contributor setup, and few BridgeJS fixes.

  • Add JSRemote<JSObject> #711;
  • BridgeJS: fix for-loop emission in stack codegen #716;
  • BridgeJS: emit static methods and properties on namespaced class entries #717;
  • BridgeJS: fix code generation for public enums #719;
  • Import Android module for non-Wasm Android targets #722;
  • Adopt FoundationEssentials in compat module #725;
  • Add opt-in pointer-identity mode for SwiftHeapObject wrappers #723;
  • Add Utilities/setup-dev.sh for one-command contributor setup #726;
  • GC lifecycle test for identity-cached wrappers #731;
  • BridgeJS: Use @JS types from other modules in the same package #730
  • BridgeJS: Synthesize typed-closure init access from declaration surface #727.

WasmKit

Version 0.2.2 released, a small patch fixing subscript visibility. Meanwhile, on the main branch we saw portability and performance improvements.

  • Use unified WasmKitError for typed throws #277;
  • Remove any GuestMemory existential from *Guest*Pointer types #339;
  • Fix subscript visibility #341;
  • Fix fd handling in WASIp1 implementation #327.

ElementaryUI

Three releases this month (0.2.0, 0.2.1, 0.2.2). The focus was performance work and stability fixes.

  • Upgrade to JavaScriptKit 0.50 #92;
  • Noncopyable node types #94;
  • Reusable move-only scratch containers #91;
  • Minor performance tweaks #93;
  • Improved string handling #95;
  • Improved conditional mounting (fixes access-violation bug) #97;
  • Fix stale state tracking (optional-unwrap crash) #100.

Other Notable Changes


Thank you for reading, and please feel free to add any comments or suggestions if we missed anything!

If you'd like to catch up with changes from previous months, here's a list of relevant updates:

15 Likes