Releases: bytecodealliance/wasmtime
v22.0.1: Release Wasmtime 22.0.1 (#9364)
22.0.1
Released 2024-10-09.
Fixed
-
Fix a runtime crash when combining tail-calls with host imports that capture a
stack trace or trap.
GHSA-q8hx-mm92-4wvg -
Fix a race condition could lead to WebAssembly control-flow integrity and type
safety violations.
GHSA-7qmx-3fpx-r45m
v21.0.2: Release Wasmtime 21.0.2 (#9363)
21.0.2
Released 2024-10-09.
Fixed
-
Fix a runtime crash when combining tail-calls with host imports that capture a
stack trace or trap.
GHSA-q8hx-mm92-4wvg -
Fix a race condition could lead to WebAssembly control-flow integrity and type
safety violations.
GHSA-7qmx-3fpx-r45m
v25.0.1: Release Wasmtime 25.0.1 (#9306)
25.0.1
Released 2024-09-24.
Added
- The
wasmtimeCLI's-Wmax-wasm-stackoption now automatically configures
the async stack size as well. A new-Wasync-stack-sizeoption was
additionally added to configure it too.
#9302
v25.0.0: Release Wasmtime 25.0.0 (#9289)
25.0.0
Released 2024-09-20.
Added
-
The WinML backend of wasmtime-wasi-nn now supports FP16 and I64.
#8964 -
Pooling allocator configuration options for table elements and core instance
size can now be changed on the CLI.
#9138 -
Wasmtime now supports the extended-const WebAssembly proposal.
#9141 -
The
wasmtimecrate embedding API now hasArrayReffor allocating wasm GC
arrays.
#9145 -
Cranelift now has a
stack_switchCLIF instruction to be used with the
WebAssembly stack switching proposal.
#9078 -
There are now more constructors available on
bindgen!-generated structures
for component exports now which use instantiated components rather than
pre-instantiated components.
#9177
Changed
-
The host bindgen macro now accepts a new
verbose_tracingoption, which will
trace the value oflistarguments. The new behavior of thetracingoption
is that it does not printlistvalues withoutverbose_tracingalso being
present.
#9262 -
Wasmtime's support for WASI is now listed with the 0.2.1 version instead of
0.2.0. This is expected to not cause fallout or breakage, but please open an
issue if you see any problems.
#9063 -
Work continues on Winch's AArch64 backend.
#9114
#9092
#9171 -
Component model resource methods can now be generated as
asyncand will do
so by default if async is enabled for all functions.
#9091 -
Work has continued on Wasmtime's interpreter backend, Pulley.
#9089 -
The internal implementation of
input-streamandoutput-streamfor
filesystems inwasmtime-wasihave been refactored to directly implement
the corresponding host traits. This additionally helps cleanup the internal
organization of host-side resources inwasmtime-wasi.
#9129 -
Wasmtime now uses the new "user" stack maps in Cranelift rather than the old
regalloc-based stack maps for GC references.
#9082 -
Wasmtime's handling of WebAssembly features now works slightly differently
from before to provide better error messages and fewer panics on unsupported
WebAssembly features depending on compiler and target selection. Additionally
the reference-types WebAssembly proposal is always on-by-default regardless of
crate features.
#9158
#9162 -
The
wasmtimeCLI will now use the async version of I/O where possible to
properly support-Wtimeoutand timing out instances blocked in I/O.
#9184
Fixed
-
Use
tracing::Instrumentin generated bindings when tracing and async are
enabled, ensuring that spans aren't present in traces from unrelated async
tasks.
#9217
#9263 -
Completed support for the
CallHookAPI when using the component model.
#9196 -
The compile time for a component model
enumtype with many cases should be
much improved now.
#9122 -
Some minor bugfixes have been made for when Wasmtime is working with split
DWARF in WebAssembly files.
#9109
#9132
#9134
#9139
#9151 -
An issue with bounds checks and dynamic checks has been fixed in Winch to
ensure bounds checks are correctly implemented.
#9156
v24.0.0: Release Wasmtime 24.0.0 (#9147)
24.0.0
Released 2024-08-20.
Added
-
A new
wasmtime_engine_clonefunction was added to the C API.
#8907 -
Wasmtime now has basic support for allocating a
StructRefin the embedder
API.
#8933 -
The
wasmtime runsubcommand now support a--argv0flag indicating the
value of the first element to arguments reported to wasm if it shouldn't be
the default of the wasm binary name itself.
#8961 -
Support for Winch on AArch64 continued to improve.
#8921
#9018
#9033
#9051 -
An initial implementation of the
wasi-runtime-configproposal was added to
Wasmtime.
#8950
#8970
#8981 -
Initial support for f16 and f128 in Cranelift continued to improve.
#8893
#9045 -
More types in
wasmtime-wasi-httpimplement theDebugtrait.
#8979 -
The
wasmtime exploresubcommand now supports exploring CLIF too.
#8972 -
Support for SIMD in Winch has begun, but it is not complete yet.
#8990
#9006 -
Initial work on Pulley, an interpreter for Wasmtime, has begun.
#9008
#9013
#9014 -
The
-Wunknown-imports-trapflag towasmtime runnow supports components.
#9021 -
An initial implementation of the
wasi-keyvalueproposal was added to
Wasmtime.
#8983
#9032
#9050
#9062 -
An
unsafeAPI has been added to unload process trap handlers.
#9022 -
The s390x backend now fully supports tail calls.
#9052
Changed
-
The
flagstype in the component model now has a hard limit of 32-or-fewer
flags. For more information about this transition see
WebAssembly/component-model#370.
#8882 -
Multiple returns for functions in the component model are now gated by default
and are planned to be removed.
#8965 -
TCP streams in WASIp2 will now immediately return
StreamError::Closedwhen
the TCP stream is closed or shut down.
#8968
#9055 -
Cranelift will now perform constant propagation on some floating-point
operations.
#8954 -
Wasmtime and Cranelift now require at least Rust 1.78.0 to compile.
#9010 -
The
wasmtime::Valtype now implements theCopytrait.
#9024 -
Wasmtime's wasi-nn implementation has been updated to track the upstream
specification.
#9056 -
Names provided to
trappable_importsinbindgen!are now validated to be
used.
#9057 -
Support for multi-package
*.witfiles now requires apackage ...;header
at the top of the file.
#9053
v23.0.2: Release Wasmtime 23.0.2 (#9117)
v23.0.1: Release Wasmtime 23.0.1 (#8988)
v23.0.0: Release Wasmtime 23.0.0 (#8980)
23.0.0
Released 2024-07-22.
Added
-
Support for DWARF debugging information with native debuggers is now
implemented for components.
#8693 -
CLIF frontends can now define their own stack maps.
#8728
#8876 -
Wasmtime now supports the custom-page-sizes proposal.
#8763 -
This project now publishes a crate named
wasi-preview1-component-adapter-providerwhich provides the WASIp1 adapters
as constants in Rust code.
#8874
Changed
-
Call hooks now have access to the full
StoreContextMut<T>.
#8791 -
Call hooks have been moved behind an off-by-default compile-time Cargo feature
namedcall-hook.
#8795
#8808 -
Wasmtime's minimum supported Rust version is now 1.77.0.
#8796 -
Resumable traps have been removed from Cranelift.
#8809 -
Traps are not GC safepoints any more in Cranelift.
#8810 -
Support for Intel memory protection keys is now disabled by default at compile
time and is gated behind a Cargo feature.
#8813 -
Exports from components have been refactored and redesigned to support
skipping name lookups at runtime where possible.
#8786 -
Wasmtime's lookup of versioned component exports now takes semver into
account in the same manner as imports.
#8830 -
Wasmtime's guest profiler will now take samples at hostcall boundaries.
#8802 -
Wasmtime's pooling allocator now by default allows 32-bit linear memories to
grow to their full size of 4G.
#8849 -
The size of WASI adapter binaries has been optimized.
#8858
#8859 -
The
wasmtime-wasi-httpcrate has been refactored to better match the
wasmtime-wasicrate.
#8861 -
Support for caching
call_indirectsites has been removed.
#8881 -
Wasmtime's x86_64 binary releases are now based on AlmaLinux 8 instead of
CentOS 7.
#8892
Fixed
-
An issue with generated
.debug_locsections for native debuggers has been
fixed.
#8753 -
Wasmtime's
no_stdbuild for riscv64 has been fixed.
#8770 -
A bug related to lost
Wakerinstances with async stdio streams has been
fixed.
#8782 -
Configuration of
trappable_error_typehas been improved in Wasmtime's
bindgen!macro.
#8833 -
Prints to stdout/stderr without a newline now work better with
wasmtime serve.
#8877 -
An issue with
br_ifand stack-related state has been fixed in Winch.
#8886
v22.0.0: Release Wasmtime 22.0.0 (#8844)
22.0.0
Released 2024-06-20.
Added
-
The CMake-based build of Wasmtime's C API now adds a
WASMTIME_FASTEST_RUNTIMEoption which activates the "fastest-runtime"
compilation profile which enables LTO.
#8554 -
Cranelift supports more instructions in the RISC-V Zfa and ZiCond extensions.
#8582
#8695 -
Support for fused-multiply-and-add on RISC-V has been improved.
#8596
#8588 -
Release binaries for
{aarch64,x86_64}-androidhave been added. Note that
Android is still a Tier 3 target.
#8601 -
Wasmtime now supports supertypes and finality in the type hierarchy for wasm
gc.
#8595 -
Lazy initialization of tables can now be tuned with a CLI flags and
configuration option.
#8531 -
Wasmtime now compiles for x86_64 OpenBSD. Note that this is a Tier 3
target and continued support is always appreciated.
#8613 -
Stack slots in Cranelift can now specify custom alignment.
#8635 -
Wasm function names are now used in compiled objects to assist with debugging
and introspection with native tools.
#8627 -
Wasmtime's release artifacts now includes
wasmtime-platform.hfor use with
no_stdtargets.
#8644 -
Release binaries for x86_64 Alpine Linux have been added.
#8668 -
A new
Component::define_unknown_imports_as_trapsfunction has been added to
stub out functions in a component linker.
#8672
Changed
-
Wasmtime and Cranelift's now require Rust 1.76.0 to build.
#8560 -
The
wasi_config_preopen_dirfunction no longer always returnstruein the
C API. Additionallywasi_config_set_envandwasi_config_set_argvmay now
return an error.
#8572 -
Cranelift now updates registers of backend instructions in-place, simplifying
register allocation and assignment.
#8566
#8581
#8592
#8604
#8605 -
Wasmtime now attempts to batch memory decommits into one tight loop.
#8581
#8590 -
Bindings generated with
bindgen!now have generatedGetHosttraits and
add_to_linker_get_hostfunctions which enable a more general means by which
to acquire host implementations from a store'sT.
#8448 -
The
wasmtime servesubcommand will now dynamically determine whether to use
the pooling allocator by default based on the system's available virtual
memory.
#8610 -
Implementations of
Hosttraits in thewasmtime-wasicrate are now for
WasiImpl<T>instead of blanket impls forT.
#8609
#8766 -
The concepts of "virtual sp offset" and "nominal sp" have been removed from all
Cranelift backends.
#8631
#8643 -
The maximum size of linear memory in the pooling allocator is now specified in
bytes instead of pages.
#8628 -
Wasmtime no longer has two different host ABIs for host functions and instead
only has one. The "array" calling convention is now unconditionally used
instead of having a split between the "native" calling convention and the
"array" calling convention. This means thatFunc::newis now available even
when thecraneliftfeature is disabled.
#8629
#8646 -
Wasmtime's C API bindings for CMake have been refactored and now supports
specifying Cargo features directly. Functions that are configured out are now
also gated in header files.
#8642 -
Wasmtime's C API can now be built without Cranelift or Winch.
#8661 -
Wasmtime's release binaries have Winch compiled in by default now.
#8660 -
The output of
wasmtime explorenow shows function names in addition to
indices.
#8639 -
Support for the Wasmtime 13-and-prior CLI has been removed.
#8597 -
Wiggle-based borrow checking has been removed in favor of modeling host usage
of guest memory with Rust-level borrows.
#8702 -
Wasmtime's
bindgen!macro will now generate the same hierarchy of
traits/types/modules even when thewithmodule is used via newpub use
statements.
#8721 -
The
WasiCtxBuilder::socket_addr_checkfunction now takes anasyncclosure.
#8715 -
The
Func::wrapN_asyncfunctions and friends have all been consolidated into
a single function with a slightly different signature of taking a tuple of
arguments rather than "splatted" arguments.
#8732
Fixed
-
Trampoline lookup for wasm gc functions that may use subtyping on the host to
match a guest's desired type now no longer panics.
#8579 -
The total size of arguments, environment variables, and preopens is now
allowed to exceed 64k when using the wasip1 component adapter.
#8594 -
Performing a zero-length
readon file streams is now fixed in WASI.
#8611 -
Tail calls are now turned by default after a mistake was discovered in the
previous releases's intent to enable them by default.
#8682 -
Winch support for
f64comparison instructions has been fixed.
#8685 -
The
SO_REUSEADDRoption is reenabled for Unix platforms withwasmtime serve.
#8738
v21.0.1: Release Wasmtime 21.0.1 (#8679)
21.0.1
Released 2024-05-22.
Fixed
- Fixed outgoing HTTP requests which don't explicitly specify a port.
#8671