RELEASES.md
Released 2026-06-22.
Added opt-in support for the WebAssembly branch-hinting proposal: the
metadata.code.branch_hint custom section is parsed and used to mark cold
blocks during Cranelift compilation, behind Config::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_32 platforms.
#13259
The cranelift-frontend crate,the RISC-V Cranelift backend, and Wasmtime's
component-model-async feature now support no_std.
#13401
#13479
#13533
Wasmtime has initial support for the component model (implements "...")
feature.
#13361
#13497
#13513
The wasmtime CLI now supports configuring the initial-cwd property of
WASI.
#13468
The wasmtime serve subcommand now supports --header to set headers for the
guest.
#13471
Wasmtime supports WASI 0.2.12, which notably includes exit-with-code in
stable.
#13536
Wasmtime's component-model-async-bytes feature was renamed to
component-model-bytes and now lifting/lowering using Bytes and BytesMut
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
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 ctz or clz has 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
WasmtimeBug type for embedders to detect and safely tear down the
store/instance.
#13321
#13320
Cranelift's MemFlags type is now renamed to MemFlagsData, 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 a waitable-set.
#13415
Wasmtime's behavior with subtask.cancel is now adjusted to resume the
cancelled task immediately instead of always yielding.
#13443
The wasmtime_wasi_http::handler module 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 InstanceExportLookup trait has been generalized into ExportLookup, and
this is now optionally implemented for wit_parser::ItemName with the
wit-parser crate feature.
#13505
Many of Cranelift's *_imm instructions 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 *WithStore traits 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
Wasmtime's copying collector has had a few bugs related to how it's translated to CLIF fixed. #13381
Returning a ThrownException when 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 stream copies have been fixed. #13418
Cranelift-generated stack maps have been fixed in a few cases. #13449 #13466 #13498
Component-to-component adapters which use resources in arguments and disable
concurrency_support have been fixed.
#13542
A panic in substituted_component_type has been fixed when guests have
exported resources.
#13608
Release notes for previous releases of Wasmtime can be found on the respective release branches of the Wasmtime repository.
<!-- ARCHIVE_START -->