github WasmEdge/WasmEdge 0.17.0-alpha.1
WasmEdge 0.17.0-alpha.1

pre-release7 hours ago

0.17.0-alpha.1 (2026-03-27)

Features:

  • [Memory64]
    • feat: initial support of wasm memory64 proposal
    • feat(misc): introduce addr_t for address type
    • feat: completion of wasm memory64 proposal in interpreter
    • feat(compiler): implement memory64 proposal in AOT/JIT
    • feat(api): introduce limit context to replace limit struct
    • feat(misc): remove the addr_t type and use uint64_t instead
  • [CAPI]
    • feat(runtime): add registerModule with alias name across API layers
  • [Component Model]
    • feat(validator): add ComponentName class and parsing logic
    • feat(validator): enhance component name handling with duplicate name checks
    • feat(validator): implement AddImportedName logic in ComponentContext
    • feat(component,loader): complete the loader implementation of canonical
  • [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)
  • [Tools]
    • feat(cli): add CLI option to control logging level (#4525)
  • [Misc]
    • feat(hash): upgrade rapidhash to v3 Nano variant (#4734)
    • feat(android): remove gradle-wrapper.jar and bootstrap wrapper (#4505)
    • feat(examples/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)
  • [Component Model]
    • fix(component): return ValVariant for numeric argument parsing in ToolOnComponent (#4716)
    • fix(driver): update ToolOnComponent to use ValVariant for argument types (#4704)
  • [Validator]
    • fix(validator): wrong jump end offset of try_table
    • fix(validator): handle unreachable type in ref.test/ref.cast validation (#4669)
  • [Loader]
    • fix(loader): handle try_table catch flag syntax (#4676)
  • [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: correct memory.init error log logic (#4582)
    • fix: only memory address apply the uint64_t, the indices of memories still are uint32_t
  • [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)
  • [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: refactor Poller context handling to use pointer instead of wrapper (#4509)
  • [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(plugins/ffmpeg): clamp guest-provided lengths when copying FFmpeg C strings (#4478)
    • fix(plugin/zlib): standardize missing memory instance handling (#4506)
    • fix(utils/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)
  • [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)

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)

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.34.1
    • ci(dependabot): bump codecov/codecov-action from 5.5.2 to 5.5.3 (#4737)
    • 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.1
    • 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.16.0
    • ci(dependabot): bump the docker group with 3 updates (#4697)
    • ci(dependabot): bump the upload-and-download-artifact group with 2 updates (#4689)
    • ci(dependabot): bump crazy-max/ghaction-chocolatey from 3.4.0 to 4.0.0 (#4652)
    • ci(dependabot): bump docker/login-action from 3.6.0 to 3.7.0 in the docker group (#4605)
    • 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)
  • [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)

Thank all the contributors who made this release possible!

Asmit Kumar Rai, Digo, Divyansh Khatri, hydai, Kajal Jotwani, Karan Lokchandani, Khushi-Singh, Lîm Tsú-thuàn, Meet Jain, 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.1-src.tar.gz instead of the zip or tarball provided by GitHub directly.

Don't miss a new WasmEdge release

NewReleases is sending notifications on new releases.