Back to Wasmtime

RELEASES

RELEASES.md

46.0.015.4 KB
Original Source

46.0.0

Released 2026-06-22.

Added

  • 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

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 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

Fixed

  • 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 -->