Releases: WasmEdge/WasmEdge
WasmEdge 0.17.0
0.17.0 (2026-05-18)
Features:
- [Version]: Bump the version of the WasmEdge shared library.
- Due to the breaking change of API, bump the
SOVERSIONto0.1.1. - Due to the breaking change of API, bump the plug-in
API_VERSIONto5.
- Due to the breaking change of API, bump the
- [Memory64]
- feat: support wasm memory64 proposal in interpreter and AOT/JIT
- feat(api): introduce limit context to replace limit struct
- [CAPI]
- feat(api): add registerModule with alias name across API layers
- [Component Model]
- feat(loader): complete the loader implementation of canonical
- feat(validator): implement ComponentName parsing and validation with full spec coverage
- feat(component,validator): validate component value types, func types, and type imports
- feat(component,validator): populate instance exports and support alias-export chains
- feat(component,validator): export ascription sort-kind subtype check
- feat(component,loader): align functype binary grammar with current spec
- feat(component,loader): support i64 resource rep under memory64 proposal
- feat(component,validator): validate declaration types in component model (#4797)
- feat(component,validator): reject duplicate names on instance exprs (#4811)
- feat(component,validator): validate canonical built-ins (#4842)
- [WASI-NN]
- [Tools]
- feat(cli): add CLI option to control logging level (#4525)
- feat(loader,vm): gate AOT/JIT behaviour on RunMode and tighten dlopen scope
- [Misc]
Fixed issues:
- [CAPI]
- fix(api): add noexcept to all C API functions
- fix(api): add exception handlers at C API boundary
- fix(api): guard WasmEdge_StringCopy against null Buf (#4686)
- fix(api): typo and grammar error in WasmEdge C API docs (#4763)
- fix(api): correct parameter order of VM RegisterModuleFromImportWithAlias
- fix(api): handle null paths in C APIs (#4835)
- [Component Model]
- fix(component): use ValVariant for argument types in ToolOnComponent (#4704, #4716)
- fix(component,loader): missed set data in loading core deftype
- fix(component,validator): enforce lowercase package name per spec PR #630
- fix(component,validator): route core module externdesc and stop export double-count
- fix(component): pass correct alignment to realloc in canonical lifting (#4730)
- [Validator]
- [Loader]
- [Executor]
- fix(executor): move WaiterMap from Executor to MemoryInstance
- fix(executor): preserve nullability for externalized refs in ref.test/ref.cast (#4679)
- fix(executor): use memmove semantics for same-memory memory.copy (#4671)
- fix(executor): preserve heap type when externalizing references (#4536)
- fix(executor): synchronize HostFuncHandler callback invocation (#4508)
- fix(executor): correct memory.init error log logic (#4582)
- fix(executor): only memory address apply the uint64_t, the indices of memories still are uint32_t
- fix(executor): ref type for uninit values in table (#4764)
- fix(executor): normalize null ref types for locals and AOT (#4772)
- fix(executor): prevent silent override of error code in registerModule() & registerComponent() (#4777)
- fix(executor): reject insufficient argument count in component invoke
- fix(executor): correct WASI socket v2 fallback matching (#4832)
- fix(executor): preserve exnref payload across throw_ref
- [Runtime]
- fix(runtime): use unique_lock in StoreManager::reset() to prevent data race (#4771)
- [AOT]
- [Tools]
- fix(cli): handle invalid numeric arguments gracefully (#4602)
- fix(tools): handle exported function not found case in reactor mode (#4647)
- fix(tools): default logging level not passing (#4765)
- fix(po): reject numeric option values with trailing garbage
- fix(cli): reject insufficient arguments for invoked function
- [WASI]
- [WASI-NN]
- [Plugin]
- [Docker]
- [Examples]
- fix(example): update PluginDescriptor in getstring example (#4798)
- [Misc]
Tests:
- test(spec): add thread and wait command support in spec tests
- test: add C-API boundary test for empty strings
- test(spec): combine component model spec tests into core spec test infrastructure
- test: support component-model spec test
- test(spec): update spec test suite to 2026/03/01
- test: apply the spec tests for memory64 proposal
- test: add component model fuzz testing (#4657)
- test(component,validator): split component tests and add type validation tests
- test(component,validator): add regression tests for validator fixes
- test(component): enable func spec test and drop wrong-order entry
- fix(test): split poll socket tests to isolate flaky cycle 2 (#4747)
- fix(test): disable LTO in tensorflow plugin tests of manylinux (#4766)
- test(component): fix GCC -Wdangling-reference and gate Clang-only flags (#4813)
- test: cover RunMode behaviours and opt JIT/AOT spec tests into explicit modes
- test(executor): regression tests for exnref payload preservation
Refactored:
- refactor(loader): trick for deducing the instruction class size
- refactor(runtime): adjust the boundary printing logic for error logging
- refactor(installer): handle shell login config by OS and distro (#4453)
- refactor(WASI-Crypto): deduplicate factory functions and OpenSSL BIO helpers (#4545)
- refactor(validator): introduce typed index spaces and fix section validation
- refactor(api): introduce RunMode and the --run-mode CLI flag
- refactor(component): move AST::Component::Canonical enums to enums.inc (#4875)
Misc:
- docs: explain why ErrCode does not support parameterized messages (#4666)
- docs(roadmap): update roadmap for Q1/2026 (#4583)
- docs: add WasmEdge mentorship policy (#4519)
- docs: update CONTRIBUTING and PR template for the basic checks (#4538)
- chore(AI): provide AGENTS.md for the AI co-working toolchains (#4521)
- chore: add mentorship policy into the issue template (#4520)
- chore: add missing gitvote update from previous maintainer onboarding (#4493)
- docs: create technical review document for WasmEdge
- docs: update the technical-review.md for the latest changes
- docs(roadmap): update roadmap for Q2/2026 (#4800)
- chore: fix comment grammar sweep (#4850)
CI:
- [dependabot]
- ci(dependabot): bump github/codeql-action from 4.31.9 to 4.35.4
- ci(dependabot): bump codecov/codecov-action from 5.5.2 to 6.0.0 (#4750)
- ci(dependabot): bump actions/cache from 5.0.1 to 5.0.5
- ci(dependabot): bump cachix/install-nix-action from 31.9.0 to 31.10.6
- ci(dependabot): bump vedantmgoyal9/winget-releaser (#4721)
- ci(dependabot): bump dorny/paths-filter from 3.0.2 to 4.0.1 (#4718)
- ci(dependabot): bump actions/download-artifact from 8.0.0 to 8.0.1 (#4717)
- ci(dependabot): bump step-security/harden-runner from 2.14.0 to 2.19.1
- ci(dependabot): bump the docker group with 3 updates (#4697)
- ci(dependabot): bump docker/login-action from 3.6.0 to 4.1.0 in the docker group (#4760)
- ci(dependabot): bump docker/bake-action from 7.0.0 to 7.1.0 in the docker group (#4780)
- ci(dependabot): bump the upload-and-download-artifact group with 2 updates (#4689)
- ci(dependabot): bump actions/upload-artifact from 7.0.0 to 7.0.1
- ci(dependabot): bump crazy-max/ghaction-chocolatey from 3.4.0 to 4.0.0 (#4652)
- ci(dependabot): bump actions/setup-python from 6.1.0 to 6.2.0 (#4555)
- ci(dependabot): bump actions/checkout from 6.0.1 to 6.0.2 (#4556)
- ci(dependabot): bump actions/github-...
WasmEdge 0.17.0-rc.2
0.17.0-rc.2 (2026-05-15)
Features:
- [Version]: Bump the version of the WasmEdge shared library.
- Due to the breaking change of API, bump the
SOVERSIONto0.1.1. - Due to the breaking change of API, bump the plug-in
API_VERSIONto5.
- Due to the breaking change of API, bump the
- [Memory64]
- feat: support wasm memory64 proposal in interpreter and AOT/JIT
- feat(api): introduce limit context to replace limit struct
- [CAPI]
- feat(api): add registerModule with alias name across API layers
- [Component Model]
- feat(loader): complete the loader implementation of canonical
- feat(validator): implement ComponentName parsing and validation with full spec coverage
- feat(component,validator): validate component value types, func types, and type imports
- feat(component,validator): populate instance exports and support alias-export chains
- feat(component,validator): export ascription sort-kind subtype check
- feat(component,loader): align functype binary grammar with current spec
- feat(component,loader): support i64 resource rep under memory64 proposal
- feat(component,validator): validate declaration types in component model (#4797)
- feat(component,validator): reject duplicate names on instance exprs (#4811)
- feat(component,validator): validate canonical built-ins (#4842)
- [WASI-NN]
- [Tools]
- feat(cli): add CLI option to control logging level (#4525)
- feat(loader,vm): gate AOT/JIT behaviour on RunMode and tighten dlopen scope
- [Misc]
Fixed issues:
- [CAPI]
- fix(api): add noexcept to all C API functions
- fix(api): add exception handlers at C API boundary
- fix(api): guard WasmEdge_StringCopy against null Buf (#4686)
- fix(api): typo and grammar error in WasmEdge C API docs (#4763)
- fix(api): correct parameter order of VM RegisterModuleFromImportWithAlias
- fix(api): handle null paths in C APIs (#4835)
- [Component Model]
- fix(component): use ValVariant for argument types in ToolOnComponent (#4704, #4716)
- fix(component,loader): missed set data in loading core deftype
- fix(component,validator): enforce lowercase package name per spec PR #630
- fix(component,validator): route core module externdesc and stop export double-count
- fix(component): pass correct alignment to realloc in canonical lifting (#4730)
- [Validator]
- [Loader]
- [Executor]
- fix(executor): move WaiterMap from Executor to MemoryInstance
- fix(executor): preserve nullability for externalized refs in ref.test/ref.cast (#4679)
- fix(executor): use memmove semantics for same-memory memory.copy (#4671)
- fix(executor): preserve heap type when externalizing references (#4536)
- fix(executor): synchronize HostFuncHandler callback invocation (#4508)
- fix(executor): correct memory.init error log logic (#4582)
- fix(executor): only memory address apply the uint64_t, the indices of memories still are uint32_t
- fix(executor): ref type for uninit values in table (#4764)
- fix(executor): normalize null ref types for locals and AOT (#4772)
- fix(executor): prevent silent override of error code in registerModule() & registerComponent() (#4777)
- fix(executor): reject insufficient argument count in component invoke
- fix(executor): correct WASI socket v2 fallback matching (#4832)
- fix(executor): preserve exnref payload across throw_ref
- [Runtime]
- fix(runtime): use unique_lock in StoreManager::reset() to prevent data race (#4771)
- [AOT]
- [Tools]
- fix(cli): handle invalid numeric arguments gracefully (#4602)
- fix(tools): handle exported function not found case in reactor mode (#4647)
- fix(tools): default logging level not passing (#4765)
- fix(po): reject numeric option values with trailing garbage
- fix(cli): reject insufficient arguments for invoked function
- [WASI]
- [WASI-NN]
- [Plugin]
- [Docker]
- [Examples]
- fix(example): update PluginDescriptor in getstring example (#4798)
- [Misc]
Tests:
- test(spec): add thread and wait command support in spec tests
- test: add C-API boundary test for empty strings
- test(spec): combine component model spec tests into core spec test infrastructure
- test: support component-model spec test
- test(spec): update spec test suite to 2026/03/01
- test: apply the spec tests for memory64 proposal
- test: add component model fuzz testing (#4657)
- test(component,validator): split component tests and add type validation tests
- test(component,validator): add regression tests for validator fixes
- test(component): enable func spec test and drop wrong-order entry
- fix(test): split poll socket tests to isolate flaky cycle 2 (#4747)
- fix(test): disable LTO in tensorflow plugin tests of manylinux (#4766)
- test(component): fix GCC -Wdangling-reference and gate Clang-only flags (#4813)
- test: cover RunMode behaviours and opt JIT/AOT spec tests into explicit modes
- test(executor): regression tests for exnref payload preservation
Refactored:
- refactor(loader): trick for deducing the instruction class size
- refactor(runtime): adjust the boundary printing logic for error logging
- refactor(installer): handle shell login config by OS and distro (#4453)
- refactor(WASI-Crypto): deduplicate factory functions and OpenSSL BIO helpers (#4545)
- refactor(validator): introduce typed index spaces and fix section validation
- refactor(api): introduce RunMode and the --run-mode CLI flag
- refactor(component): move AST::Component::Canonical enums to enums.inc (#4875)
Misc:
- docs: explain why ErrCode does not support parameterized messages (#4666)
- docs(roadmap): update roadmap for Q1/2026 (#4583)
- docs: add WasmEdge mentorship policy (#4519)
- docs: update CONTRIBUTING and PR template for the basic checks (#4538)
- chore(AI): provide AGENTS.md for the AI co-working toolchains (#4521)
- chore: add mentorship policy into the issue template (#4520)
- chore: add missing gitvote update from previous maintainer onboarding (#4493)
- docs: create technical review document for WasmEdge
- docs: update the technical-review.md for the latest changes
- docs(roadmap): update roadmap for Q2/2026 (#4800)
- chore: fix comment grammar sweep (#4850)
CI:
- [dependabot]
- ci(dependabot): bump github/codeql-action from 4.31.9 to 4.35.4
- ci(dependabot): bump codecov/codecov-action from 5.5.2 to 6.0.0 (#4750)
- ci(dependabot): bump actions/cache from 5.0.1 to 5.0.5
- ci(dependabot): bump cachix/install-nix-action from 31.9.0 to 31.10.6
- ci(dependabot): bump vedantmgoyal9/winget-releaser (#4721)
- ci(dependabot): bump dorny/paths-filter from 3.0.2 to 4.0.1 (#4718)
- ci(dependabot): bump actions/download-artifact from 8.0.0 to 8.0.1 (#4717)
- ci(dependabot): bump step-security/harden-runner from 2.14.0 to 2.19.1
- ci(dependabot): bump the docker group with 3 updates (#4697)
- ci(dependabot): bump docker/login-action from 3.6.0 to 4.1.0 in the docker group (#4760)
- ci(dependabot): bump docker/bake-action from 7.0.0 to 7.1.0 in the docker group (#4780)
- ci(dependabot): bump the upload-and-download-artifact group with 2 updates (#4689)
- ci(dependabot): bump actions/upload-artifact from 7.0.0 to 7.0.1
- ci(dependabot): bump crazy-max/ghaction-chocolatey from 3.4.0 to 4.0.0 (#4652)
- ci(dependabot): bump actions/setup-python from 6.1.0 to 6.2.0 (#4555)
- ci(dependabot): bump actions/checkout from 6.0.1 to 6.0.2 (#4556)
- ci(dependabot): bump actions/gi...
WasmEdge 0.17.0-rc.1
0.17.0-rc.1 (2026-05-12)
Features:
- [Version]: Bump the version of the WasmEdge shared library.
- Due to the breaking change of API, bump the
SOVERSIONto0.1.1. - Due to the breaking change of API, bump the plug-in
API_VERSIONto5.
- Due to the breaking change of API, bump the
- [Memory64]
- feat: support wasm memory64 proposal in interpreter and AOT/JIT
- feat(api): introduce limit context to replace limit struct
- [CAPI]
- feat(api): add registerModule with alias name across API layers
- [Component Model]
- feat(loader): complete the loader implementation of canonical
- feat(validator): implement ComponentName parsing and validation with full spec coverage
- feat(component,validator): validate component value types, func types, and type imports
- feat(component,validator): populate instance exports and support alias-export chains
- feat(component,validator): export ascription sort-kind subtype check
- feat(component,loader): align functype binary grammar with current spec
- feat(component,loader): support i64 resource rep under memory64 proposal
- feat(component,validator): validate declaration types in component model (#4797)
- feat(component,validator): reject duplicate names on instance exprs (#4811)
- feat(component,validator): validate canonical built-ins (#4842)
- [WASI-NN]
- [Tools]
- feat(cli): add CLI option to control logging level (#4525)
- feat(loader,vm): gate AOT/JIT behaviour on RunMode and tighten dlopen scope
- [Misc]
Fixed issues:
- [CAPI]
- fix(api): add noexcept to all C API functions
- fix(api): add exception handlers at C API boundary
- fix(api): guard WasmEdge_StringCopy against null Buf (#4686)
- fix(api): typo and grammar error in WasmEdge C API docs (#4763)
- fix(api): correct parameter order of VM RegisterModuleFromImportWithAlias
- fix(api): handle null paths in C APIs (#4835)
- [Component Model]
- fix(component): use ValVariant for argument types in ToolOnComponent (#4704, #4716)
- fix(component,loader): missed set data in loading core deftype
- fix(component,validator): enforce lowercase package name per spec PR #630
- fix(component,validator): route core module externdesc and stop export double-count
- fix(component): pass correct alignment to realloc in canonical lifting (#4730)
- [Validator]
- [Loader]
- [Executor]
- fix(executor): move WaiterMap from Executor to MemoryInstance
- fix(executor): preserve nullability for externalized refs in ref.test/ref.cast (#4679)
- fix(executor): use memmove semantics for same-memory memory.copy (#4671)
- fix(executor): preserve heap type when externalizing references (#4536)
- fix(executor): synchronize HostFuncHandler callback invocation (#4508)
- fix(executor): correct memory.init error log logic (#4582)
- fix(executor): only memory address apply the uint64_t, the indices of memories still are uint32_t
- fix(executor): ref type for uninit values in table (#4764)
- fix(executor): normalize null ref types for locals and AOT (#4772)
- fix(executor): prevent silent override of error code in registerModule() & registerComponent() (#4777)
- fix(executor): reject insufficient argument count in component invoke
- fix(executor): correct WASI socket v2 fallback matching (#4832)
- [Runtime]
- fix(runtime): use unique_lock in StoreManager::reset() to prevent data race (#4771)
- [AOT]
- [Tools]
- fix(cli): handle invalid numeric arguments gracefully (#4602)
- fix(tools): handle exported function not found case in reactor mode (#4647)
- fix(tools): default logging level not passing (#4765)
- fix(po): reject numeric option values with trailing garbage
- fix(cli): reject insufficient arguments for invoked function
- [WASI]
- [WASI-NN]
- [Plugin]
- [Docker]
- [Examples]
- fix(example): update PluginDescriptor in getstring example (#4798)
- [Misc]
Tests:
- test(spec): add thread and wait command support in spec tests
- test: add C-API boundary test for empty strings
- test(spec): combine component model spec tests into core spec test infrastructure
- test: support component-model spec test
- test(spec): update spec test suite to 2026/03/01
- test: apply the spec tests for memory64 proposal
- test: add component model fuzz testing (#4657)
- test(component,validator): split component tests and add type validation tests
- test(component,validator): add regression tests for validator fixes
- test(component): enable func spec test and drop wrong-order entry
- fix(test): split poll socket tests to isolate flaky cycle 2 (#4747)
- fix(test): disable LTO in tensorflow plugin tests of manylinux (#4766)
- test(component): fix GCC -Wdangling-reference and gate Clang-only flags (#4813)
- test: cover RunMode behaviours and opt JIT/AOT spec tests into explicit modes
Refactored:
- refactor(loader): trick for deducing the instruction class size
- refactor(runtime): adjust the boundary printing logic for error logging
- refactor(installer): handle shell login config by OS and distro (#4453)
- refactor(WASI-Crypto): deduplicate factory functions and OpenSSL BIO helpers (#4545)
- refactor(validator): introduce typed index spaces and fix section validation
- refactor(api): introduce RunMode and the --run-mode CLI flag
Misc:
- docs: explain why ErrCode does not support parameterized messages (#4666)
- docs(roadmap): update roadmap for Q1/2026 (#4583)
- docs: add WasmEdge mentorship policy (#4519)
- docs: update CONTRIBUTING and PR template for the basic checks (#4538)
- chore(AI): provide AGENTS.md for the AI co-working toolchains (#4521)
- chore: add mentorship policy into the issue template (#4520)
- chore: add missing gitvote update from previous maintainer onboarding (#4493)
- docs: create technical review document for WasmEdge
- docs: update the technical-review.md for the latest changes
- docs(roadmap): update roadmap for Q2/2026 (#4800)
- chore: fix comment grammar sweep (#4850)
CI:
- [dependabot]
- ci(dependabot): bump github/codeql-action from 4.31.9 to 4.35.4
- ci(dependabot): bump codecov/codecov-action from 5.5.2 to 6.0.0 (#4750)
- ci(dependabot): bump actions/cache from 5.0.1 to 5.0.5
- ci(dependabot): bump cachix/install-nix-action from 31.9.0 to 31.10.6
- ci(dependabot): bump vedantmgoyal9/winget-releaser (#4721)
- ci(dependabot): bump dorny/paths-filter from 3.0.2 to 4.0.1 (#4718)
- ci(dependabot): bump actions/download-artifact from 8.0.0 to 8.0.1 (#4717)
- ci(dependabot): bump step-security/harden-runner from 2.14.0 to 2.19.1
- ci(dependabot): bump the docker group with 3 updates (#4697)
- ci(dependabot): bump docker/login-action from 3.6.0 to 4.1.0 in the docker group (#4760)
- ci(dependabot): bump docker/bake-action from 7.0.0 to 7.1.0 in the docker group (#4780)
- ci(dependabot): bump the upload-and-download-artifact group with 2 updates (#4689)
- ci(dependabot): bump actions/upload-artifact from 7.0.0 to 7.0.1
- ci(dependabot): bump crazy-max/ghaction-chocolatey from 3.4.0 to 4.0.0 (#4652)
- ci(dependabot): bump actions/setup-python from 6.1.0 to 6.2.0 (#4555)
- ci(dependabot): bump actions/checkout from 6.0.1 to 6.0.2 (#4556)
- ci(dependabot): bump actions/github-script from 8.0.0 to 9.0.0 (#4783)
- ci(dependabot): bump actions/labeler from 6.0.1 to 6.1.0 (#4869)
- ci(dependabot): bump GuillaumeFalourd/setup-windows10-sdk-action from 2.4 to 2.5 (#4868)
- [Run...
WasmEdge 0.16.3
0.16.3 (2026-05-04)
This is the bug fix for the 0.16.x versions.
Fixed issues:
- fix(validator): use matchType for active element segment reftype (#4814)
- fix(loader): reject non-canonical multi-byte SLEB128 blocktype (#4817)
CI:
- fix(ci): bump Fedora IWYU toolchain to llvm19 + IWYU 0.23 (#4827)
- Bumped CI dependencies
Thank all the contributors who made this release possible!
harukiki97, hydai, Yi-Ying He
If you want to build from source, please use WasmEdge-0.16.3-src.tar.gz instead of the zip or tarball provided by GitHub directly.
WasmEdge 0.17.0-alpha.5
0.17.0-alpha.5 (2026-05-07)
Features:
- [Version]: Bump the version of the WasmEdge shared library.
- Due to the breaking change of API, bump the
SOVERSIONto0.1.1. - Due to the breaking change of API, bump the plug-in
API_VERSIONto5.
- Due to the breaking change of API, bump the
- [Memory64]
- feat: support wasm memory64 proposal in interpreter and AOT/JIT
- feat(api): introduce limit context to replace limit struct
- [CAPI]
- feat(api): add registerModule with alias name across API layers
- [Component Model]
- feat(loader): complete the loader implementation of canonical
- feat(validator): implement ComponentName parsing and validation with full spec coverage
- feat(component,validator): validate component value types, func types, and type imports
- feat(component,validator): populate instance exports and support alias-export chains
- feat(component,validator): export ascription sort-kind subtype check
- feat(component,loader): align functype binary grammar with current spec
- feat(component,loader): support i64 resource rep under memory64 proposal
- feat(component,validator): validate declaration types in component model (#4797)
- feat(component,validator): reject duplicate names on instance exprs (#4811)
- feat(component,validator): validate canonical built-ins (#4842)
- [WASI-NN]
- [Tools]
- feat(cli): add CLI option to control logging level (#4525)
- feat(loader,vm): gate AOT/JIT behaviour on RunMode and tighten dlopen scope
- [Misc]
Fixed issues:
- [CAPI]
- [Component Model]
- fix(component): use ValVariant for argument types in ToolOnComponent (#4704, #4716)
- fix(component,loader): missed set data in loading core deftype
- fix(component,validator): enforce lowercase package name per spec PR #630
- fix(component,validator): route core module externdesc and stop export double-count
- [Validator]
- [Loader]
- [Executor]
- fix(executor): move WaiterMap from Executor to MemoryInstance
- fix(executor): preserve nullability for externalized refs in ref.test/ref.cast (#4679)
- fix(executor): use memmove semantics for same-memory memory.copy (#4671)
- fix(executor): preserve heap type when externalizing references (#4536)
- fix(executor): synchronize HostFuncHandler callback invocation (#4508)
- fix(executor): correct memory.init error log logic (#4582)
- fix(executor): only memory address apply the uint64_t, the indices of memories still are uint32_t
- fix(executor): ref type for uninit values in table (#4764)
- fix(executor): normalize null ref types for locals and AOT (#4772)
- fix(executor): prevent silent override of error code in registerModule() & registerComponent() (#4777)
- fix(executor): reject insufficient argument count in component invoke
- [Runtime]
- fix(runtime): use unique_lock in StoreManager::reset() to prevent data race (#4771)
- [AOT]
- [Tools]
- fix(cli): handle invalid numeric arguments gracefully (#4602)
- fix(tools): handle exported function not found case in reactor mode (#4647)
- fix(tools): default logging level not passing (#4765)
- fix(po): reject numeric option values with trailing garbage
- fix(cli): reject insufficient arguments for invoked function
- [WASI]
- [WASI-NN]
- [Plugin]
- [Docker]
- [Examples]
- fix(example): update PluginDescriptor in getstring example (#4798)
- [Misc]
Tests:
- test(spec): add thread and wait command support in spec tests
- test: add C-API boundary test for empty strings
- test(spec): combine component model spec tests into core spec test infrastructure
- test: support component-model spec test
- test(spec): update spec test suite to 2026/03/01
- test: apply the spec tests for memory64 proposal
- test: add component model fuzz testing (#4657)
- test(component,validator): split component tests and add type validation tests
- test(component,validator): add regression tests for validator fixes
- test(component): enable func spec test and drop wrong-order entry
- fix(test): split poll socket tests to isolate flaky cycle 2 (#4747)
- fix(test): disable LTO in tensorflow plugin tests of manylinux (#4766)
- test(component): fix GCC -Wdangling-reference and gate Clang-only flags (#4813)
- test: cover RunMode behaviours and opt JIT/AOT spec tests into explicit modes
Refactored:
- refactor(loader): trick for deducing the instruction class size
- refactor(runtime): adjust the boundary printing logic for error logging
- refactor(installer): handle shell login config by OS and distro (#4453)
- refactor(WASI-Crypto): deduplicate factory functions and OpenSSL BIO helpers (#4545)
- refactor(validator): introduce typed index spaces and fix section validation
- refactor(api): introduce RunMode and the --run-mode CLI flag
Misc:
- docs: explain why ErrCode does not support parameterized messages (#4666)
- docs(roadmap): update roadmap for Q1/2026 (#4583)
- docs: add WasmEdge mentorship policy (#4519)
- docs: update CONTRIBUTING and PR template for the basic checks (#4538)
- chore(AI): provide AGENTS.md for the AI co-working toolchains (#4521)
- chore: add mentorship policy into the issue template (#4520)
- chore: add missing gitvote update from previous maintainer onboarding (#4493)
- docs: create technical review document for WasmEdge
- docs: update the technical-review.md for the latest changes
- docs(roadmap): update roadmap for Q2/2026 (#4800)
CI:
- [dependabot]
- ci(dependabot): bump github/codeql-action from 4.31.9 to 4.35.2
- ci(dependabot): bump codecov/codecov-action from 5.5.2 to 6.0.0 (#4750)
- ci(dependabot): bump actions/cache from 5.0.1 to 5.0.5
- ci(dependabot): bump cachix/install-nix-action from 31.9.0 to 31.10.5
- ci(dependabot): bump vedantmgoyal9/winget-releaser (#4721)
- ci(dependabot): bump dorny/paths-filter from 3.0.2 to 4.0.1 (#4718)
- ci(dependabot): bump actions/download-artifact from 8.0.0 to 8.0.1 (#4717)
- ci(dependabot): bump step-security/harden-runner from 2.14.0 to 2.19.0
- ci(dependabot): bump the docker group with 3 updates (#4697)
- ci(dependabot): bump docker/login-action from 3.6.0 to 4.1.0 in the docker group (#4760)
- ci(dependabot): bump docker/bake-action from 7.0.0 to 7.1.0 in the docker group (#4780)
- ci(dependabot): bump the upload-and-download-artifact group with 2 updates (#4689)
- ci(dependabot): bump actions/upload-artifact from 7.0.0 to 7.0.1
- ci(dependabot): bump crazy-max/ghaction-chocolatey from 3.4.0 to 4.0.0 (#4652)
- ci(dependabot): bump actions/setup-python from 6.1.0 to 6.2.0 (#4555)
- ci(dependabot): bump actions/checkout from 6.0.1 to 6.0.2 (#4556)
- ci(dependabot): bump actions/github-script from 8.0.0 to 9.0.0 (#4783)
- [Runner]
- ci(riscv): enable RISC-V cross-compilation CI (#4542)
- ci: guard reusable workflows and jobs to avoid empty matrix jobs (#4668)
- ci: optimize s390x workflow with apt cache and Ninja (#4645)
- ci: cache homebrew deps, lld (#4600)
- ci(windows): cache LLVM and remove redundant CMake configure for WASI-NN GGML (#4580)
- ci: fix Windows GGML performance by forcing Release build (#4578)
- ci: bump lineguard to 0.1.7 (#4627)
- ci: symbol exposure check...
WasmEdge 0.16.3-alpha.1
0.16.3-alpha.1 (2026-05-04)
This is the bug fix for the 0.16.x versions.
Fixed issues:
- fix(validator): use matchType for active element segment reftype (#4814)
- fix(loader): reject non-canonical multi-byte SLEB128 blocktype (#4817)
CI:
- fix(ci): bump Fedora IWYU toolchain to llvm19 + IWYU 0.23 (#4827)
- Bumped CI dependencies
Thank all the contributors who made this release possible!
harukiki97, hydai, Yi-Ying He
If you want to build from source, please use WasmEdge-0.16.3-alpha.1-src.tar.gz instead of the zip or tarball provided by GitHub directly.
WasmEdge 0.17.0-alpha.4
0.17.0-alpha.4 (2026-04-20)
Features:
- [Version]: Bump the version of the WasmEdge shared library.
- Due to the breaking change of API, bump the
SOVERSIONto0.1.1. - Due to the breaking change of API, bump the plug-in
API_VERSIONto5.
- Due to the breaking change of API, bump the
- [Memory64]
- feat: support wasm memory64 proposal in interpreter and AOT/JIT
- feat(api): introduce limit context to replace limit struct
- [CAPI]
- feat(api): add registerModule with alias name across API layers
- [Component Model]
- feat(loader): complete the loader implementation of canonical
- feat(validator): implement ComponentName parsing and validation with full spec coverage
- feat(component,validator): validate component value types, func types, and type imports
- feat(component,validator): populate instance exports and support alias-export chains
- feat(component,validator): export ascription sort-kind subtype check
- feat(component,loader): align functype binary grammar with current spec
- feat(component,loader): support i64 resource rep under memory64 proposal
- [WASI-NN]
- [Tools]
- feat(cli): add CLI option to control logging level (#4525)
- [Misc]
Fixed issues:
- [CAPI]
- [Component Model]
- fix(component): use ValVariant for argument types in ToolOnComponent (#4704, #4716)
- fix(component,loader): missed set data in loading core deftype
- fix(component,validator): enforce lowercase package name per spec PR #630
- fix(component,validator): route core module externdesc and stop export double-count
- [Validator]
- fix(validator): wrong jump end offset of try_table
- fix(validator): handle unreachable type in ref.test/ref.cast validation (#4669)
- [Loader]
- [Executor]
- fix(executor): move WaiterMap from Executor to MemoryInstance
- fix(executor): preserve nullability for externalized refs in ref.test/ref.cast (#4679)
- fix(executor): use memmove semantics for same-memory memory.copy (#4671)
- fix(executor): preserve heap type when externalizing references (#4536)
- fix(executor): synchronize HostFuncHandler callback invocation (#4508)
- fix(executor): correct memory.init error log logic (#4582)
- fix(executor): only memory address apply the uint64_t, the indices of memories still are uint32_t
- fix(executor): ref type for uninit values in table (#4764)
- fix(executor): normalize null ref types for locals and AOT (#4772)
- fix(executor): prevent silent override of error code in registerModule() & registerComponent() (#4777)
- [Runtime]
- fix(runtime): use unique_lock in StoreManager::reset() to prevent data race (#4771)
- [AOT]
- [Tools]
- [WASI]
- [WASI-NN]
- [Plugin]
- [Docker]
- [Examples]
- fix(example): update PluginDescriptor in getstring example (#4798)
- [Misc]
- fix(common): correct uint128 output for fmt on Windows
- fix(common): remove invalid specialization for uint128 (#4796)
- fix(misc): resolve warnings on Windows clang-cl
Tests:
- test(spec): add thread and wait command support in spec tests
- test: add C-API boundary test for empty strings
- test(spec): combine component model spec tests into core spec test infrastructure
- test: support component-model spec test
- test(spec): update spec test suite to 2026/03/01
- test: apply the spec tests for memory64 proposal
- test: add component model fuzz testing (#4657)
- test(component,validator): split component tests and add type validation tests
- test(component,validator): add regression tests for validator fixes
- test(component): enable func spec test and drop wrong-order entry
- fix(test): split poll socket tests to isolate flaky cycle 2 (#4747)
- fix(test): disable LTO in tensorflow plugin tests of manylinux (#4766)
Refactored:
- refactor(loader): trick for deducing the instruction class size
- refactor(runtime): adjust the boundary printing logic for error logging
- refactor(installer): handle shell login config by OS and distro (#4453)
- refactor(WASI-Crypto): deduplicate factory functions and OpenSSL BIO helpers (#4545)
- refactor(validator): introduce typed index spaces and fix section validation
Misc:
- docs: explain why ErrCode does not support parameterized messages (#4666)
- docs(roadmap): update roadmap for Q1/2026 (#4583)
- docs: add WasmEdge mentorship policy (#4519)
- docs: update CONTRIBUTING and PR template for the basic checks (#4538)
- chore(AI): provide AGENTS.md for the AI co-working toolchains (#4521)
- chore: add mentorship policy into the issue template (#4520)
- chore: add missing gitvote update from previous maintainer onboarding (#4493)
CI:
- [dependabot]
- ci(dependabot): bump github/codeql-action from 4.31.9 to 4.35.1
- ci(dependabot): bump codecov/codecov-action from 5.5.2 to 6.0.0 (#4750)
- ci(dependabot): bump actions/cache from 5.0.1 to 5.0.4
- ci(dependabot): bump cachix/install-nix-action from 31.9.0 to 31.10.4
- ci(dependabot): bump vedantmgoyal9/winget-releaser (#4721)
- ci(dependabot): bump dorny/paths-filter from 3.0.2 to 4.0.1 (#4718)
- ci(dependabot): bump actions/download-artifact from 8.0.0 to 8.0.1 (#4717)
- ci(dependabot): bump step-security/harden-runner from 2.14.0 to 2.17.0
- ci(dependabot): bump the docker group with 3 updates (#4697)
- ci(dependabot): bump docker/login-action from 3.6.0 to 4.1.0 in the docker group (#4760)
- ci(dependabot): bump docker/bake-action from 7.0.0 to 7.1.0 in the docker group (#4780)
- ci(dependabot): bump the upload-and-download-artifact group with 2 updates (#4689)
- ci(dependabot): bump actions/upload-artifact from 7.0.0 to 7.0.1
- ci(dependabot): bump crazy-max/ghaction-chocolatey from 3.4.0 to 4.0.0 (#4652)
- ci(dependabot): bump actions/setup-python from 6.1.0 to 6.2.0 (#4555)
- ci(dependabot): bump actions/checkout from 6.0.1 to 6.0.2 (#4556)
- ci(dependabot): bump actions/github-script from 8.0.0 to 9.0.0 (#4783)
- [Runner]
- ci(riscv): enable RISC-V cross-compilation CI (#4542)
- ci: guard reusable workflows and jobs to avoid empty matrix jobs (#4668)
- ci: optimize s390x workflow with apt cache and Ninja (#4645)
- ci: cache homebrew deps, lld (#4600)
- ci(windows): cache LLVM and remove redundant CMake configure for WASI-NN GGML (#4580)
- ci: fix Windows GGML performance by forcing Release build (#4578)
- ci: bump lineguard to 0.1.7 (#4627)
- ci: symbol exposure checking
- ci: update labeler.yml for some new categories (#4584)
- refactor(ci): optimize workflows (#4544)
- fix(ci): cache lld pre-built on macOS workflow (#4753)
- fix(ci): new content for wasi-testsuite (#4751)
- fix(ci): update SOVERSION for openwrt build (#4792)
Thank all the contributors who made this release possible!
Asish Kumar, Asmit Kumar Rai, Barry, Digo, Divyansh Khatri, Han-Wen Tsao, hydai, Kajal Jotwani, Karan Lokchandani, Khushi-Singh, Lîm Tsú-thuàn, Meet Jain, Mrinal Chaturvedi, Parship Chowdhury, Piyush Kumar, Samarth Jain, SANCHIT KUMAR, Sankalp Jha, Shen-Ta Hsieh(BestSteve), Siddhartha Mondal, Sourav Kumar, SriramB, Tushar Gupta, Vikas_pal8923, Vishal Malyan, Wang-Yang Li, Yi Liu, Yi-Ying He
If you want to build from source, please use WasmEdge-0.17.0-alpha.4-src.tar.gz instead of the zip or tarball provided by GitHub directly.
WasmEdge 0.17.0-alpha.3
0.17.0-alpha.3 (2026-04-15)
Features:
- [Version]: Bump the version of the WasmEdge shared library.
- Due to the breaking change of API, bump the
SOVERSIONto0.1.1. - Due to the breaking change of API, bump the plug-in
API_VERSIONto5.
- Due to the breaking change of API, bump the
- [Memory64]
- feat: support wasm memory64 proposal in interpreter and AOT/JIT
- feat(api): introduce limit context to replace limit struct
- [CAPI]
- feat(api): add registerModule with alias name across API layers
- [Component Model]
- feat(loader): complete the loader implementation of canonical
- feat(validator): implement ComponentName parsing and validation with full spec coverage
- [WASI-NN]
- [Tools]
- feat(cli): add CLI option to control logging level (#4525)
- [Misc]
Fixed issues:
- [CAPI]
- [Component Model]
- fix(component): return ValVariant for numeric argument parsing in ToolOnComponent (#4716)
- fix(component): update ToolOnComponent to use ValVariant for argument types (#4704)
- fix(component,loader): missed set data in loading core deftype
- fix(component,validator): enforce lowercase package name per spec PR #630
- [Validator]
- fix(validator): wrong jump end offset of try_table
- fix(validator): handle unreachable type in ref.test/ref.cast validation (#4669)
- [Loader]
- [Executor]
- fix(executor): move WaiterMap from Executor to MemoryInstance
- fix(executor): preserve nullability for externalized refs in ref.test/ref.cast (#4679)
- fix(executor): use memmove semantics for same-memory memory.copy (#4671)
- fix(executor): preserve heap type when externalizing references (#4536)
- fix(executor): synchronize HostFuncHandler callback invocation (#4508)
- fix(executor): correct memory.init error log logic (#4582)
- fix(executor): only memory address apply the uint64_t, the indices of memories still are uint32_t
- fix(executor): ref type for uninit values in table (#4764)
- fix(executor): normalize null ref types for locals and AOT
- fix(executor): prevent silent override of error code in registerModule() & registerComponent() (#4777)
- [Runtime]
- fix(runtime): use unique_lock in StoreManager::reset() to prevent data race (#4771)
- [AOT]
- [Tools]
- [WASI]
- [WASI-NN]
- [Plugin]
- [Docker]
- [Misc]
- fix(common): fix uint128 output for fmt on windows
- fix(misc): fix warnings on Windows clang-cl
Tests:
- feat(test): add thread and wait command support in spec tests
- test: add C-API boundary test for empty strings
- test(spec): combine component model spec tests into core spec test infrastructure
- test: support component-model spec test
- test(spec): update spec test suite to 2026/03/01
- test: apply the spec tests for memory64 proposal
- test: add component model fuzz testing (#4657)
- fix(test): split poll socket tests to isolate flaky cycle 2 (#4747)
- fix(test): disable LTO in tensorflow plugin tests of manylinux
Refactored:
- refactor(loader): trick for deducing the instruction class size
- refactor(runtime): adjust the boundary printing logic for error logging
- refactor(installer): handle shell login config by OS and distro (#4453)
- refactor(WASI-Crypto): deduplicate factory functions and OpenSSL BIO helpers (#4545)
- refactor(validator): introduce typed index spaces and fix section validation
Misc:
- docs: explain why ErrCode does not support parameterized messages (#4666)
- docs(roadmap): update roadmap for Q1/2026 (#4583)
- docs: add WasmEdge mentorship policy (#4519)
- docs: update CONTRIBUTING and PR template for the basic checks (#4538)
- chore(AI): provide AGENTS.md for the AI co-working toolchains (#4521)
- chore: add mentorship policy into the issue template (#4520)
- chore: add missing gitvote update from previous maintainer onboarding (#4493)
CI:
- [dependabot]
- ci(dependabot): bump github/codeql-action from 4.31.9 to 4.35.1
- ci(dependabot): bump codecov/codecov-action from 5.5.2 to 6.0.0 (#4750)
- ci(dependabot): bump actions/cache from 5.0.1 to 5.0.4
- ci(dependabot): bump cachix/install-nix-action from 31.9.0 to 31.10.4
- ci(dependabot): bump vedantmgoyal9/winget-releaser (#4721)
- ci(dependabot): bump dorny/paths-filter from 3.0.2 to 4.0.1 (#4718)
- ci(dependabot): bump actions/download-artifact from 8.0.0 to 8.0.1 (#4717)
- ci(dependabot): bump step-security/harden-runner from 2.14.0 to 2.17.0
- ci(dependabot): bump the docker group with 3 updates (#4697)
- ci(dependabot): bump docker/login-action from 3.6.0 to 4.1.0 in the docker group (#4760)
- ci(dependabot): bump docker/bake-action from 7.0.0 to 7.1.0 in the docker group (#4780)
- ci(dependabot): bump the upload-and-download-artifact group with 2 updates (#4689)
- ci(dependabot): bump actions/upload-artifact from 7.0.0 to 7.0.1
- ci(dependabot): bump crazy-max/ghaction-chocolatey from 3.4.0 to 4.0.0 (#4652)
- ci(dependabot): bump actions/setup-python from 6.1.0 to 6.2.0 (#4555)
- ci(dependabot): bump actions/checkout from 6.0.1 to 6.0.2 (#4556)
- ci(dependabot): bump actions/github-script from 8.0.0 to 9.0.0 (#4783)
- [Runner]
- ci(riscv): enable RISC-V cross-compilation CI (#4542)
- ci: guard reusable workflows and jobs to avoid empty matrix jobs (#4668)
- ci: optimize s390x workflow with apt cache and Ninja (#4645)
- ci: cache homebrew deps, lld (#4600)
- ci(windows): cache LLVM and remove redundant CMake configure for WASI-NN GGML (#4580)
- ci: fix Windows GGML performance by forcing Release build (#4578)
- ci: bump lineguard to 0.1.7 (#4627)
- ci: symbol exposure checking
- ci: update labeler.yml for some new categories (#4584)
- refactor(ci): optimize workflows (#4544)
- fix(ci): cache lld pre-built on macOS workflow (#4753)
- fix(ci): new content for wasi-testsuite (#4751)
- fix(ci): update SOVERSION for openwrt build (#4792)
Thank all the contributors who made this release possible!
Asmit Kumar Rai, Barry, Digo, Divyansh Khatri, grorge, Han-Wen Tsao, hydai, Kajal Jotwani, Karan Lokchandani, Khushi-Singh, LFsWang, Lîm Tsú-thuàn, Meet Jain, Mrinal Chaturvedi, Parship Chowdhury, Piyush Kumar, Samarth Jain, SANCHIT KUMAR, Sankalp Jha, Shen-Ta Hsieh(BestSteve), Sourav Kumar, SriramB, Tushar Gupta, Vikas_pal8923, Vishal Malyan, Wang-Yang, Li, Yi Liu, Yi-Ying He
If you want to build from source, please use WasmEdge-0.17.0-alpha.3-src.tar.gz instead of the zip or tarball provided by GitHub directly.
WasmEdge 0.16.2
0.16.2 (2026-04-14)
This is the bug fix for 0.16.x versions.
Fixed issues:
- fix: refactor Poller context handling to use pointer instead of wrapper (#4509)
- fix(validator): wrong jump end offset of try_table
- fix(api): guard WasmEdge_StringCopy against null Buf (#4686)
- fix(cli): handle invalid numeric arguments gracefully (#4602)
- fix(compiler): error on LLVM-22 (#4696)
- fix(executor): ref type for uninit values in table (#4764)
- fix(executor): normalize null ref types for locals and AOT (#4772)
- fix(test): disable LTO in tensorflow plugin tests of manylinux (#4766)
- fix(test): split poll socket tests to isolate flaky cycle 2 (#4747)
Tests:
- test: add C-API boundary test for empty strings
CI:
- fix(ci): fix riscv CI fail
- fix(ci): dependency installation on riscv (#4722)
- fix(ci): cache lld pre-built on macOS workflow (#4753)
- fix(ci): new content for wasi-testsuite (#4751)
- refactor(ci): optimize workflows (#4544)
- Bumped CI dependencies
Thank all the contributors who made this release possible!
Divyansh Khatri, Karan Lokchandani, Meet Jain, SANCHIT KUMAR, SriramB, Vishal Malyan, Wang-Yang Li, Yi-Ying He, hydai, piyush kumar
If you want to build from source, please use WasmEdge-0.16.2-src.tar.gz instead of the zip or tarball provided by GitHub directly.
WasmEdge 0.16.2-alpha.2
0.16.2-alpha.2 (2026-04-14)
This is the hot fix for 0.16.x versions.
Fixed issues:
- fix: refactor Poller context handling to use pointer instead of wrapper (#4509)
- fix(validator): wrong jump end offset of try_table
- fix(api): guard WasmEdge_StringCopy against null Buf (#4686)
- fix(cli): handle invalid numeric arguments gracefully (#4602)
- fix(compiler): error on LLVM-22 (#4696)
- fix(executor): ref type for uninit values in table (#4764)
- fix(executor): normalize null ref types for locals and AOT (#4772)
- fix(test): disable LTO in tensorflow plugin tests of manylinux (#4766)
- fix(test): split poll socket tests to isolate flaky cycle 2 (#4747)
Tests:
- test: add C-API boundary test for empty strings
CI:
- fix(ci): fix riscv CI fail
- fix(ci): dependency installation on riscv (#4722)
- fix(ci): cache lld pre-built on macOS workflow (#4753)
- fix(ci): new content for wasi-testsuite (#4751)
- refactor(ci): optimize workflows (#4544)
- Bumped CI dependencies
Thank all the contributors who made this release possible!
Divyansh Khatri, Karan Lokchandani, Meet Jain, SANCHIT KUMAR, SriramB, Vishal Malyan, Wang-Yang Li, Yi-Ying He, hydai, piyush kumar
If you want to build from source, please use WasmEdge-0.16.2-alpha.2-src.tar.gz instead of the zip or tarball provided by GitHub directly.