Breaking changes
New features
Bug fixes
- fix(ios): Remove
float-abi
flag (#3889) - Fix out of bounds issues after memory.grow on non-aot non-threads builds (#3872)
- Fix out of bounds issue in is_native_addr_in_shared_heap function (#3886)
- Fix mmap flags for AOT loader on non-Linux SGX platforms (#3890)
- fix(uwp): Gate NTSTATUS definition behind WINAPI_PARTITION_DESKTOP for UWP builds (#3897)
- Fix linked global initialization in multimodule (#3905)
- Correct the table index calculation in aot_instantiation (#3903)
- Fix a leak in wasm_loader_emit_br_info (#3900)
- Check possible integer overflow in aot memory boundary check (#3920)
- Fix CI wamr-ide error (#3913)
- Fix WASI Path Mapping Processing (#3923)
- Use plain assignment rather than bh_memcpy_s (#3924)
- Fix loader small bug (#3928)
- don't return an uninitialized trap if argv_to_results fails (#3935)
- support WASM_FUNCREF return type in argv_to_results (#3936)
- Fix incorrect assignment in win_file.c (#3939)
- Fix aot table instantiate (#3946)
- set alignment 4 when loading multi return value (#3955)
- Only access Zephyr thread stats info when it's available (#3962)
- top-level cmakefile: fix macOS build (#3968)
- Handle a new scenario where an item is both exported and imported. (#3984)
- platform/nuttx: Flush icache/dcache properly (#4147)
- fix(runtest.py): A workaround to bypass errors that occur when deleting temporary files (#4093)
- Fix build issues when compiling WAMRC as a cross-compiler (#4112)
- include bh_platform.h (#4135)
- Fix iwasm build error when WAMR_BUILD_WASI_NN enabled (#4138)
- avoid Windows perform newline translation (#4128)
- fix: correct typos and improve comments across multiple files by codespell (#4116)
- fix: fix load aarch64 aot failed (#4114)
- wasm_loader allocates more spaces for elements (#4099)
- fix: add dispose of the debug information builder when destroying compilation context (#4105)
- prevent mmap size overflow on 32 bit platform for memory.grow (#4071)
- fix: when load aot init expr,no type_idx set. (#4094)
- fix(aot_emit_aot_file): prevent buffer emission for zero byte_count (#4095)
- fix(build_llvm_libraries.yml): Correct script path for build_llvm.py (#4089)
- fix(unit-test): libc_builtin_test issues (#4073)
- [gc] Subtyping fix (#4075)
- fix(build_llvm.py): clean up whitespace and formatting in build script (#4087)
- Unit test:type matching issue and code redundancy (#4079)
- fix(aot): ensure value_cmp does not exceed br_count in branch table compilation (#4065)
- In wasm32, fix potential conversion overflow when enlarging 65536 pages (#4064)
- Use wasm32-wasip1 instead of wasm32-wasi target for rust code (#4057)
- Update Rust target from 'wasm32-wasi' to 'wasm32-wasip1' in CI (#4050)
- Fix wasm loader check data segment count (#4039)
- Fix table index calculations in wasm_loader and wasm_mini_loader (#4004)
- Ensure **heap_base and **data_end global indices are validated against import count (#3996)
- fix format specifier warning on 32bit builds (#4177)
- Remove indirect-load for constants on Xtensa Target to improve performance (#4162)
- cmake: Enhance target selection for ARM architectures with FPU (#4185)
- Add import memory/table flag assert check for miniloader (#4179)
- Fix few integer overflowing (#4161)
- prevent frame_offset underflow in wasm_loader (#4165)
- fix: Remove unused variables in SIMD_v128_const case (#4197)
- fix false native stack overflow detections with HW_BOUND_CHECK (#4196)
- Keep fix the CMake compatibility issue (#4180)
- Fix the error of AOT mode on the "i386-windows-msvc" platform (#4183)
- debug-engine: fix a few type mismatches (#4189)
- Replace CMAKE_CURRENT_FUNCTION_LIST_DIR (#4200)
- fix potential memory leak (#4205)
- Add missing V128 handling in WASM_OP_BR (#4203)
- fix print_help when libc wasi is enabled (#4218)
- LLVM: don't verify instcombine fixpoint (#4219)
- LLVMCreateTargetMachineWithOpts: disable large data (#4220)
- set default value of
WAMR_BUILD_REF_TYPES
to 1 in standalone cases (#4227) - platform/nuttx: Fix dcache operation in os_dcache_flush (#4225)
- fix return types of our 64-bit clz/ctz/popcount intrinsics (#4238)
- riscv: avoid llvm.cttz.i32/i64 for xip (#4248)
- Add overflow check for preserved local offset in preserve_referenced_local (#4211)
- aot_resolve_object_relocation_group: adapt to LLVM 16 (#4250)
- initialize WASI stdio handles to invalid for better error handling (#4092)
- Modifying build flags to ensure libiwasm.so is built (#4255)
- Stop pretending to support extended-const proposal (#4258)
- Improve readlinkat_dup() to handle symlink size correctly (#4229)
- fix: improve error handling of snprintf() in send_thread_stop_status() (#4234)
- Don't call os_thread_get_stack_boundary unless we actually use it (#4264)
- avoid access null pointer (#4262)
- disable compiler to prevent get_current_target() crash (#4251)
- product-mini/platforms/windows: set C++17 explicitly (#4269)
- fix buf checking in load_table_section (#4276)
- Set CMAKE_OSX_SYSROOT when building lldb (#4274)
- Add select 128 (#4236)
Enhancements
- Refine looking up aot function with index (#3882)
- Wasm loader enhancement: check code size in code entry (#3892)
- Refactor AOT loader to support compatible versions (#3891)
- GlobalValueSet was moved to IRPartitionLayer recently, but we have a local definition anyway (#3899)
- Support external toolchain on Windows for aot compiler (#3911)
- Drop declarative elements on module instantiation (#3922)
- add testcases for shared heap and fix POP_MEM_OFFSET of memory64 (#3916)
- Enable ref types by default (#3894)
- Update README.md to clarify Windows toolchain support and ESP-IDF reference (#3917)
- add thread cpu time for zephyr (#3937)
- Improvements for platform thread APIs on Windows and Zephyr (#3941)
- Refactor SConscript and add file checks in iwasm.c (#3945)
- Consume the placeholders that were put when emitting table info (#3940)
- wasm_export.h: Use "default" visibility for gcc and clang (#3957)
- [fuzzing] Enable instantiation (#3958)
- use a random secret key (#3971)
- CMakeLists.txt: Do not require C++ (#3956)
- add reference type support by default for darwin to support WASI-SDK-25 (#3978)
- top-level cmake: link llvm libraries to our shared library (#3973)
- Set thread information earlier in exec_env creation (#3967)
- Break aot_create_comp_data into small functions (#3987)
- Optimize memory initialization handling in AOT loader (#3983)
- nuttx: remove the up_x API for kernel build (#4154)
- Expose WAMR_BUILD_GC_HEAP_SIZE_DEFAULT as a CMake option (#4124)
- Use log instead of using assertion in aot loader (#4119)
- feat: use C linkage in aot_comp_option.h for C++ embeding (#4106)
- Cmake improvements (#4076)
- feat: add support for EXTERNREF value type and enable AOT validator in fuzz tests (#4083)
- build_llvm.py: Allow to build xtensa target on non-xtensa host (#4086)
- Add a conditional check for the macro STDC_VERSION (#4080)
- [fuzzing] execute every exported function (#3959)
- Update memory allocation functions to use allocator user data (#4043)
- Add versioning support and update CMake configuration (#3933)
- Show wasm proposals status during compilation and execution (#3989)
- add a validator for aot module (#3995)
- Synchronize the GC spec tests to the commit from December 9. 2024. (#4022)
- Refine getting const offsets in wasm loader of fast-interp (#4012)
- fixes for compiling on windows (#4026)
- .github: Add shared lib builds (#3975)
- Error message improvement (#4000)
- Refine read leb int wasm loader of fast interpreter (#4017)
- Enable shrunk memory by default and add related configurations (#4008)
- Add documentation regarding security issues and the status of Wasm proposals (#3972)
- Improve stack consistency by ensuring sufficient space for dummy offsets (#4011)
- Check whether related table has funcref elem in opcode call_indirect (#3999)
- [fuzzing] Use software bound-check during fuzzing (#4003)
- Add an example of how to embed WAMR in Zephyr user mode (#3998)
- Update cmake min to 3.14 (#4175)
- aot: add new u64 intrinsics (#4168)
- Refactor Dockerfile and update .dockerignore for wasi-nn tests; adjust map-dir parameters in smoke test script (#4158)
- improve variable naming and code clarity in SIMD operations (#4157)
- Raise CI runner to ubuntu 22.04 (#4191)
- Remove the dlen to optimize it. (#4193)
- Add missing casts and improve error handling in performance map functions (#4202)
- Raise wasi-sdk to 25 and wabt to 1.0.37 (#4187)
- wamrc: add --disable-llvm-jump-tables option (#4224)
- feat(fuzz): add a new fuzzing target about aot compiler (#4121)
- bypass vptr santizier (#4231)
- use a selected llvm libs list to replace the full list (#4232)
- teach aot emitter/loader about .srodata and .srodata.cst* sections (#4240)
- run_clang_format_diff: mention homebrew for clang-format installation (#4237)
- Use --target to pass a triple in wamrc (#4199)
- samples/wasm-c-api: skip aot compilation unless necessary (#4239)
- samples/wasm-c-api: remove unused valgrind detection (#4249)
- More detail to python setup, and fixed small typo (#4247)
- JIT: don't join worker threads twice (#4252)
- aot_resolve_object_relocation_group: adapt to LLVM 19 (#4254)
- build-scripts/build_llvm.py: bump to llvm 18 (#4259)
- CI: make macos' build_samples_wasm_c_api similar to ubuntu (#4253)
- Refactor fast-interpreter SIMD compilation flags (#4261)
- Bypass wamr_ide-related components from the release process. (#4268)
- Check for WASM_ENABLE_SIMDE in a couple more places (#4266)
- Add error handling for sgx ci (#4222)
Security Issues
- Add validation for old_path in wasi_path_symlink (# CVE-2025-43853)
Others
- Exclude fuzz test python and npm packages in scoreboard scan (#3871)
- Bump AOT_CURRENT_VERSION for WAMR 2.x (gc, memory64) (#3880)
- Add Tianlong into code owners (#3970)
- build(deps): Bump actions/upload-artifact from 4.4.3 to 4.5.0 (#3981)
- docs: Update build instructions suggestions for using Valgrind (#4164)
- test: temporarily skip 'skip-stack-guard-page' test case (#4163)
- build(deps): Bump actions/upload-artifact from 4.6.1 to 4.6.2 (#4159)
- Update NuttX and NuttX Apps references to releases/12.9 in workflow files (#4148)
- build(deps): Bump esbuild, @vitejs/plugin-react and vite (#4149)
- build(deps): Bump ossf/scorecard-action from 2.4.0 to 2.4.1 (#4109)
- build(deps): bump github/codeql-action from 3.26.13 to 3.28.1 (#3888) (#3902)
- build(deps): Bump github/codeql-action from 3.28.10 to 3.28.11 (#4132)
- build(deps): Bump github/codeql-action from 3.28.9 to 3.28.10 (#4108)
- build(deps): Bump actions/upload-artifact from 4.6.0 to 4.6.1 (#4107)
Full Changelog: WAMR-2.2.0...WAMR-2.3.0