50.0.0
Released 2026-10-20.
Added
-
Wasmtime now supports the WebAssembly compact imports proposal, disabled by default, via
Config::wasm_compact_imports. #14335 -
The Wasmtime CLI now has options to configure unsafe intrinsics and compile-time builtins. #14279
-
The Wasmtime CLI and C API can now enable the component model's canonical names and accessors features. #14344 #14497
-
A new
Store::gc_heap_growmethod can be used to manually grow the GC heap of a store. #14341 -
A new
ResourceAny::resource_drop_concurrentmethod can be used to drop a guest resource with only anAccessor. #14362 -
A new
Engine::release_idle_pool_memorymethod can be used to release memory kept resident by the pooling allocator for idle slots. #14419 #14507 -
A new off-by-default
task-group-hookfeature enables embedders to associate guest-to-host calls with their corresponding host-to-guest calls when using component-model-async. #14416 -
The
wasmtime-wasiandwasmtime-wasi-httpcrates now support "named imports", theimplementsfield of the component model. #14275 -
The
wasmtime explorecommand now supports components and has resizable panes. #14426 #14427 #14458 -
The debugger now exposes shared memories to gdbstub. #14087
-
Winch now supports tail calls on x86_64 and AArch64. #14349
-
Cranelift has initial support for some x86_64 APX instructions. #13916
-
The
wasmtime servecommand can now inherit listening sockets from a service manager (e.g. systemd socket units) with a new--systemd-listenfdoption, can serve on Unix sockets, and can automatically exit when idle with a new--idle-process-timeoutoption. #14294 #14320 #14392
Changed
-
Epoch deadline and call-hook callbacks now receive a
StoreHookStateinstead of aStoreContextMut, which only allows access to theTin aStore<T>. #14386 -
The
wasmtimeCLI no longer enables WASIp0 (wasi_unstable) by default. It can be enabled with-Spreview0. #14479 -
Winch no longer enables the GC types, exceptions, or tail-call proposals by default as support for these is not yet Tier 1. #14449 #14502
-
Accessor::spawnnow takes an async closure instead of anAccessorTask. #14376 -
Component-model-async has been updated to the latest specification: the
cancellableimmediate has been removed from intrinsics,subtask.cancelsemantics have been refined,task.cancelnow traps before the cancel event is delivered, and use of stream/future handles after the other end has been dropped now traps. #14244 #14340 #14342 #14378 #14382 -
Component-model-async now periodically yields during concurrent work to avoid starving other host tasks. #14460
-
The performance of async guest-to-host calls in component-model-async has been improved by lazily creating host tasks, and sync-to-sync adapters no longer need to call
{enter,exit}-sync-callin many cases. #14350 #14270 -
Wasmtime now drops cached compiler contexts between compiling modules/components, reducing sustained memory usage. #14314
-
Cranelift's alias analysis is faster and more precise, and GC struct fields, array elements, and GC header fields now all have their own alias regions. #14290 #14425 #14351 #14353
-
Wasmtime now uses bulk libunwind section registration when available. #14304
-
Fuel is now charged for more host allocations made with
Val. #14415 -
Default
wasi:httphooks now classify connection and TLS errors in more detail. #14501 -
wasi:httpnow always accepts an empty path-with-query. #14446 -
The CLI now rejects zero for the
--http-outgoing-body-*options. #14448 -
Work continues on implementing the stack-switching proposal. #14140 #14369 #14398 #14441
-
Wasmtime now requires Rust 1.97.0 to compile. #14466
-
The pooling allocator now scans further than a fixed set of region and additionally correctly resets pages that have been paged out. #14357
Fixed
-
Converting a borrowed
Resource<T>orResourceDynamiccreated withnew_borrowinto aResourceAnyoutside of a component call no longer panics. The borrow is now lowered into the guest when the call happens, andResourceAny::resource_dropis no longer required for such borrows. #14384 -
Recursive
run_concurrentis now allowed for disparate stores. #14302 -
Fuel is now correctly saved and restored around
call_refand exception catches in Cranelift, and buffered fuel charges in a module's start function are no longer dropped. #14407 #14391 -
The
check-writebudget is now enforced inwasi:httpoutgoing bodies and somewasi:iooutput streams. #14408 #14429 #14505 -
Store::set_epoch_deadlineno longer overflows with very large deltas. #14513 -
JIT code is now made coherent with the instruction cache correctly on AArch64. #14454
-
Native stack-walking on macOS arm64 has been fixed. #14303
-
A stack overflow translating a variant with a huge number of cases between components has been fixed. #14355
-
Resource aliases are now preserved when stubbing unknown imports. #14396
-
bindgen!now uses fully-qualified paths for prelude types to avoid collisions with WIT type names. #14543 -
Validation of
ifwithoutelsein the presence of subtyping has been fixed. #14334 -
A debug assertion in
ref.testof internalizedexternrefs has been fixed. #14315 -
Cranelift now allows returns via
xmm1withWindowsFastCallforextern "Rust". #14361 -
cranelift-objectnow sets symbol flags correctly and returns an error, instead of panicking, for data objects declared with different TLS values. #14519 #14469 -
Winch now handles unreachable
try_table, emits fuel updates before throwing exceptions, and preserves typedselectresult types for GC stack maps. #14379 #14297 #14455 -
wasmtime runnow honors the--http-outgoing-body-*options. #14440 -
Graceful shutdown of
wasmtime servehas been fixed. #14388 -
The CLI no longer panics on overflow when deriving the async stack size. #14514
-
A number of
wasi:filesystemfixes:set-timeson directory descriptors,statof symlinks with trailing slashes, thestatfast path, datetime overflow, and directory entry file types on filesystems withoutd_type. #14420 #14387 #14368 #14403 #14381 -
Accepted TCP sockets now preserve their peer address after a reset. #14443
-
MACH_RCV_INTERRUPTis no longer used in the macOS mach ports implementation. #14414 -
wasi-http p3: Correctly enforce content-length for response bodies #14822
-
wasi-http p3: Apply forbidden header check to trailers #14823
-
wasi-http: Prohibit duplicate content-length headers #14824
-
Cranelift/aarch64: fix br_tables with very large target count #14826
-
Centralize type-checks of futures/streams #14827