Notable changes this month: JavaScriptKit 0.52.0-0.53.0 with continued BridgeJS improvements for compatibility and performance, more foundational work for Emscripten support in the Swift toolchain, a WASI fix for NSString in Foundation, and ElementaryUI becoming the first Swift framework featured in js-framework-benchmark.
Many thanks to @kateinoigakukun, @krodak, @lorentey, Matthew Ayers, @sliemeobn, @tshortli, and @wfltaylor for contributions!
Swift Toolchain
- WASI: fix unavailable calls in
NSStringwrite methods swift-corelibs-foundation#5475 (with 6.4.x backport #5476); - Add
wasm32-unknown-emscriptentriple support swift-driver#2105; EmscriptenToolchain: clean up comments andlinkerOutputTypehandling swift-driver#2136;- Exclude Emscripten tests with older toolchains swift-driver#2139;
- Add
-Xlinker-driveroption unifying-Xclang-linker/-Xemcc-linkerswift-driver#2142; - Emscripten: Add support in CMake and
ClangImporter
swift#89229; - 6.3: backport
KeyPath16-byte-aligned subscript trap fix on 32-bit targets swift#89323; IRGenDebugInfo: work aroundLifetimeDependenceInfohandling (reproducible on Wasm) swift#89266.
JavaScriptKit
Three releases this month: 0.52.0 with multiple BridgeJS improvements, 0.52.1 fixing closures with struct return, and 0.53.0 introducing a faster JSObjectSpace, JSTypedArray as a recognized BridgeJS type, and bulk TypedArray copy for numeric arrays among other changes.
- BridgeJS: support nested
@JStypes inside structs and classes #735; - BridgeJS: diagnose struct initializer parameter order mismatch #733;
- BridgeJS: fix optionals build error with Embedded Swift #734;
- BridgeJS: move optional
JSObjectto stack ABI, enablingOptional<@JSClass>#738; - Fix cross-thread
JSStringdeinit by wrappingJSObjectinstead of raw ref #741; - BridgeJS: fix closures with struct return #739;
- Faster
JSObjectSpace(JS runtime retain/release) #676; - BridgeJS: fix name collision for same-named nested structs #744;
- BridgeJS: add
JSTypedArrayas a recognized BridgeJS type #746; - BridgeJS: optimize numeric array transfer with bulk
TypedArraycopy #745.
WasmKit
- Add Xcode 26.5 to the testing matrix #345.
ElementaryUI
Two releases this month: 0.2.3 and 0.3.0 upgrading to JavaScriptKit 0.53. Existing projects updating to 0.3.0 need to reinstall the bundled BrowserRuntime npm package and clear the Vite dev cache (see the release notes for the exact commands).
- ElementaryUI is in the current snapshot of the js-framework-benchmark results, the first Swift framework to join the list;
- Upgrade to JavaScriptKit 0.53 #105.
Other Notable Changes
BasicContainers: don't define LLDB formatter symbol on Wasm apple/swift-collections#650;
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 recent updates: