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-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
v21.0.0: Release Wasmtime 21.0.0 (#8666)
21.0.0
Released 2024-05-20.
Added
-
The
wasmtime exploresubcommand now supports*.watfiles.
#8314 -
Wasmtime now supports DWARF Fission
*.dwpfiles.
#8055 -
The
wasmtimecrate now supports#![no_std], and more information about
this transition can be found in
#8341.
#8463
#8483
#8485
#8528
#8533 -
A
Configknob is now available for one-entrycall_indirectcaching to
speed up modules with lots ofcall_indirectinstructions.
#8509 -
Cranelift's riscv64 backend has initial support for the Zfa Extension.
#8536 -
The WebAssembly
tail-callsproposal 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-httpcrate has been refactored and has improved
documentation.
#8332
#8347 -
Unused
withparameters inbindgen!now generate an error.
#8371 -
The
fd_readimplementation in wasmtime-wasi now only reads into a single
iovec per call.
#8415 -
The
wasmtime_val_ttype 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_oneoffto wasmtime-wasi.
#8429 -
The Wasmtime-internal
wasmtime-runtimecrate 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_typemethod has been added to reflect on the imports
and exports of a component.
#8078 -
The
withkey 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
wasmtimeCLI now has an-S inherit-envflag 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::CodeBuildertype has been added to refine the configuration of
compiling aModuleor aComponent.
#8181 -
The
wasmtime servesubcommand 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::Valtype no longer stores type information and
instead must be interpreted in the context of a type.
#8062 -
The arguments required for
ResourceAny::try_from_resourcehave been
simplified by refactoring the internal representation.
#8061 -
The arguments required for
wasmtime::component::Linker::func_newhave 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 commonflag is renamed to-S cli, to better reflect that it provides
the wasi-cli APIs.-S commonis 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-wasicrate has been refactored to restructure some items and
documentation has been added for most items.
#8228 -
Support for the WebAssembly
threadsproposal is now gated by an
on-by-default Cargo feature namedthreads.
#8260 -
Borrow-checking in
wigglehas 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-httphave been fixed.
#8085 -
Generating bindings with
bindgen!now works correctly when some WIT types
are not used.
#8065 -
Errors in
wasi-httpare no longer accidentally returned as traps.
#8272 -
C API bindings now depend on
wasmtime-wasiinstead ofwasi-common, and the
wasi_config_preopen_socketfunction 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