50.0.0
Released 2026-10-20.
Added
-
Wasmtime now supports the WebAssembly compact imports proposal, disabled by
default, viaConfig::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
StoreHookState
instead of aStoreContextMut, which only allows access to theTin a
Store<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.cancel
semantics 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 with
new_borrowinto aResourceAnyoutside of a component call no longer
panics. The borrow is now lowered into the guest when the call happens, and
ResourceAny::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
xmm1withWindowsFastCallfor
extern "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