A fast and secure runtime for WebAssembly
Released 2024-02-20.
Released 2024-02-20.
The wasmtime-c-api-impl
crate is now published on crates.io.
#7837
A new EngineWeak
type enables holding a weak pointer to an engine with the
ability to dynamically and fallibly upgrade it to an Engine
.
#7797
The WebAssembly tail calls proposal can now be enabled through the C API. #7811
The import and export types of a Component
can now be inspected at runtime.
#7804
New APIs/types have been added to support a faster version of looking up
module exports without using string lookups with Module::get_export_index
.
#7828
Owned resources represented with ResourceAny
can now be passed as arguments
to functions that require a borrow<T>
parameter.
#7783
Generated structures from wasmtime::component::bindgen!
for exported
interfaces are now all renamed to Guest
to avoid conflicting with WIT names.
#7794
Guest profiler output will now automatically demangle symbols. #7809
The wasmtime
crate now has a runtime
Cargo feature which, if disabled,
enables building Wasmtime with only the ability to compile WebAssembly
modules. This enables compiling Wasmtime's compilation infrastructure, for
example, to WebAssembly itself.
#7766
Support for the old wasi-common
crate and the original implementation of
"WASIp1" aka "preview1" is being deprecated in the wasmtime-wasi
crate.
Users should migrate to the wasmtime_wasi::preview2
implementation, which
supports both WASIp1 and WASIp2, as in the next release the
wasi-common
-based reexports of wasmtime-wasi
will be deleted.
#7881
Released 2024-01-25
The major feature of this release is that the WASI support in Wasmtime is now
considered stable and flagged at an 0.2.0 version approved by the WASI subgroup.
The release was delayed a few days to hold off until the WASI subgroup voted to
approve the CLI and HTTP worlds and they're now on-by-default! Additionally the
component model is now enabled by default in Wasmtime, for example an opt-in
flag is no longer required on the CLI. Note that embeddings still must opt-in to
using the component model by using the wasmtime::component
module.
Cranelift optimizations have been added for "3-way comparisons", or Ord::cmp
in Rust or <=>
in C++.
#7636
#7702
Components now use Wasmtime's compilation cache used for core wasm modules by default. #7649
The Resource<T>
and ResourceAny
types can now be converted between each
other.
#7649
#7712
Minor changes have been made to a number of WITs as they progressed to their official 0.2.0 status. #7625 #7640 #7690 #7781 #7817
The component model is now enabled by default. #7821
The implementation of memory.atomic.{wait,notify}
has been rewritten.
#7629
The wasmtime_wasi::preview2::Table
type has been moved to
wasmtime::component::ResourceTable
.
#7655
Creating a UDP stream now validates the address being sent to. #7648
Defining resource types in Linker<T>
now takes the type to define as a
runtime parameter.
#7680
Socket address checks can now be performed dynamically at runtime. #7662
Wasmtime and Cranelift's MSRV is now 1.73.0. #7739
Bindings for WIT APIs where interfaces have multiple versions are now fixed by putting the version in the generated binding names. #7656
The preview1 fd_{read,write}
APIs are now fixed when a shared memory is
used.
#7755
The preview1 fd_{read,write}
APIs no longer leak an intermediate stream
created.
#7819
Released 2023-12-20.
Add yielding support in wasmtime_store_epoch_deadline_callback
in the C API.
#7476
Support for the wasi_unstable
module ("wasi preview0" canonically) has been
added to the -Spreview2
support in the CLI.
#7548
The original module can now be obtained from an "instance pre" in the C API. #7572
Usage of Mach ports on macOS can now be disabled in the C API. #7595
The preview1-to-preview2 component adapters now import a smaller number of interfaces by default. #7543 #7544
Wasmtime and Cranelift now require Rust 1.72.0 to build. #7554
The default world
supported by wasmtime serve
has been slimmed down to
exactly what wasi:http/proxy
specifies by default. Support for other WASI
APIs can be included with the -S common
command-line flag.
#7597
The wasmtime --version
CLI output will now include date/commit information
when Wasmtime is built from a git checkout.
#7610
MPK support is now explicitly disabled on AMD-based CPUs since the implementation does not currently support it. #7513
Initialization of a WebAssembly data segment with a negative offset is fixed to zero-extend the offset instead of sign-extend. #7559
The reported offset of O_APPEND
files in preview1 has been fixed.
#7586
MPK support does a better job of compacting memories to minimize virtual memory used. #7622
Union node bitpacking has been fixed with egraph optimizations to ensure the minimal cost node is selected. #7465
Equivalent-cost expressions now have ties broken with expression depth in egraphs to prefer "shallow" expression trees. #7456
Long-and-narrow chains of expressions are now optimized into shallow-and-wide trees. #7466
Released 2023-11-20.
Multiple versions of interfaces are now supported in bindgen!
.
#7172
Support for custom stack memory allocation has been added. #7209
The memory_init_cow
setting can now be configured in the C API.
#7227
The splice
method of WASI streams has been implemented.
#7234
Wasmtime binary releases now have a wasmtime-min
executable in addition to
libwasmtime-min.*
libraries for the C API. These showcase a minimal
build of Wasmtime for comparison.
#7282
#7315
#7350
Many changes to wasi:http
WITs have happened to keep up with the proposal as
it prepares to reach a more stable status.
#7161
#7406
#7383
#7417
#7451
Add an error resource to WASI streams. #7152
Syntax in bindgen!
's trappable_error_type
configuration has changed.
#7170
TCP errors in wasi:sockets
have been simplified and clarified.
#7120
Wasmtime/Cranelift now require Rust 1.71.0 to compile. #7206
Logging in Wasmtime is now configured with WASMTIME_LOG
instead of
RUST_LOG
.
#7239
Fuel-related APIs on Store
have been refactored and reimplemented with two
new methods set_fuel
and reset_fuel
. Previous methods have been removed.
#7240
#7298
The forward
method of WASI streams has been removed.
#7234
The WebAssembly threads
, multi-memory
, and relaxed-simd
proposals are
now enabled by default.
#7285
Logging is now implemented for wasmtime serve
.
#7366
Filesystem locking has been temporarily removed from WASI. #7355
Wasmtime's implementation of WASI preview1 built on top of preview2
(-Spreview2
) has been enabled by default.
#7365
The wasi:clocks
interface now has two subscribe
functions and a duration
type.
#7358
The wasi:io/poll
interface has seen some refactoring.
#7427
Profiling the first function in a module now works. #7254
Consecutive writes to files in preview2 have been fixed. #7394
Copy-on-write initialization of linear memories has been fixed for components. #7459
Support for proof-carrying code has been added to Cranelift to assist with an extra layer of validation about properties such as WebAssembly memory accesses in the future. #7165 #7180 #7219 #7231 #7262 #7263 #7274 #7280 #7281 #7352 #7389 #7468
Rematerialization of values no longer accidentally overrides LICM. #7306
Inline stack probes no longer make Valgrind unhappy. #7470
Released 2023-10-29
The wasmtime
executable will now attempt to more gracefully handle the
transition from the 13.0.0 CLI arguments and parsing to the changes in 14.0.0.
CLI commands should now warn if they no longer work with the new parser, but
still execute as they previously did. This behavior can be controlled via a
new WASMTIME_NEW_CLI
environment variable if necessary.
#7385
The serve
subcommand of the wasmtime
CLI is now enabled by default for the
wasmtime
executable.
#7392