Releases: bytecodealliance/wasmtime
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_codeto create awasm_trap_tfrom
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
f128type.
#10774 -
Wasmtime's C API for the component model has initial support for calling
functions.
#10697
#10841
#10858
#10864
#10877 -
The
wasmtime wastcommand now has a--generate-dwarfflag to show
filename/line number information for backtraces.
#10780
Changed
-
The shape of
bindgen!-generatedadd_to_linkerfunctions has changed with
the removal ofGetHostand replacement of aHasDatatrait. 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_premethod is now public.
#10761 -
Wasmtime and Cranelift's minimnum supported version of Rust (MSRV) is now
1.85.0.
#10785 -
Cranelift's
debugtrapon aarch64 now generatesbrk #0xf000for 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 servecommand 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 exploregenerated HTML handles large modules better now.
#10892 -
Wasmtime's internal representation of
wasmtime::Funchas changed and a
previous optimization ofFunc::callhas been lost. If affected it'd
recommended to useFunc::call_uncheckedinstead 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_callandtry_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
--invokefor 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.hhheader 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}Preor{Worldname}structs, rather than at the
call of the export function.
#10610 -
Wasmtime's
component::Componentandcomponent::Instancenow have consistient
get_exportandget_export_indexmethods, which return(ComponentItem, ComponentExportIndex)andComponentExportIndex, respectively.
#10597 -
On failure,
wasmtime servegives 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}Reffunctions 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::p2from 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 inConfighave
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::targetmethod is no longer gated by a#[cfg]for an enabled
compiler, it can be used when only theruntimefeature 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_rawcan 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
wasmtimeCLI now supports hexadecimal integer CLI arguments.
#10360 -
Cranelift now supports a
log2_min_function_alignmentflag.
#10391 -
A new
wasmtime objdumpsubcommand has been added to help explore and debug
*.cwasmfiles.
#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
MemFlagsnow has acan_moveflag which restricts whether a load
or store can be moved.
#10340 -
The
.textsize of Pulley*.cwasmfiles should be smaller with less
padding.
#10285 -
The
wasmtime servesubcommand 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_listandload_listhelpers have been specialized in components
forf32andf64.
#9892 -
Cranelift now removes block params on critical-edge blocks.
#10485 -
The
Linker::define_unknown_imports_as_default_valuesAPI 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 servecommand no longer panics whenhandlereturns before
callingset.
#10387 -
Winch compilation of
replace_laneinstructions 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
Enginehas 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.fillhas 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
extrinstruction.
#10229 -
Cranelift now supports emitting the x64
shldinstruction.
#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_rawlibcall 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
v30.0.2: Release Wasmtime 30.0.2 (#10294)
v30.0.1: Release Wasmtime 30.0.1 (#10272)
30.0.1
Released 2025-02-21.
Fixed
- Fixes an issue building the
cranelift-assembler-x64crate on Windows
when the Rust toolchain is on a different drive than the project using
wasmtime. For more details, see the Zulip discussion. #10270
v30.0.0: Release Wasmtime 30.0.0 (#10250)
30.0.0
Released 2025-02-20.
Added
-
New
wasmtime-wasi-iocrate provides a#![no_std]wasi:io implementation,
factored out ofwasmtime-wasi. Users ofwasmtime-wasidon't have to
depend on this new crate.
#10036 -
Wasmtime's interpreter, Pulley, is now complete and has been listed as
tier 2.
#9897
#9884
#9943
#9944
#9983
#9966
#9935
#10034
#10057
#10095 -
Wasmtime's CI now checks that the repository builds for
aarch64-apple-ios.
Note that no tests are run for this target, so it's still tier 3.
#9888 -
Winch's support for AArch64 and simd on x64 have continued to progress
well. Winch additionally now fully supports thethreadsWebAssembly
proposal.
#9889
#9970
#9950
#9987
#9990
#9959
#10008
#10028
#10029
#10023
#10042
#10050
#10039
#10082
#10092
#10109
#10148
#10147 -
The
memory64WebAssembly feature is now enabled by default. This WebAssembly
proposal is now considered a tier 1 feature.
#9937
#10159 -
Wasmtime's full test suite and CI now includes 32-bit platforms such as x86
and armv7 Linux. These platforms have been added to tier 3 status and use
Pulley as their execution backend.
#10025 -
Initial experimental support for WASIp3 and async features of the Component
Model have started to land. These features are not yet ready for
general-purpose use.
#10044
#10047
#10083
#10103 -
The
wasmtimeCLI now supports using a TOML configuration file via--config
in addition to CLI options.
#9811
#10132 -
Initial support for a new assembler on x64 has been added.
#10110
#10178
Changed
-
wasmtime-wasisplit theWasiViewtrait intoIoViewandWasiView, and
wasmtime-wasi-httpre-usesIoViewinWasiHttpView. Details on porting
for embedders in PR.
#10016 -
wasmtime-wasirenamed some exported types and traits. Embedders which use
Pollable,InputStream,OutputStream,Subscribe,HostInputStream,
HostOutputStream,PollableFuture, orClosureFuturefrom that crate
will need to rename those imports to their new names, describe in PR.
#10036 -
Components using a 64-bit linear memory should never have worked before, but
they're now rejected earlier in the validation process.
#9952 -
Module validation is now deterministic in the face of multiple errors.
#9947 -
Wasmtime's minimum supported version of Rust is now 1.82.0.
#9956 -
Cranelift will now deduplicate
trap[n]zinstructions.
#10004 -
The
--emit-clifoption towasmtime compilenow emits post-optimization
CLIF.
#10011 -
The
signals-based-trapsCargo feature has been removed in favor of
auto-detection of available features based on the#[cfg]directives
available for the target platform.
#9941 -
The
async_stack_zeroingconfiguration knob now covers all stack allocations,
not just those from the pooling allocator.
#10027 -
Wasmtime should work-by-default on more platforms, even those where Cranelift
has no support for the architecture. This is done by ensuring some
architecture and platform-specific bits are removed on unknown platforms (and
Pulley is used instead).
#10107 -
Wasmtime now compiles on platforms missing 64-bit atomics.
#10134
Fixed
-
Fixed a missing case for
Ref::matches_tyshould returntrue.
#9985 -
A bug with using the
single_passregister allocation algorithm on x64/s390x
has been fixed by refactoring how branches are represented.
#10086
#10087 -
A bug with argument extensions on riscv64 has been fixed.
#10069 -
The
PartialEqimplementation forRegisteredTypehas been fixed.
#10091 -
The output of
component::bindgen!now works with#![no_std]crates.
#10105 -
Fix
wasmtime wastwhen combined with--fuel.
#10121 -
The
watfeature of the C API is now plumbed correctly in a few more
locations.
#10124 -
Spurious wake-ups in
blocking_*methods ofInputStreamandOutputStream
have been fixed.
#10113