Releases: bytecodealliance/wasmtime
dev: Wasm translator: move stacks into FuncEnvironment. (#11955)
This is a refactor that came up [here]: we currently have a split between the "environment" and the "stacks" in the Wasm translator that is *mostly* a path-dependent property from our development history: the environment used to be a trait purely with hook implementations. It turns out that carrying through the multiple bits was becoming fairly verbose plumbing and it is desired to collapse it somewhat. This PR puts `FuncTranslationStacks` under `FuncEnvironment`. As a result, all of our Wasmtime-specific state is now in one container that we can plumb through more easily. There is a tiny bit more cloning here: calls and a few other instructions were peeking a slice of the operand stack and passing that into a method on the environ (taking a mut self) to codegen certain sequences. An alternative would have been to indirect somehow -- pass a `Range<usize>` or a closure that gets the environ back to yield the args slice -- but it didn't seem worth the complexity here. Happy to change if needed. [here]: https://github.com/bytecodealliance/wasmtime/pull/11921#discussion_r2461912848
v38.0.3: Release Wasmtime 38.0.3 (#11934)
38.0.3
Released 2025-10-24.
Fixed
- Fix possible host crash with host-to-wasm component intrinsics
CVE-2025-62711
v38.0.2: Release Wasmtime 38.0.2 (#11903)
38.0.2
Released 2025-10-21.
Changed
- This repository is attempting to start out using GitHub's "Immutable Releases"
feature with this release, and this'll be the first release, assuming all goes
well, that has this enabled.
#11901
Fixed
- Fix compatibility with the Go runtime on Windows for exceptions.
#11892
v38.0.1: Release Wasmtime 38.0.1 (#11888)
38.0.1
Released 2025-10-20.
Fixed
- Fixed some automation that went wrong with the 38.0.0 release.
v37.0.2: Release Wasmtime 37.0.2 (#11767)
37.0.2
Released 2025-10-07.
Fixed
- Fix a memory leak in the C API when using
anyreforexternref.
CVE-2025-61670.
v37.0.1: Release Wasmtime 37.0.1 (#11738)
37.0.1
Released 2025-09-23.
Fixed
- Cranelift's
cranelift-jitcrate now properly applies relocations toADRP
instructions on aarch64; a zero-extension on the offset was fixed to properly
sign-extend instead.
#11734
v37.0.0: Release Wasmtime 37.0.0 (#11724)
37.0.0
Released 2025-09-20.
Added
-
Wasmtime now fully implements the WebAssembly exception-handling proposal.
Support is still disabled by default but is ready for testing. The proposal
will be enabled by default in a future release of Wasmtime.
#11326 -
An initial implementation of WASIp3 is available for the
0.3.0-rc-2025-08-15
tag made for the WASIp3 release. Note that this is not production ready yet
but is an excellent time to start kicking the tires in preparation for an
upcoming officialy WASIp3 0.3.0 release. Users of the CLI can opt-in with
-Sp3 -Wcomponent-model-async.
#11406
#11423
#11443 -
Wasmtime has initial support for the Linux
PAGEMAP_SCANioctl which can
greatly improve instantiation throughput in scenarios with a high number of
instantiations and short instance lifetime. This support is disabled by
default but will likely be enabled by default in a future release.
#11372
#11433 -
GC support can now be configured in
Configand not only through crate
features throughConfig::gc_support.
#11463 -
Wasmtime now supports reading metrics of the pooling allocator at runtime.
#11490 -
The
ManuallyRootedtype is now replaced withOwnedRootedwhich is intended
to make management of GC object lifetimes on the host easier.
#11514 -
Wasmtime's documentation of the C++ embedding API and examples has been
expanded.
#11569 -
Wasmtime's support for the stack-switching WebAssembly proposal continues to
progress on x86_64 Linux.
#11003
Changed
-
The
preview0andpreview1modules and features in thewasmtime-wasi
crate are now calledp0andp1.
#11380 -
Release artifacts for the C API are now unconditionally built with unwind
tables.
#11383 -
Wasmtime now requires Rust 1.87.0 or later to build.
#11396 -
The component-model-async gated
AbortHandleis now namedJoinHandle.
#11414 -
Wasmtime's internal implementation details are now
asyncin many more
locations to help ensure the implementation is more sound.
#11411
#11416
#11442
#11444
#11457
#11460
#11461
#11468
#11470
#11481
#11496 -
Component-model-async primitives such as streams, tasks, etc, now use the same
table as resources in a component. This means that guest-visible allocated
indices are updated slightly.
#11374 -
Wasmtime's precompiled binaries available from CI now include the
component-model-asyncfeature.
#11429 -
C API release artifacts are now built with LTO so they have a smaller size.
#11483 -
Code can no longer be loaded on
x86_64-unknown-noneby default without
opting-in to a contract that either the host is compiled with SSE2 support or
wasm is compiled with enough features that libcalls aren't used.
#11553 -
Host support for component model async futures/streams has been updated to a
new API.
#11515
Fixed
-
GC of dead DWARF has been improved.
#11402 -
Wasm-gc branching instructions now correctly check for fuel.
#11426 -
The
array.new_defaultinstruction now checks for fuel/epochs in its inner
loop.
#11428 -
The "min" C API artifacts now have correct headers.
#11479 -
GC OOM during const eval no longer panics.
#11557 -
Wasmtime now properly respects a disabled
stdfeature even on targets which
havestdavailable.
#11568
v36.0.2: Release Wasmtime 36.0.2 (#11541)
36.0.2
Released 2025-08-26.
Fixed
- Wasmtime will no longer panic in the pooling allocator when in near-OOM
conditions related to resetting the linear memory of a slot.
#11510
v36.0.1: Release Wasmtime 36.0.1 (#11477)
36.0.1
Released 2025-08-21.
Added
- Accessors for internal WASI-related contexts are added to
wasmtime_wasi::WasiCtxto account for refactorings that happened in this
release.
#11473
Changed
- Release artifacts for the C API are now smaller than the previous release to
assist with redistribution as-is.
#11483
v36.0.0: Release Wasmtime 36.0.0 (#11471)
36.0.0
Released 2025-08-20.
Added
-
Cranelift's has initial support for inlining between functions. Wasmtime
additionally now has support for inlining as well, for example between modules
in a component.
#11210
#11239
#11228
#11269
#11283 -
The async proposal for the Component Model is now fully implemented in
Wasmtime with a number of WASIp3 interfaces implemented. The implementation
is still off-by-default and the implementation of WASIp3 is not fully
complete, but is remains suitable for testing.
#11127
#11136
#11137
#11238
#11221
#11250
#11257
#11291
#11325
Changed
-
Users who implemented
WasiHttpView::is_forbidden_headerfrom
wasmtime-wasi-httpnow need to includeDEFAULT_FORBIDDEN_HEADERS, e.g.
DEFAULT_FORBIDDEN_HEADERS.contains(name) || name.as_str() == "custom-forbidden-header"
#11292 -
Cranelift's incremental cache has received some optimizations.
#11186 -
Wasmtime's internal implementations of WebAssembly primitives has been
refactored to be modeled with safer internal primitives.
#11211
#11212
#11216
#11229
#11215
#11254
#11255
#11319
#11320 -
Detection of native hardware features has been refactored on s390x.
#11220 -
Further progress has been made towards an implementation of the WebAssembly
exceptions proposal, although it is not yet complete.
#11230
#11321 -
Cranelift's assembler for x64 now supports EVEX encoding.
#11153
#11270
#11303 -
The default implementation of
send_requestin thewasmtime-wasi-httpcrate
is now behind an on-by-default feature gate.
#11323 -
Configuration of the
bindgen!macro has been redesigned to more consistently
configure per-function options such as whether or not it's async.
#11328 -
Initial support fo
mutatishas been added to Wasmtime's fuzzers.
#11290 -
The
debug-builtinscrate feature ofwasmtimeno compiles onno_std
targets.
#11304
Fixed
-
Deserializing external modules no long unnecessarily requires the allocation
to be aligned.
#11306 -
A CMake linker error and warning when using the C API on macOS has been fixed.
#11293
#11315 -
The C API declaration of
wasmtime_component_linker_instance_add_funchas
been fixed.
#11327 -
The calculation of reachable DWARF has been fixed.
#11338