Releases: bytecodealliance/wasmtime
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
wasmtime
CLI's-Wmax-wasm-stack
option now automatically configures
the async stack size as well. A new-Wasync-stack-size
option 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
wasmtime
crate embedding API now hasArrayRef
for allocating wasm GC
arrays.
#9145 -
Cranelift now has a
stack_switch
CLIF 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_tracing
option, which will
trace the value oflist
arguments. The new behavior of thetracing
option
is that it does not printlist
values withoutverbose_tracing
also 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
async
and 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-stream
andoutput-stream
for
filesystems inwasmtime-wasi
have 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
wasmtime
CLI will now use the async version of I/O where possible to
properly support-Wtimeout
and timing out instances blocked in I/O.
#9184
Fixed
-
Use
tracing::Instrument
in 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
CallHook
API when using the component model.
#9196 -
The compile time for a component model
enum
type 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_clone
function was added to the C API.
#8907 -
Wasmtime now has basic support for allocating a
StructRef
in the embedder
API.
#8933 -
The
wasmtime run
subcommand now support a--argv0
flag 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-config
proposal 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-http
implement theDebug
trait.
#8979 -
The
wasmtime explore
subcommand 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-trap
flag towasmtime run
now supports components.
#9021 -
An initial implementation of the
wasi-keyvalue
proposal was added to
Wasmtime.
#8983
#9032
#9050
#9062 -
An
unsafe
API has been added to unload process trap handlers.
#9022 -
The s390x backend now fully supports tail calls.
#9052
Changed
-
The
flags
type 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::Closed
when
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::Val
type now implements theCopy
trait.
#9024 -
Wasmtime's wasi-nn implementation has been updated to track the upstream
specification.
#9056 -
Names provided to
trappable_imports
inbindgen!
are now validated to be
used.
#9057 -
Support for multi-package
*.wit
files 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-provider
which 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-http
crate has been refactored to better match the
wasmtime-wasi
crate.
#8861 -
Support for caching
call_indirect
sites 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_loc
sections for native debuggers has been
fixed.
#8753 -
Wasmtime's
no_std
build for riscv64 has been fixed.
#8770 -
A bug related to lost
Waker
instances with async stdio streams has been
fixed.
#8782 -
Configuration of
trappable_error_type
has 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_if
and 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_RUNTIME
option 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}-android
have 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.h
for use with
no_std
targets.
#8644 -
Release binaries for x86_64 Alpine Linux have been added.
#8668 -
A new
Component::define_unknown_imports_as_traps
function 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_dir
function no longer always returnstrue
in the
C API. Additionallywasi_config_set_env
andwasi_config_set_argv
may 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 generatedGetHost
traits and
add_to_linker_get_host
functions which enable a more general means by which
to acquire host implementations from a store'sT
.
#8448 -
The
wasmtime serve
subcommand will now dynamically determine whether to use
the pooling allocator by default based on the system's available virtual
memory.
#8610 -
Implementations of
Host
traits in thewasmtime-wasi
crate 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::new
is now available even
when thecranelift
feature 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 explore
now 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 thewith
module is used via newpub use
statements.
#8721 -
The
WasiCtxBuilder::socket_addr_check
function now takes anasync
closure.
#8715 -
The
Func::wrapN_async
functions 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
read
on 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
f64
comparison instructions has been fixed.
#8685 -
The
SO_REUSEADDR
option 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
v21.0.0: Release Wasmtime 21.0.0 (#8666)
21.0.0
Released 2024-05-20.
Added
-
The
wasmtime explore
subcommand now supports*.wat
files.
#8314 -
Wasmtime now supports DWARF Fission
*.dwp
files.
#8055 -
The
wasmtime
crate now supports#![no_std]
, and more information about
this transition can be found in
#8341.
#8463
#8483
#8485
#8528
#8533 -
A
Config
knob is now available for one-entrycall_indirect
caching to
speed up modules with lots ofcall_indirect
instructions.
#8509 -
Cranelift's riscv64 backend has initial support for the Zfa Extension.
#8536 -
The WebAssembly
tail-calls
proposal is now enabled by default when using the
Cranelift backend, except for the s390x architecture.
#8540
Changed
-
Support for NaN canonicalization on x64 has been optimized to avoid branches.
#8313 -
The
bindgen!
macro now defaults to assuming imports cannot trap, but this
behavior is configurable at macro-generation time.
#8310 -
The
fd_{read,write}
implementations in wasmtime-wasi have been optimized.
#8303 -
The
wasmtime-wasi-http
crate has been refactored and has improved
documentation.
#8332
#8347 -
Unused
with
parameters inbindgen!
now generate an error.
#8371 -
The
fd_read
implementation in wasmtime-wasi now only reads into a single
iovec per call.
#8415 -
The
wasmtime_val_t
type in the C API no longer holds any allocations. This
type must still be manually managed to properly unroot values, however.
#8451 -
Add an optimized "sleep" path for
poll_oneoff
to wasmtime-wasi.
#8429 -
The Wasmtime-internal
wasmtime-runtime
crate has been removed.
#8501 -
The pooling allocator now allows twice as many elements as before.
#8527 -
Using CMake to build the C API has been improved along a number of axes.
#8490
#8497
#8549