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-tar: A pure Swift TAR archive read/write/extract library — Foundation-free TAR library by @kateinoigakukun with WebAssembly and Embedded Swift support.
Swift Toolchain
- Add integration tests for cross-compiling to WebAssembly swift-package-manager#9877;
build-script: renameWasmStdlib->WASIStdlibswift#88469;- Docs: adjust WASI stdlib test execution command swift#88580;
- Fix
KeyPathwith 16-byte-aligned subscript traps on 32-bit targets swift#88725; lib/Basic: Emscripten triple support inswift-frontendswift#88732;- Add integration test for the WebAssembly Embedded Swift SDK swift-build#1154;
- Fix test target compilation for WebAssembly swift-build#1348.
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
FoundationEssentialsin compat module #725; - Add opt-in pointer-identity mode for
SwiftHeapObjectwrappers #723; - Add
Utilities/setup-dev.shfor one-command contributor setup #726; - GC lifecycle test for identity-cached wrappers #731;
- BridgeJS: Use
@JStypes 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
WasmKitErrorfor typed throws #277; - Remove
any GuestMemoryexistential from*Guest*Pointertypes #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
- Add multi-version matrix support to Wasm Swift SDK workflow apple/swift-nio#3575.
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: