Back to Wasmedge

.CurrentChangelog

.CurrentChangelog.md

0.17.011.3 KB
Original Source

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 SOVERSION to 0.1.1.
    • Due to the breaking change of API, bump the plug-in API_VERSION to 5.
  • [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]
    • feat(wasi-nn,piper): update the WASI-NN Piper plugin due to upstream changes (#4443)
    • feat(wasi-nn,ggml): support HIP backend for llama.cpp (#4552)
    • feat(wasi-nn,ggml): upgrade llama.cpp version to b8757
    • feat(wasi-nn,ggml): redirect multi model log (#4801)
  • [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]
    • feat(hash): upgrade rapidhash to v3 Nano variant (#4734)
    • feat(android): remove gradle-wrapper.jar and bootstrap wrapper (#4505)
    • feat(android): move app from utils to examples (#4499)
    • feat(docker): add libpiper to plugin-deps image

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]
    • fix(validator): wrong jump end offset of try_table
    • fix(validator): handle unreachable type in ref.test/ref.cast validation (#4669)
    • fix(validator): use matchType for active element segment reftype (#4814)
  • [Loader]
    • fix(loader): handle try_table catch flag syntax (#4676)
    • fix(loader,component): support component inline export names and core tag sort in loader (#4745)
    • fix(loader): reject non-canonical multi-byte SLEB128 blocktype (#4817)
  • [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]
    • fix(llvm): serialize LLD linker invocations with mutex
    • fix(compiler): error on LLVM-22 (#4696)
    • fix(aot): align the NaN propagation order in {f32x4,f64x2}.max/min with the interpreter mode (#4522)
  • [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]
    • fix(wasi): resolve 100% CPU usage on macOS due to clock mismatch (#4470)
    • fix(wasi): return ERRNO BADF error when try to sync a directory (#4572)
    • fix(wasi): refactor Poller context handling to use pointer instead of wrapper (#4509)
    • fix(wasi): initialize Filestat to silence MSVC C4701 warning (#4852)
  • [WASI-NN]
    • fix(wasi-nn,bitnet): out-of-bounds array access in unload() function (#4531)
    • fix(wasi-nn): disable shallow clone for BitNet dependency (#4638)
    • fix(wasi-nn): install espeak-ng-data for Piper backend tests in CI (#4634)
  • [Plugin]
    • fix(plugin,process): correct timeout unit conversion (#4678)
    • fix(plugin,ffmpeg): clamp guest-provided lengths when copying FFmpeg C strings (#4478)
    • fix(plugin,zlib): standardize missing memory instance handling (#4506)
    • fix(plugin,ffmpeg): remove duplicate directory creation check (#4484)
  • [Docker]
    • fix(docker): build libpiper statically (#4565)
    • fix(docker): build libpiper statically in install script (#4535)
    • fix(docker): manually link espeak-ng and ucd static libs for Piper backend (#4622)
  • [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
    • fix(typo): some typo in comments (#4810)

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-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)
  • [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)
    • fix(ci): bump Fedora IWYU toolchain to llvm19 + IWYU 0.23 (#4827)
    • fix(ci): backward support for old tap in older brew LLVM version (#4845)

Thank all the contributors who made this release possible!

Abdelrahman Emad, alabulei1, Asish Kumar, Asmit Kumar Rai, Barry, Digo, Divyansh Khatri, Han-Wen Tsao, harukiki97, hydai, Kajal Jotwani, Karan Lokchandani, Khushi-Singh, LuaLighter, Lîm Tsú-thuàn, Meet Jain, Mrinal Chaturvedi, Parship Chowdhury, Piyush Kumar, Pranjal Kole, 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-src.tar.gz instead of the zip or tarball provided by GitHub directly.