Releases: bytecodealliance/wasmtime
dev: cranelift(x64): add the EVEX AVX512-VNNI vpdpbusd form (#14006)
Extends the u8*i8 dot-accumulate fold to hosts with AVX512-VNNI but not the VEX AVX-VNNI (e.g. Ice Lake, Cascade Lake). Adds the EVEX-encoded vpdpbusd (EVEX.128.66.0F38.W0 50 /r), a has_avx512vnni ISA flag with host detection, and a priority-7 lowering rule. The shorter VEX form (rule 8) stays preferred when a host has both.
v47.0.2: Release Wasmtime 47.0.2 (#13925)
v47.0.1: Release Wasmtime 47.0.1 (#13907)
v47.0.0: Release Wasmtime 47.0.0 (#13898)
47.0.0
Released 2026-07-20.
Added
-
Wasmtime now has the WebAssembly GC proposal enabled by default.
#13594 -
Wasmtime now has the WebAssembly exception-handling proposal enabled by
default.
#13603 -
Cranelift now supports the compact unwind format on Mach-O platforms.
#13586 -
Wasmtime now supports bounds-checked unsafe intrinsics which take spectre
mitigations into account.
#13597 -
The
wasmtime::Enginetype now supports reflection to determine the value of
mostConfigoptions that were selected during creation.
#13671 -
Support for fibers on unsupported architectures is now supported through an
opt-in compile time Cargo feature defining a C API embedders can implement.
#13620 -
Embedders can now create an
ArrayRefwith a memcpy-style constructor.
#13716 -
A new
Accessor::poll_ready_for_concurrent_callAPI can be used to detect
when backpressure indicates that a function is ready to be invoked.
#13683
Changed
-
Support for wasi-threads and Wasmtime's
wasi-commoncrate have been removed.
For more information see the associated RFC in Wasmtime.
#13558 -
The
call_indirectinstruction offinalsuper types has been optimized when
the GC proposal is enabled.
#13572 -
Cranelift's
*_immbuilder helpers have been deprecated in favor of
*_imm_{s,u}helpers.
#13583 -
The
wasmtimeCLI's syntax supported for--invokewith components now
supports fully qualified WIT interface names.
#13564 -
Cranelift's
stack_{load,store}instructions have been removed.
#13580 -
Cranelift's
{band,bor,bxor}_notinstructions have been removed.
#13590 -
Cranelift's
global_valueinstruction has been removed.
#13682 -
The
wasmtime wizersubcommand now supports specifying the initialization
function with WAVE for components.
#13582 -
Wasmtime's codegen on aarch64 for the
i32x4.relaxed_dot_i8x16_i7x16_add_s
wasm instruction now uses a singlesdotinstruction where possible.
#13640 -
Wasmtime's
.wasmtime{traps,addrmap}sections in*.cwasmfiles are now
significantly smaller.
#13628 -
Wasmtime now supports removing symbols from
*.cwasmfiles and additionally
has a documentation page about producing minimally-sized*.cwasmoutputs.
#13630 -
Wasmtime now suports resources in the
named_importsoption ofbindgen!.
#13666 -
Wasmtime now invokes the host's
socket_addr_checkcallback for implicit
binds performed in WASIp3.
#13677 -
Wasmtime's component-to-component sync-to-sync fused adapters have been
optimized.
#13695 -
Cranelift now supports RISC-V's Zvbb extension.
#13738
Fixed
-
The
IPV6_V6ONLYoption is now set for UDP sockets.
#13596 -
Uncaught wasm exceptions at component boundaries are now turned into traps to
prevent components catching exceptions from other components.
#13613 -
Addresses being sent do with WASIp3 and UDP are now validated as they are in
WASIp2.
#13631 -
GC roots on component model fiber stacks are now properly traced.
#13693 -
An unaligned load when reading debug state slot values has been fixed.
#13791
v46.0.1: Release Wasmtime 46.0.1 (#13722)
46.0.1
Released 2026-06-24.
Fixed
- WASI hard links and renames check wasmtime-wasi's FilePerms for destination
GHSA-4ch3-9j33-3pmj - Explicit hint for generic call in wasmtime wit-bindgen.
#13719
v45.0.3: Release Wasmtime 45.0.3 (#13724)
45.0.3
Released 2026-06-24.
Fixed
- WASI hard links and renames check wasmtime-wasi's FilePerms for destination
GHSA-4ch3-9j33-3pmj
v36.0.12: Release Wasmtime 36.0.12 (#13731)
36.0.12
Released 2026-06-24.
Fixed
- WASI hard links and renames check wasmtime-wasi's FilePerms for destination
GHSA-4ch3-9j33-3pmj
v24.0.11: Release Wasmtime 24.0.11 (#13723)
24.0.11
Released 2026-06-24.
Fixed
- WASI hard links and renames check wasmtime-wasi's FilePerms for destination
GHSA-4ch3-9j33-3pmj
v46.0.0: Release Wasmtime 46.0.0 (#13696)
46.0.0
Released 2026-06-22.
Added
-
Added opt-in support for the WebAssembly branch-hinting proposal: the
metadata.code.branch_hintcustom section is parsed and used to mark cold
blocks during Cranelift compilation, behindConfig::wasm_branch_hinting
(off by default).
#13459 -
Wasmtime's C API now supports type reflection of GC values.
#13268 -
Wasmtime now supports being compiled to
arm64_32platforms.
#13259 -
The
cranelift-frontendcrate,the RISC-V Cranelift backend, and Wasmtime's
component-model-asyncfeature now supportno_std.
#13401
#13479
#13533 -
Wasmtime has initial support for the component model
(implements "...")
feature.
#13361
#13497
#13513 -
The
wasmtimeCLI now supports configuring theinitial-cwdproperty of
WASI.
#13468 -
The
wasmtime servesubcommand now supports--headerto set headers for the
guest.
#13471 -
Wasmtime supports WASI 0.2.12, which notably includes
exit-with-codein
stable.
#13536 -
Wasmtime's
component-model-async-bytesfeature was renamed to
component-model-bytesand now lifting/lowering usingBytesandBytesMut
is directly supported.
#13366 -
Wasmtime now exposes the async call stack of components through its public API
which can be used to determine which root task performed an import call.
#13510 -
Wasmtime now supports WASI 0.3.0 by default and the
component-model-async
wasm feature is now enabled by default.
#13612
Changed
-
Performance of bulk-data-transfer instructions such as
{array,table,memory}.{copy,fill,init}have been improved.
#13312
#13367
#13368
#13382
#13407
#13424
#13438
#13460
#13524 -
Codegen for conditions based on
ctzorclzhas been optimized.
#13332
#13343 -
Cranelift now optimizes conditional branches of constant conditions into
unconditional jumps.
#13267
#13391 -
Wasmtime's copying collector now has an in-wasm fast path for its bump
allocator.
#13323 -
Wasmtime's GC implementation has been hardened in the face of GC heap
corruption to avoid panicking or aborting. Corruption is returned as a
WasmtimeBugtype for embedders to detect and safely tear down the
store/instance.
#13321
#13320 -
Cranelift's
MemFlagstype is now renamed toMemFlagsData, and
AliasRegions are now stored in the DFG.
#13353
#13354 -
Wasmtime now handles OOM gracefully in more situations.
#13371
#13372
#13374
#13375
#13376
#13377
#13378
#13379
#13388
#13413
#13412
#13414 -
Cranelift's egraph rewrite pass now uses a concept of fuel to avoid
exponential blowup of rewrites.
#13390 -
Wasmtime now consumes fuel in bulk-data-transfer instructions proportional to
the size of the transfer.
#13393
#13448 -
Cranelift's ISLE format now supports
structs as well as tuple fields for
structs/enums.
#13319
#13335 -
Wasmtime's implementation of passive element and data segments is now
optimized to perform more work in wasm itself and has a refactored
representation on the host.
#13394
#13444 -
Heuristics for triggering GC in the DRC collector have been adjusted to avoid
blowups seen in the wild.
#13422 -
Wasmtime's default garbage collector is now the copying collector instead of
the deferred-reference-counting collector. This collector should be more
performant in most situations and additionally have the ability to collect
cycles.
#13439 -
Wasmtime now traps if a waitable is being waited on synchronously and
additionally added to awaitable-set.
#13415 -
Wasmtime's behavior with
subtask.cancelis now adjusted to resume the
cancelled task immediately instead of always yielding.
#13443 -
The
wasmtime_wasi_http::handlermodule has had its interface overhauled to
better handle configuring the lifecycle of a request as it flows through
the system in terms of timeouts and such.
#13404 -
Most of Wasmtime's instance initialization is now compiled into a per-module
initialization function rather than happening through the host in Wasmtime.
#13487 -
The
InstanceExportLookuptrait has been generalized intoExportLookup, and
this is now optionally implemented forwit_parser::ItemNamewith the
wit-parsercrate feature.
#13505 -
Many of Cranelift's
*_imminstructions have been removed in favor as they
were just sugar over other opcodes. Builder-style methods remain, however.
#13527
#13541
#13543
#13545
#13548
#13553 -
Wasmtime's caching behavior is no longer gated on
cfg(debug_assertions)and
has been adjusted to handle a git source differently.
#13535 -
Bindings generation for store-using
*WithStoretraits now have a type
parameter of the store on the trait itself instead of on every method.
#13549 -
Wasmtime now requires Rust 1.94.0 to compile.
#13547
Fixed
-
Wasmtime's copying collector has had a few bugs related to how it's translated
to CLIF fixed.
#13381 -
Returning a
ThrownExceptionwhen there wasn't a pending exception within a
store has been fixed.
#13306 -
A DRC corruption issue when overwriting an i31ref slot has been fixed.
#13307 -
Taking a store's exception from a debug handler has been fixed.
#13310 -
Alignment checks of atomics with Winch have been fixed.
#13337 -
GC barriers around managing the pending exception within a store have been
fixed.
#13330 -
Cranelift's handling of short jumps on some architectures is now improved to
handle very large basic blocks.
#13392 -
Cross-component str...