Releases: bytecodealliance/wasmtime
dev
Add ptest and vptest to the new assembler (#11139)
v34.0.1: Release Wasmtime 34.0.1 (#11119)
34.0.1
Released 2025-06-24.
Fixed
- Fix a panic with host-defined tables/globals and concrete reference
types.
#11103
v33.0.1: Release Wasmtime 33.0.1 (#11120)
33.0.1
Released 2025-06-24.
Fixed
- Fix a panic with host-defined tables/globals and concrete reference
types.
#11103
v32.0.1: Release Wasmtime 32.0.1 (#11118)
32.0.1
Released 2025-06-24.
Fixed
- Fix a panic with host-defined tables/globals and concrete reference
types.
#11103
v24.0.3: Release Wasmtime 24.0.3 (#11121)
24.0.3
Released 2025-06-24.
Fixed
- Fix a panic with host-defined tables/globals and concrete reference
types.
#11103
v34.0.0: Release Wasmtime 34.0.0 (#11085)
34.0.0
Released 2025-06-20.
Added
-
Support for SIMD in the Pulley interpreter can now be disabled at compile-time
to shrink the size of the final binary.
#10727 -
The C API now has
wasmtime_trap_new_code
to create awasm_trap_t
from
its code.
#10765 -
Winch's support for x86_64 is now classified with tier 1 support in Wasmtime.
#10755 -
Winch's support for aarch64 now implements stack checks to pass many more spec
tests.
#10763 -
Cranelift's s390x backend now has full support for the
f128
type.
#10774 -
Wasmtime's C API for the component model has initial support for calling
functions.
#10697
#10841
#10858
#10864
#10877 -
The
wasmtime wast
command now has a--generate-dwarf
flag to show
filename/line number information for backtraces.
#10780
Changed
-
The shape of
bindgen!
-generatedadd_to_linker
functions has changed with
the removal ofGetHost
and replacement of aHasData
trait. For more
information see the associated PR.
#10770 -
Wasmtime's
Store<T>
now requires thatT: 'static
. This is done in
preparation for merging WASIp3 work to the main repository with some more
information on the associated PR.
#10760 -
The
wasmtime::component::Instance::instance_pre
method is now public.
#10761 -
Wasmtime and Cranelift's minimnum supported version of Rust (MSRV) is now
1.85.0.
#10785 -
Cranelift's
debugtrap
on aarch64 now generatesbrk #0xf000
for debuggers
to recognize it.
#10813 -
The wasi-http implementation no longer generates a trap if the handle to
receive the response on the host is dropped early.
#10833 -
The
wasmtime serve
command will now send some boilerplate descriptive HTML
on a 500 server error instead of nothing.
#10851 -
A significant amount of work has gone into the new assembler for the x64
backend. Too many PRs to list here but progress continues apace at defining
all machine instructions in a standalone crate. -
Cranelift will now reject unimplemented big-endian loads/stores on backends
that do not implement this functionality.
#10863 -
The
wasmtime explore
generated HTML handles large modules better now.
#10892 -
Wasmtime's internal representation of
wasmtime::Func
has changed and a
previous optimization ofFunc::call
has been lost. If affected it'd
recommended to useFunc::call_unchecked
instead or to open an issue.
#10897
v33.0.0: Release Wasmtime 33.0.0 (#10812)
33.0.0
Released 2025-05-20.
Added
-
Cranelift now has initial support for
try_call
andtry_call_indirect
instructions, to be used in the future for the WebAssembly exception-handling
proposal. Wasmtime does not yet implement this proposal yet.
#10510
#10557
#10593 -
Cranelift can now optimize some simple possibly-side-effectful instructions,
such as division.
#10524 -
Wasmtime now supports
--invoke
for components using the WAVE format.
#10054 -
Initial support for the Component Model has landed in Wasmtime's C API. Note
that the API is not yet feature-complete, however.
#10566
#10598
#10651
#10675 -
Wasmtime's C++ API is now available from this repository and the
bytecodealliance/wasmtime-cpp repository has been archived. Additionally the
monolithicwasmtime.hh
header file has been split into separate header
files.
#10582
#10600 -
Wasmtime's cookbook-style documentation has been expanded.
#10630 -
Wasmtime's now supports custom yield behavior when using epoch interrupts.
#10671
Changed
-
Wasmtime's bindgen now type-checks export functions in the constructor of
the generated{Worldname}Pre
or{Worldname}
structs, rather than at the
call of the export function.
#10610 -
Wasmtime's
component::Component
andcomponent::Instance
now have consistient
get_export
andget_export_index
methods, which return(ComponentItem, ComponentExportIndex)
andComponentExportIndex
, respectively.
#10597 -
On failure,
wasmtime serve
gives an internal server error response, rather
than closing the connection.
#10645 -
Cranelift's single-pass allocator has been disabled due to being unable to
support internal refactorings in preparation for the WebAssembly exceptions
proposal. Re-enabling this allocator is tracked at
regalloc2#217 for
those interested.
#10554 -
Wasmtime's
{Array,Extern,Struct}Ref
functions will now automatically trigger
a GC.
#10560 -
Wasmtime's GC heaps now use the same translation techniques as linear memories
meaning they have far fewer bounds-checks than before.
#10503 -
Wasmtime's implementation of WASIp2 has moved to
wasmtime_wasi::p2
from the
root of the crate.
#10073 -
Wasmtime will no longer emit calls to Cranelift-defined "libcalls" and instead
everything goes through Wasmtime's libcall mechanism instead, paving the way
for a future change for more efficient stack limit checking in wasm. This can
also improve deserialize-from-disk times and improve page cache usage for
modules that use libcalls as relocations are no longer necessary.
#10657 -
Configuration of caching can now be done through an API instead of exclusively
through a configuration file. Additionally cache-related APIs inConfig
have
changed.
#10665 -
Resources in the Component Model are now stored in a single table per-instance
instead of per-type tables. Guests will see a different pattern of index
allocation but this is not expected to cause any issues at runtime.
#10701
Fixed
-
Some math intrinsics have been fixed when compiled by Rust 1.87+.
#10534 -
Component model libcalls correctly handle platform-specific argument extension
in ABIs.
#10540 -
An off-by-one issue with DWARF debuginfo has been fixed.
#10570 -
The
Config::target
method is no longer gated by a#[cfg]
for an enabled
compiler, it can be used when only theruntime
feature is available.
#10618 -
An issue with "simulated" DWARF has been fixed.
#10681 -
C/C++ headers are now tested that they can be included in isolation, and a
number of issues have been fixed.
#10694
v32.0.0: Release Wasmtime 32.0.0 (#10617)
32.0.0
Released 2025-04-21.
Added
-
{Module,Component}::deserialize_raw
can now be used to deserialize an
in-memory module while relying on external management of the memory.
#10321 -
An initial implementation of wasi-tls has been added.
#10249 -
The
wasmtime
CLI now supports hexadecimal integer CLI arguments.
#10360 -
Cranelift now supports a
log2_min_function_alignment
flag.
#10391 -
A new
wasmtime objdump
subcommand has been added to help explore and debug
*.cwasm
files.
#10405 -
Support for the pooling allocator has been added to the C API.
#10484 -
Support for the guest profiler with the component model has been added.
#10507
Changed
-
Cranelift
MemFlags
now has acan_move
flag which restricts whether a load
or store can be moved.
#10340 -
The
.text
size of Pulley*.cwasm
files should be smaller with less
padding.
#10285 -
The
wasmtime serve
subcommand now implements a graceful shutdown on ctrl-c.
#10394 -
Stack maps used for GC are now stored in a serialized binary format that is
faster to deserialize.
#10404 -
The aegraph implementation in Cranelift has been simplified to remove the
union-find and canonical eclass IDs.
#10471 -
The
store_list
andload_list
helpers have been specialized in components
forf32
andf64
.
#9892 -
Cranelift now removes block params on critical-edge blocks.
#10485 -
The
Linker::define_unknown_imports_as_default_values
API now supports
defining defaults for more kinds of items.
#10500 -
Wasmtime now requires Rust 1.84.0 to compile.
#10520
Fixed
-
Winch compilation of extadd instructions has been fixed.
#10337 -
Fix an issue with DRC collector's barriers.
#10371 -
Loads on
(ref null none)
that can trap are now performed.
#10372 -
Fix reference count management in
AnyRef::from_raw
.
#10374 -
An issue with multi-value returns in Winch has been fixed.
#10370 -
A panic at compile-time from an overflowing shift has been fixed when
targeting aarch64.
#10382 -
The
wasmtime serve
command no longer panics whenhandle
returns before
callingset
.
#10387 -
Winch compilation of
replace_lane
instructions with floats has been fixed.
#10393 -
An invalid integer-shift optimization on vector types has been removed.
#10413 -
The DWARF loclist to exprloc optimization has been fixed.
#10400 -
Objects in the DRC collector are now transitively dec-ref's when collected.
#10401 -
A bug with GC rec gropus and registration in an
Engine
has been fixed.
#10435 -
A bug related to GC arrays of GC refs misreported their count of GC edges has
been fixed.
#10453 -
A bug related to appropriately adding stack maps for all GC variables has been
fixed.
#10456
#10468 -
A bug with
array.fill
has been fixed.
#10470 -
GC structs are no longer reordered to optimize their size to fix subtyping.
#10463 -
Panics related to exceptions and components being mixed has been fixed.
#10473 -
Winch stack parameter alignment has been fixed.
#10513 -
Rendering inline function frames in a trap backtrace has been fixed.
#10523
v31.0.0: Release Wasmtime 31.0.0 (#10428)
31.0.0
Released 2025-03-20.
Added
-
Winch's implementation of the SIMD proposal for WebAssembly is now
feature-complete (but still being fuzzed).
#10180
#10170
#10203
#10202
#10210
#10213
#10224
#10205
#10226
#10228
#10236
#10241
#10243
#10247
#10271
#10284
#10288
#10296 -
The pytorch implementation in wasmtime-wasi-nn now has GPU support.
#10204 -
Cranelift now supports emitting the AArch64
extr
instruction.
#10229 -
Cranelift now supports emitting the x64
shld
instruction.
#10233 -
Initial support for the stack-switching proposal has started to land, but it
is not complete just yet.
#10251
#10265
#10255
Changed
-
Pulley's implementation of loads/stores to linear memory has changed to
better support optimizations and reduction of interpreter opcodes in the
final binary.
#10154 -
Cranelift's verifier now ensures that integers used as address types have the
correct width.
#10209 -
Wasmtime and Cranelift's minimum supported version of Rust is now 1.83.0.
#10264 -
Wasmtime now mentions the filename when the input cannot be opened on the CLI.
#10292 -
All types are now generated in
component::bindgen!
, even if they're not
reachable.
#10311 -
Tables allocated with the system allocator now use
alloc_zeroed
(aka
calloc
) for allocation.
#10313
Fixed
-
GC: the is-null-or-i31ref checks have been fixed.
#10221 -
GC: an incorrect assertion and canonicalized types for runtime usage has been
fixed.
#10223 -
GC: subtype checks for imported globals during instantiation have been fixed.
#10304 -
GC: exposing references to wasm in the
gc_alloc_raw
libcall has been fixed.
#10322 -
Winch's fuel checks correctly sync fuel before the check now.
#10231 -
Winch's treatment of stores and other trapping ops has been fixed on AArch64.
#10201 -
Winch's handling of the shadow stack pointer has been fixed on AArch64.
#10263 -
Winch's handling of address calculations has been fixed on AArch64.
#10297 -
Winch's handling of multivalue return of constants has ben fixed.
#10315