Releases: bytecodealliance/wasmtime
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
Fixed
v20.0.2: Release Wasmtime 20.0.2 (#8574)
v20.0.1: Release Wasmtime 20.0.1 (#8538)
v20.0.0: Release Wasmtime 20.0.0 (#8420)
20.0.0
Released 2024-04-22.
Added
-
Support for shared WebAssembly memories has been added to the C API.
#7940 -
A
Component::component_type
method has been added to reflect on the imports
and exports of a component.
#8078 -
The
with
key inbindgen!
now supports remapping entire packages and
namespaces.
#8083 -
Winch now supports the component model by using Cranelift to generate
trampolines.
#8082
#8109 -
The WASI-NN backend now supports ONNX.
#7691 -
The
wasmtime
CLI now has an-S inherit-env
flag for inheriting the entire
process environment.
#8168 -
Winch now supports the WebAssembly memory64 proposal.
#8194 -
Embedders can now opt-in to allowing wasmtime-wasi to block the current thread
with file operations, for example.
#8190 -
A
wasmtime::CodeBuilder
type has been added to refine the configuration of
compiling aModule
or aComponent
.
#8181 -
The
wasmtime serve
subcommand now enables configuring preopened directories
and environment variables.
#8279
Changed
-
Support for WebAssembly GC is in the process of being implemented which has
required refactoring and reimplementing the existing gc support for
externref
. Many APIs in this area has changed, see linked PRs for more
details. Note that thewasm_*
parts of the C API no longer support
externref
.
#8011
#8196 -
The
wasmtime::component::Val
type no longer stores type information and
instead must be interpreted in the context of a type.
#8062 -
The arguments required for
ResourceAny::try_from_resource
have been
simplified by refactoring the internal representation.
#8061 -
The arguments required for
wasmtime::component::Linker::func_new
have been
simplified by refactoring the internal representation.
#8070 -
The pooling allocator is now enabled by default with
wasmtime serve
.
#8073 -
The error message for missing imports in has been improved with components.
#7645 -
Wasmtime's MSRV is now 1.75.0.
#8205 -
Wasmtime's translation of table-related instructions has improved codegen in
some common cases, especially withcall_indirect
.
#8063
#8125
#8124
#8134
#8137
#8162
#8159
#8172
#8171
#8139
#8206 -
Book-based documentation has been reordered and refactored.
#8130 -
The
-S common
flag is renamed to-S cli
, to better reflect that it provides
the wasi-cli APIs.-S common
is still accepted for now, and will be deprecated
in the future.
#8166 -
The tail-call calling convention now supports callee-saved registers to
improve performance and allow enabling this WebAssembly proposal by default in
the future.
#8246 -
The
wasmtime-wasi
crate has been refactored to restructure some items and
documentation has been added for most items.
#8228 -
Support for the WebAssembly
threads
proposal is now gated by an
on-by-default Cargo feature namedthreads
.
#8260 -
Borrow-checking in
wiggle
has been optimized to not be as fine-grained any
more. This is a breaking change if users are relying on the ability to safely
mutably borrow disjoint regions of memory.
#8277
Fixed
-
Connection timeouts with
wasi-http
have been fixed.
#8085 -
Generating bindings with
bindgen!
now works correctly when some WIT types
are not used.
#8065 -
Errors in
wasi-http
are no longer accidentally returned as traps.
#8272 -
C API bindings now depend on
wasmtime-wasi
instead ofwasi-common
, and the
wasi_config_preopen_socket
function is no longer available as a result.
#8066
v19.0.2: Release Wasmtime 19.0.2 (#8329)
v18.0.4: Release Wasmtime 18.0.4 (#8328)
v17.0.3: Release Wasmtime 17.0.3 (#8337)
17.0.3
Released 2024-04-11
Fixed
- cranelift: Include clobbers and outgoing args in stack limit.
#8334