WasmKit 0.3.0 is a substantial release with these notable changes:
- Initial WebAssembly Component Model support hidden behind a non-default package trait
ComponentModel: binary parser/encoder,ComponentInstance/ComponentLoader, and invocation of simple components with WAVE value encoding arguments that can be passed from the CLI; - Three new Wasm proposals (Fixed Width SIMD, Atomics, and Exception Handling);
- Substantially expanded WASIp1 coverage with
poll_oneoffsupport for timers, an in-memory file system, thread safety improvements, and fd-leak I/O fixes; - Under the hood WasmKit adopts typed throws via a unified
WasmKitErrorand raises the minimum Swift version to 6.3.
What's Changed
- Add help strings to
WITToolCLI options by @MaxDesiatov in #254 - NFC: make CLI commands reusable with new
CLICommandsmodule by @MaxDesiatov in #249 - Tests: Migrate rest of test suites to use swift-testing by @kateinoigakukun in #256
- WAT: Add threads proposal support by @kateinoigakukun in #257
- Add toolchain snapshots macOS matrix to
main.ymlby @MaxDesiatov in #253 - format.yml: use minimum supported Swift version by @MaxDesiatov in #258
- WASI MemoryFileSystem by @kateinoigakukun in #259
- Examples: Cover string passing use case in the example project by @kateinoigakukun in #260
- WASI: Implement
path_readlinkby @kateinoigakukun in #261 - WASI: Fix preopen ordering issue by @kateinoigakukun in #262
- CI: Skip const.wast spectest on main-nightly toolchains by @kateinoigakukun in #264
- WasmParser: SIMD Support by @kateinoigakukun in #263
- Fix CI: WITExtractor plugin smoke JSON decode diagnostics by @kateinoigakukun in #269
- Make MemoryEntity ~Copyable and store bytes in UnsafeBufferPointer by @kateinoigakukun in #268
- Adopt typed throws in the
WATmodule, require Swift 6.1 by @MaxDesiatov in #265 - Change
swift-formatcategory toformattingindependencies.jsonby @MaxDesiatov in #267 - Fix all warnings by @kateinoigakukun in #271
- Remove generic
StreamandStreamErrortypes by @MaxDesiatov in #276 - Update MSSV in
README.mdto reflect recent bump to 6.1 by @MaxDesiatov in #279 - Add
WasmParserBenchmark, CI job to verify that benchmarks build by @MaxDesiatov in #278 - Update
Benchmarks/README.mdfor library benchmarks by @MaxDesiatov in #280 - Mark
InstructionVisitoras~Copyableby @MaxDesiatov in #281 - Implement SIMD support in runtime by @kateinoigakukun in #270
- Include threads proposal tests in runtime spectest by @kateinoigakukun in #284
- Bump
build-xcodedeps to macOS 26 and Xcode 26.2 by @MaxDesiatov in #285 - WASI: Inherit stdio by default in WASIBridgeToHost by @kateinoigakukun in #286
- Add
Vendor/component-modeltest suite dependencies by @MaxDesiatov in #287 - Re-enable all tests for nightly Swift toolchains by @MaxDesiatov in #288
- WAT: basic Component Model definitions parsing by @MaxDesiatov in #266
- FuzzDifferential: cover v128/ref defaults for fuzz harness by @kateinoigakukun in #289
- Add component binary encoder, enable some CM spec tests by @MaxDesiatov in #290
- Add component binary parser and parsed representation by @MaxDesiatov in #291
- Add option to
wat2wasmfor including name section in output by @MaxDesiatov in #292 - Add
WITTypeConverterto extractComponentValueTypefrom WIT by @MaxDesiatov in #294 - Add component aliases WAT parsing and encoding by @MaxDesiatov in #293
- Add
ComponentInstance/ComponentLoadertypes by @MaxDesiatov in #296 - Add basic WAVE (WebAssembly Value Encoding) APIs by @MaxDesiatov in #297
- Support running components with WAVE in CLI by @MaxDesiatov in #298
.github/workflows/cflite_pr.yml: use older runner version by @MaxDesiatov in #300- Enable more CM tests, including
assert_return/assert_trapby @MaxDesiatov in #299 - Add component WAT support to wat2wasm CLI by @MaxDesiatov in #301
- Fix WAVE argument parsing not using component's type resolver by @MaxDesiatov in #302
- Add
ComponentBinaryFormatto centralize CM opcodes by @MaxDesiatov in #303 - NFC: Adopt
ComponentBinaryFormatAPI inComponentParser.swiftby @MaxDesiatov in #304 - Disable
PluginSmokeTestson macOS by @MaxDesiatov in #306 - Group Wasm proposals by phase in
README.mdby @MaxDesiatov in #309 - Fix
fts_read()for cyclic symlinks by @MaxDesiatov in #307 - Specify WasmKit versions for Wasm proposals in README.md by @MaxDesiatov in #310
- Test with Xcode 26.3/Swift 6.2.4 by @MaxDesiatov in #312
- Bump Wasm Swift SDK to 6.2.4 in
workflows/main.ymlby @MaxDesiatov in #314 - Fix file descriptor leak by @kkebo in #315
- Bump actions/upload-artifact from 6 to 7 by @dependabot[bot] in #317
- Bump actions/download-artifact from 7 to 8 by @dependabot[bot] in #316
- Fix
poll_oneoffand more I/O syscalls in WASI 0.1 by @MaxDesiatov in #187 - Fix wasm-tools path in
WasmTools.swiftby @MaxDesiatov in #320 - Clean up sections batching in
ComponentEncoderby @MaxDesiatov in #323 - Fix
lldb-dapconnection, adddecodingUnknownCommandtest by @MaxDesiatov in #324 - Analyse control flow in
runPreservingCurrentBreakpointby @MaxDesiatov in #313 - CM WAT normalization: remove
ComponentEncoder.GroupedFieldsby @MaxDesiatov in #325 - Debugger fixes: add test coverage for multiple functions by @MaxDesiatov in #326
- Fix core modules name section incompleteness by @MaxDesiatov in #321
- ComponentLinker: add
ComponentTypeSerializerby @MaxDesiatov in #319 - Back atomic instructions by C11
stdatomic.hby @MaxDesiatov in #308 - Add
Caller.captureBacktrace()by @pcbeard in #328 - Update
actions/checkouttov6by @MaxDesiatov in #330 mprotect-based memory boundary checking by @kateinoigakukun in #272- Bump actions/deploy-pages from 4 to 5 by @dependabot[bot] in #333
- Disable
mainbranch of Android snapshots as regressed by @MaxDesiatov in #336 - Use unified
WasmKitErrorfor typed throws by @MaxDesiatov in #277 - Bump actions/upload-pages-artifact from 4 to 5 by @dependabot[bot] in #338
- CI: Temporarily disable
maintoolchain dev snapshots by @MaxDesiatov in #340 - Remove
any GuestMemoryexistential from*Guest*Pointertypes by @MaxDesiatov in #339 - Fix fd handling in WASIp1 implementation by @MaxDesiatov in #327
- Add Xcode 26.5 to the testing matrix by @MaxDesiatov in #345
- Revert "CI: Temporarily disable
maintoolchain dev snapshots" by @MaxDesiatov in #344 - Update
actions/checkoutto v6 informat.ymlworkflow by @MaxDesiatov in #348 - SystemExtras: stop shadowing the C
stattype (fixes build with swift-system 1.7.0) by @jackguac in #349 - Add support for Exceptions Handling proposal by @MaxDesiatov in #311
- Bump clusterfuzzlite to Ubuntu 24.04 and Swift 6.3.2 by @MaxDesiatov in #350
- Bump MSSV to Swift 6.3 by @MaxDesiatov in #351
- Make
InstructionTranslatornon-copyable by @MaxDesiatov in #209 - Update benchmark package dependency URL by @MaxDesiatov in #354
- Add
ThrowingDeferhelper to unifydefererror handling by @MaxDesiatov in #346 - Package.swift: add
.treatAllWarnings(as: .error)by @MaxDesiatov in #282 - Make
WASIBridgeToHostthread-safe by @MaxDesiatov in #347 - Represent CM valtypes as type index or inline primitive by @MaxDesiatov in #353
- Add Sendable conformance to CatchClause and TryCatch by @MaxDesiatov in #355
- Per-node locking for the in-memory WASI file system by @MaxDesiatov in #358
- Add
merge_grouptomain.ymlCI triggers by @MaxDesiatov in #356 - Benchmark with
nativebuild system in dev snapshot builds by @MaxDesiatov in #361 - Fuzzing: Guarantee that module instantiation will finish eventually by @kateinoigakukun in #364
- WASI: Fix fd leak in
fd_readdirby @kateinoigakukun in #363 - Bump version to 0.3.0 by @MaxDesiatov in #360
- Update macOS runner version in release workflow by @MaxDesiatov in #365
New Contributors
Full Changelog: 0.2.2...0.3.0