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