UWVM2 V2.0.2.1 Release Notes
UWVM2 V2.0.2.1 is a runtime-focused release that advances the WebAssembly execution pipeline with LLVM-based JIT compilation, tiered execution support, persistent JIT caching, and improved unwind handling.
Compared with V2.0.1.1, this release introduces the LLVM JIT backend as a major new execution capability. UWVM2 can now compile WebAssembly workloads to native code through LLVM, enabling higher peak performance for hot code paths while preserving the existing interpreter-oriented execution model.
Highlights
- LLVM JIT backend: Adds an LLVM-based just-in-time compiler backend for native code generation at runtime.
- Tiered LLVM JIT execution: Adds tiered execution support, allowing UWVM2 to combine fast startup behavior with optimized native execution for workloads that benefit from JIT compilation.
- LLVM JIT cache: Adds LLVM JIT cache support and enables it by default, reducing repeated compilation overhead across compatible executions.
- Unwind handling: Adds unwind support for LLVM JIT execution paths, improving runtime correctness and integration with control-flow transitions, traps, and host-side execution boundaries.
Upgrade Notes
LLVM JIT is the primary feature addition over V2.0.1.1. Builds that enable the JIT backend should ensure that the LLVM toolchain and llvm-config are available to the build environment. The JIT cache is enabled by default when LLVM JIT support is selected.
This release keeps UWVM2's existing interpreter support while extending the runtime with a more capable native execution tier for performance-sensitive WebAssembly applications.
What's Changed
- [profile] support xmake and update profile by @MacroModel in #1
- [profile] update utils by @MacroModel in #2
- [utils] support command line parameters handling by @MacroModel in #3
- [wasm] add some cmdline by @MacroModel in #4
- [ci] fix github ci by @MacroModel in #8
- [readme] add ci img by @MacroModel in #9
- [parser] add wasm structures by @MacroModel in #10
- [uwvm] support unknown-windows-msvc by @MacroModel in #12
- [docu] fix by @MacroModel in #16
- [profile] Support for legacy cxx compilation modes by @MacroModel in #20
- [profile] mv all folder to uwvm2 by @MacroModel in #22
- [parser] import section by @MacroModel in #23
- [docu] update aigc by @MacroModel in #24
- [parser] function section by @MacroModel in #26
- [parser] enhanced avx512 algorithm by @MacroModel in #27
- [docu] more detailed platforms supported by @MacroModel in #28
- [parser] fix msvc simd128 in function_section by @MacroModel in #29
- [parser] new avx2 algorithm by @MacroModel in #30
- [parser] function_section avx512vbmi2 algorithm by @MacroModel in #32
- [parser] table section by @MacroModel in #33
- [parser] memory table global section by @MacroModel in #34
- [parser] wasm1.0 by @MacroModel in #35
- [parser] custom section (name) by @MacroModel in #36
- [license] ASHP 1.0 -> ALP 2.0 by @MacroModel in #37
- [readme] uwvm2 logo by @MacroModel in #38
- [uwvm] load dl, wasm by @MacroModel in #39
- Fixes CI by @nukyan in #45
- [wasip1] fd_datasync by @MacroModel in #52
- [wasip1] fd_datasync by @MacroModel in #53
- [wasip1] fd_fdstat_set_flags by @MacroModel in #54
- [wasip1] fd_fdstat_set_rights by @MacroModel in #55
- [wasip1] fd_filestat_get by @MacroModel in #57
- [wasip1] fd_filestat_set_size by @MacroModel in #58
- [wasip1] fd_filestat_set_times by @MacroModel in #59
- [wasip1] fd_filestat_set_time supports msdos-djgpp and Windows 9x by @MacroModel in #60
- [wasip1] fd_pread by @MacroModel in #61
- [wasip1] Update most wasip1 functions by @MacroModel in #62
- [wasip1] fix fd_fdstat_set_flags by @MacroModel in #63
- [uwvm] support --wasi-mount-root by @MacroModel in #64
- [uwvm] support --wasi-mount-dir by @MacroModel in #65
- [wasip1] fd_prestat_dirname by @MacroModel in #66
- [wasip1] fd_prestat_get and fd_pwrite by @MacroModel in #67
- [wasip1] fd_read by @MacroModel in #68
- [uwvm] Methods for using NTPath on Windows by @MacroModel in #69
- [wasip1] fd_readdir by @MacroModel in #70
- [wasip1] fix fd_p* series on windows nt (win32_ntw, nt) by @MacroModel in #71
- [wasip1] New FD Model by @MacroModel in #72
- [wasip1] fd_renumber by @MacroModel in #73
- [wasip1] fd_sync by @MacroModel in #74
- [wasip1] fd_write by @MacroModel in #75
- [wasip1] path_create_directory by @MacroModel in #76
- [wasi] Enhance error handling in path_create_directory tests: added d… by @MacroModel in #77
- [wasi] Improve cleanup handling in path_create_directory tests: added… by @MacroModel in #78
- [utf8] Add unlikely return check for end of string in UTF-8 processin… by @MacroModel in #79
- [utf8] Refactor UTF-8 verification fuzzer: removed unused includes, i… by @MacroModel in #80
- [test] update fuzzer by @MacroModel in #81
- [wasi] Fix Windows Error Behavior by @MacroModel in #82
- [wasi] Unify the behavior of Windows 9x and MS-DOS (path_create_directory) by @MacroModel in #83
- [wasip1] Refactor: merge duplicate functions by @MacroModel in #84
- [wasi] path_filestat_get by @MacroModel in #87
- [wasip1] Added conditional inclusion for across multiple files to enhance compatibility with different environments. by @puji4810 in #88
- [utils] fix arm_sve compile error by @MacroModel in #89
- [test] Refactored binary format handling functions to include conditional checks for feature size before logging which may cause error in gcc. by @puji4810 in #90
- [build] fix cygwin build by @MacroModel in #91
- [uwvm] support cygwin by @MacroModel in #92
- [parser] Set parser limit to prevent premature large input handling causing OOM and potential DoS by @MacroModel in #93
- [build] add Cygwin support in xmake configuration by @MacroModel in #95
- [utils] Replace all floating-point operations with domestically developed alternatives. by @MacroModel in #94
- [wasi] Update symlink paths in path_create_directory tests for consistency by @MacroModel in #97
- [utils] Refactor floating-point type definitions in precfloat.h by @MacroModel in #100
- [wasi] Enhance directory handling by improving error reporting in fst… by @puji4810 in #99
- [build] Remove Shell32 linkage from MinGW and Windows platform config… by @MacroModel in #101
- [uwvm] support freebsd by @MacroModel in #102
- [wasip1] path_filestat_set_times by @MacroModel in #103
- [test] Add fuzzer tests for module testing and enhanced sanitization by @puji4810 in #86
- [test] Remove redundant address and undefined sanitization flags in debug mode for fuzzer tests by @MacroModel in #104
- [wasi] path_link by @MacroModel in #105
- [wasi] path_open by @MacroModel in #107
- [wasi] Refactor mmap flag handling in mmap.h to improve code clarity. Introduced a constexpr variable for mmap_flags to streamline memory mapping configuration, enhancing maintainability and readability. by @MacroModel in #108
- [build] fix freebsd by @MacroModel in #110
- [macro] Enhance push_macros.h with GCC pragma diagnostics by @MacroModel in #111
- [fast_io] update by @MacroModel in #112
- [fast_io] update by @MacroModel in #113
- [wasip1] path_readlink by @MacroModel in #114
- [docu] Update WASM-WASI documentation and enhance build instructions by @MacroModel in #115
- [ci] support mingw by @MacroModel in #116
- [test] Use fast_io::native_thread instead of std::thread to support platforms such as Windows 9x. by @MacroModel in #117
- [build] Update Windows minimum version parameter from
winmintomingw-minacross configuration files and documentation. Adjusted CI workflow and build scripts to reflect this change, ensuring consistency in specifying minimum Windows compatibility for MinGW and MSVC toolchains. by @MacroModel in #118 - [fast_io] update by @MacroModel in #119
- [macro] add UWVM_HAS_CPP_ATTRIBUTE by @MacroModel in #120
- [build] support wasm-emscripten by @MacroModel in #121
- [build] support non-8-bit CHAR_BIT Platform by @MacroModel in #122
- [uwvm] Except for the main function, everything else in uwvm2 is composed of .h and .cpp files. by @MacroModel in #123
- [wasip1] path_remove_directory by @MacroModel in #124
- [uwvm] support weak symbol module by @MacroModel in #125
- [uwvm] support
--wasm-list-weak-symbol-modulecmdline by @MacroModel in #126 - [wasi] path_rename by @MacroModel in #127
- [wasip1] path_symlink by @MacroModel in #128
- [wasi] path_unlink_file by @MacroModel in #129
- [test] add hybrid wasi test by @MacroModel in #131
- [utils] Reimplement rwlock_t by @MacroModel in #132
- [test] add wasip1 hybrid test by @MacroModel in #133
- [ci] Refactor FreeBSD CI workflow to support multiple compilers and i… by @MacroModel in #134
- [wasi] feat: wasip1.poll_oneoff and proc_exit by @MacroModel in #135
- [test] Add proc_exit and proc_exit_wasm64 test cases for WASI P1 by @MacroModel in #136
- [wasip1] Add proc_raise implementation with custom callback support and ESRCH errno mapping by @MacroModel in #137
- [wasip1] random_get by @MacroModel in #138
- [wasi] sched_yield by @MacroModel in #139
- [cmdline] Rename wasi_mount_dir to wasip1_mount_dir and add wasi_disable_utf8_check callback by @MacroModel in #140
- [wasip1] add file_observer and socket_observer by @MacroModel in #141
- [uwvm] cmdline: --wasip1-socket-tcp-connect by @MacroModel in #142
- [uwvm] wasip1 socket cmdline by @MacroModel in #143
- [uwvm] Normalize feature macros and storage namespace by @MacroModel in #144
- [wasi] Fix misuse of wasi error codes by @MacroModel in #145
- [object] memory signal by @MacroModel in #146
- [wasip1] socket sock_accept by @MacroModel in #148
- [test] add function_section vs varint-simd benchmark driver by @mq-loser in #147
- [parser] New u8_2b SIMT algorithm by @MacroModel in #149
- Fix FreeBSD CI by @nukyan in #106
- [utils] update rw_lock by @MacroModel in #150
- [object] Enhance memory allocator locking mechanism by @MacroModel in #151
- [wasip1] sock_recv by @MacroModel in #152
- [wasip1] sock_send by @MacroModel in #153
- Enhance CI configuration for x86_64 and i686 builds by @MacroModel in #154
- [bench] fix and add utf8 and xxh3 by @MacroModel in #155
- [bench] update readme by @MacroModel in #156
- [wasip1] sock_shutdown by @MacroModel in #158
- [bench] rm output by @MacroModel in #159
- [uwvm] init wasip1 environment by @MacroModel in #160
- [uwvm] Enhance wasip1 environment initialization by @MacroModel in #161
- [uwvm] cmdline
--wasm-memory-strictby @MacroModel in #166 - [uwvm] local_import by @MacroModel in #167
- [uwvm] local import wasip1 by @MacroModel in #168
- [uwvm] fix module by @MacroModel in #169
- [third-parties] update fast_io by @MacroModel in #170
- [uwvm] wasm runtime initializer by @MacroModel in #172
- [uwvm] add missing include and import by @killcerr in #173
- [uwvm] add missing include and import by @killcerr in #174
- [runtime] add storage by @MacroModel in #175
- [third-parties] update deque by @YexuanXiao in #176
- [ci] fix freebsd llvm ci by @killcerr in #177
- [uwvm] runtime cmdline parameters by @MacroModel in #178
- [compiler] add wasm1.0 validator by @MacroModel in #181
- [test] add WABT submodule and integrate validation fuzzer by @puji4810 in #182
- add verbose message by @MacroModel in #183
- [test] Build WABT in Release so libwabt is compiled with NDEBUG and won't abort on debug assertions by @MacroModel in #185
- [dependency] Remove WABT submodule and update build process to use di… by @puji4810 in #186
- [test] mv wabt from test to build/test by @MacroModel in #187
- [ci] add macos by @MacroModel in #188
- [test] fix wabt fuzzer by @MacroModel in #189
- [uwvm] add validation mode by @MacroModel in #190
- [wasi] fix wasi selfhosting build by @MacroModel in #191
- [emscripten] fix emscripten build by @MacroModel in #192
- [uwvm] add debug-int cmdline by @MacroModel in #193
- [profile] add runtime folder by @MacroModel in #194
- [third-parties] update deque by @YexuanXiao in #196
- [runtime] uwvm2 interpreter by @MacroModel in #195
- [third-parties] update deque by @YexuanXiao in #197
- [runtime] Fixed label arity calculation for br / br_if / br_table when the target is block_type::loop (set to 0) by @MacroModel in #198
- [uwvm] Enhance logging capabilities by @MacroModel in #199
- [build] fix clang23 build by @MacroModel in #200
- [u2int] Refactor and clean up includes in optable files by removing unnecessary header. Update function pointer selection logic in compare, numeric, stack, and variable modules to enhance clarity and maintainability. Improve stack management by simplifying condition checks and ensuring consistent handling of current positions. by @MacroModel in #201
- [wasip1] Distinguish between the two extension systems for the wasip1 socket. by @MacroModel in #202
- [env] inherbit sys env by @MacroModel in #203
- [ci] use llvm 23 and fix ci on linux by @killcerr in #204
- [test] fix some test by @killcerr in #205
- [u2int] Improve call performance by @MacroModel in #206
- [u2int] set default Rcc to int Rcm to full by @MacroModel in #207
- [u2int] fix loop interpreter by @MacroModel in #208
- [u2int] fix tailcall warn by @MacroModel in #209
- [u2int] Refactor tail call handling in UWVM runtime by @MacroModel in #210
- [ci] Update CI configuration to enable static linking for builds by @MacroModel in #211
- Refactor fast_io network service initialization in UWVM header by @MacroModel in #212
- [uwvm] rm thread_local and fix win9x build by @MacroModel in #213
- [xmake] Add support for thread-local storage in UWVM runtime by @MacroModel in #214
- [u2int] add optimization by @MacroModel in #215
- [u2int] Added new command-line options to enhance the plugin's memory access system, optimized interpreter code, and added interpreter coverage testing. by @MacroModel in #216
- [docu] Update README.md and example documentation for preload host API enhancements by @MacroModel in #217
- [uwvm] Enhance UWVM validation and runtime handling by @MacroModel in #218
- Refactor ARM feature handling in version.h by @MacroModel in #219
- [runtime] support multithread compilation by @MacroModel in #220
- [profile] Version 2.0.0.1 by @MacroModel in #221
- [profile] Release UWVM V2.0.2.0 with LLVM JIT, fuzzing, docs, and crypto donation updates by @MacroModel in #223
- [runtime] Enhance operand stack validation and security in branch and call operations by @MacroModel in #224
- Fix missing destroy calls for custom allocators by @YexuanXiao in #225
- [runtime] llvm-jit by @MacroModel in #226
- [xmake] Normalize static option; skip default includes by @puji4810 in #227
- [runtime] Improve llvm-jit by @MacroModel in #228
- [llvm-jit] Refactor string handling and improve type consistency by @MacroModel in #229
- [uwvm] update llvm-jit by @MacroModel in #230
- [llvm-jit] llvm-jit lazy compiler optimization by @MacroModel in #231
- [llvm-jit] Optimize LLVM JIT compile speed and make IR verification configurable by @MacroModel in #232
- [runtime] tiered by @MacroModel in #233
- [runtime] Enhance LLVM JIT tiering, WASI mount handling, and runtime I/O documentation by @MacroModel in #234
- [runtime] fix cache by @MacroModel in #235
- [profile] Update version to 2.0.2.1 and enhance documentation by @MacroModel in #237
- V2.0.2 by @MacroModel in #238
- V2.0.2 by @MacroModel in #242
- V2.0.2 bugs fix by @MacroModel in #245
- Fix Darwin static LLVM JIT build by @MacroModel in #246
New Contributors
- @nukyan made their first contribution in #45
- @puji4810 made their first contribution in #88
- @mq-loser made their first contribution in #147
- @killcerr made their first contribution in #173
- @YexuanXiao made their first contribution in #176
Full Changelog: https://github.com/UlteSoft/uwvm2/commits/V2.0.2.1