Skip to content

Releases: bytecodealliance/wasmtime

v15.0.1: Release Wasmtime 15.0.1 (#7619)

01 Dec 19:02
d2d52de
Compare
Choose a tag to compare

15.0.1

Released 2023-12-01.

Fixed

  • The wasi:random/insecure{,_seed} interfaces are now available through the
    CLI.
    #7614

  • A stray debugging println! was removed.
    #7618

v15.0.0: Release Wasmtime 15.0.0 (#7557)

20 Nov 15:58
6f0da84
Compare
Choose a tag to compare

15.0.0

Released 2023-11-20.

Added

  • Multiple versions of interfaces are now supported in bindgen!.
    #7172

  • UDP has been implemented in wasi:sockets.
    #7148
    #7243

  • 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

Changed

  • 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

Fixed

  • 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

Cranelift

  • 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

v14.0.4: Release Wasmtime 14.0.4 (#7431)

01 Nov 18:52
5fc1252
Compare
Choose a tag to compare

14.0.4

Released 2023-11-01

Fixed

  • Using the --dir argument combined with a ::-remapped path no longer prints
    a warning about compatibility with the old CLI and works with remapping.
    #7416

  • Consecutive file writes in preview2 have been fixed.
    #7394

v14.0.3: Release Wasmtime 14.0.3 (#7399)

30 Oct 16:04
fd1e948
Compare
Choose a tag to compare

14.0.3

Released 2023-10-29

Fixed

  • 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

v14.0.2: Release Wasmtime 14.0.2 (#7367)

26 Oct 15:53
2ade3ad
Compare
Choose a tag to compare

14.0.2

Released 2023-10-26

Fixed

  • Make the wasmtime::unix module accessible on macOS again.
    #7360

  • Inter-crate dependencies between cranelift-* crates now disable the
    default feature meaning that it's possible for embedders to depend on
    cranelift-codegen as well without the default feature.
    #7369

v13.0.1: Release Wasmtime 13.0.1 (#7375)

26 Oct 14:53
fddcc98
Compare
Choose a tag to compare

13.0.1

Released 2023-10-26

Fixed

  • Make the wasmtime::unix module accessible on macOS again.
    #7360

v14.0.1: Release Wasmtime 14.0.1 (#7334)

23 Oct 18:38
402d3da
Compare
Choose a tag to compare

14.0.1

Released 2023-10-23

Fixed

  • Cranelift: preserve uext and sext flags for parameters on x86_64 and apple
    aarch64. Note that this does not affect Wasmtime and is only intended for
    Cranelift embedders such as rustc_codegen_cranelift.
    #7333

v14.0.0: Release Wasmtime 14.0.0 (#7308)

20 Oct 16:31
2da78ca
Compare
Choose a tag to compare

14.0.0

Released 2023-10-20

One of the larger changes in this release is a redesign of Wasmtime's CLI
arguments and where arguments are passed. This means that previous invocations
of the wasmtime CLI executable will need to be updated. No functionality was
removed but most of it is behind new flags. One major change is that Wasmtime
CLI flags are now grouped behind short options like -O. For example

wasmtime run --opt-level 2 foo.wasm

is now:

wasmtime run -O opt-level=2 foo.wasm

Additionally options prefixed with --enable-* or --disable-* now
consistently are considered boolean setters. For example:

wasmtime run --disable-cache foo.wasm

is now:

wasmtime run -C cache=n foo.wasm

Options can be explored with wasmtime -C help for example, and wasmtime -h
will show all option groups that can be expanded.

Another major change in the CLI is that any CLI argument which positionally
comes after the wasm file specified will be passed as an argument to the guest
module. For example this invocations

wasmtime run foo.wasm --epoch-interruption

was previously accepted as enabling epoch interruption for the foo.wasm file.
This is now interpreted as if it were ./foo.wasm --epoch-interruption,
however, passing the flag to the wasm file itself. Flags to Wasmtime must now
come after Wasmtime's subcommand (in this case run) and before the wasm file
that's being run, for example:

wasmtime run -W epoch-interruption foo.wasm

More information about this change can be found on
#6925 and
#6946.

Added

  • Added the wasmtime::FrameInfo::module method, which returns the
    wasmtime::Module associated with the stack frame.

  • The wasmtime::component::Linker type now implements Clone.
    #7032

  • Wasmtime's TypedFunc API now supports the v128 WebAssembly type on x86_64
    and aarch64.
    #7010

  • Support for resources exported from a WebAssembly guest has been added to the
    component bindgen! macro.
    #7050

  • The C API now supports learning about a module's image_range.
    #7064

  • Passing values between components is now possible with a more complete
    implementation of type-checking of values.
    #7065

  • Types representing resources can now be customized with bindgen!.
    #7069

  • Wasm-defined globals and memories are now included in core dumps, and the
    wasmtime::WasmCoreDump type is now serializable.
    #6935
    #7078

  • Initial experimental support for Intel MPK has been added to support running
    more instances concurrently.
    #7072

  • The implementation of wasi:http now supports inbound requests in addition to
    outbound requests. A new wasmtime serve command is an example way of
    handling http requests with wasm files.
    #7091

  • The C API now supports Wasmtime's "host memory creation" API to customize the
    allocation of linear memories.
    #7115

  • The C API now supports asynchronous invocation of WebAssembly programs.
    #7106

  • The C API now supports Wasmtime's InstancePre<T> type.
    #7140

  • The wasi:sockets/ip-name-lookup interface is now implemented by Wasmtime.
    #7109

Changed

  • Wasmtime's CLI has been significantly overhauled. See the note above.
    #6925
    #6946

  • The wasmtime::FrameInfo::module_name has been removed, however you can now
    get identical results by chaining wasmtime::FrameInfo::module and
    wasmtime::Module::name: my_frame.module().name().

  • WASI interfaces have seen significant work since the previous release. Streams
    for example have a new backpressure and flushing design. Additionally WIT
    resources are now used ubiquitously throughout the specification and
    implementation.
    #6877
    #7029
    #7090

  • The implementation of wasi:http now uses {input,output}-stream from the
    wasi:io/streams interface.
    #7056

  • Lifting and lowering of the list<u8> component values has been significantly
    optimized.
    #6971

  • The wasmtime-c-api crate is now additionally built as an rlib as well as the
    previous cdylib/staticlib combo.
    #6765

Fixed

  • Support referencing stack slots in the DWARF debug info.
    #6960

  • Printing unicode to stdio on Windows has been fixed.
    #6825

  • Building for x86_64-linux-android has been fixed.
    #7055

  • Fixed stdout/stderr becoming nonblocking by accident with WASI preview2 on
    macOS.
    #7058

  • Fixed some character boundary-related panics in the preview2 implementation of
    preview1.
    #7011

  • Fixed an issue of guests sleeping for an incorrect amount of time with
    preview2.
    #6993

  • Cranelift will now return an error when running out of temporaries in a very
    large function instead of panicking.
    #7114

v13.0.0: Release Wasmtime 13.0.0 (#7067)

20 Sep 15:27
aec4b25
Compare
Choose a tag to compare

13.0.0

Released 2023-09-20

Added

  • Configuration of mach ports vs signals on macOS is now done through a Config
    instead of at compile time.
    #6807

  • Engine::detect_precompiled{,_file} can be used to to determine whether some
    bytes or a file look like a precompiled module or a component.
    #6832
    #6937

  • A new feature "wmemcheck" has been added to enable Valgrind-like detection of
    use-after-free within a WebAssembly guest module.
    #6820
    #6856

  • The wasmtime CLI now supports executing components.
    #6836

  • Support for WASI preview2's TCP sockets interface has been added.
    #6837

  • Wasmtime's implementation of the wasi-nn proposal now supports named models.
    #6854

  • The C API now supports configuring native_unwind_info,
    dynamic_memory_reserved_for_growth, target, and Cranelift settings.
    #6896
    #6934

  • The wasmtime crate now has initial support for component model bindings
    generation for the WIT resource type.
    #6886

  • Cranelift's RISC-V backend now has a complete implementation of the
    WebAssembly SIMD proposal. Many thanks to Afonso Bordado for all their
    contributions!
    #6920
    #6924

  • The bindgen! macro in the wasmtime crate now supports conditional
    configuration for which imports should be async and which should be
    synchronous.
    #6942

Changed

  • The pooling allocator was significantly refactored and the
    PoolingAllocationConfig has some minor breaking API changes that reflect
    those changes.

    Previously, the pooling allocator had count slots, and each slot had N
    memories and M tables. Every allocated instance would reserve those N
    memories and M tables regardless whether it actually needed them all or
    not. This could lead to some waste and over-allocation when a module used less
    memories and tables than the pooling allocator's configured maximums.

    After the refactors in this release, the pooling allocator doesn't have
    one-size-fits-all slots anymore. Instead, memories and tables are in separate
    pools that can be allocated from independently, and we allocate exactly as
    many memories and tables as are necessary for the instance being allocated.

    To preserve your old configuration with the new methods you can do the following:

    let mut config = PoolingAllocationConfig::default();
    
    // If you used to have this old, no-longer-compiling configuration:
    config.count(count);
    config.instance_memories(n);
    config.instance_tables(m);
    
    // You can use these equivalent settings for the new config methods:
    config.total_core_instances(count);
    config.total_stacks(count); // If using the `async` feature.
    config.total_memories(count * n);
    config.max_memories_per_module(n);
    config.total_tables(count * m);
    config.max_tables_per_module(m);

    There are additionally a variety of methods to limit the maximum amount of
    resources a single core Wasm or component instance can take from the pool:

    • PoolingAllocationConfig::max_memories_per_module
    • PoolingAllocationConfig::max_tables_per_module
    • PoolingAllocationConfig::max_memories_per_component
    • PoolingAllocationConfig::max_tables_per_component
    • PoolingAllocationConfig::max_core_instances_per_component

    These methods do not affect the size of the pre-allocated pool.
    #6835

  • Builder methods for WASI contexts now use &mut self instead of self.
    #6770

  • Native unwinding information is now properly disabled when it is configured to
    be turned off.
    #6547

  • Wasmtime's minimum supported Rust version (MSRV) is now 1.70.0. Wasmtime's
    MSRV policy of supporting the last three releases of Rust (N-2) is now
    additionally documented. More discussion can additionally be found on the PR
    itself.
    #6900

  • Wasmtime's support for DWARF debugging information has seen some fixes for
    previously reported crashes.
    #6931

Removed

  • Wasmtime's experimental implementation of wasi-crypto has been removed. More
    discussion of this change can be found on
    #6732
    and
    #6816

  • Support for union types in the component model has been removed.
    #6913

v12.0.2: [12.0.0] Fix test expectations (#7038)

14 Sep 22:24
79a5d2a
Compare
Choose a tag to compare
* Fix test expectations

[automatically-tag-and-release-this-commit]

* CI: upgrade to qemu 8.0.4. (#6849)

* CI: upgrade to qemu 8.0.4.

This should resolve a bug in qemu triggered by changes in #6820
(see
[here](https://github.com/bytecodealliance/wasmtime/pull/6820#issuecomment-1678908361)).

* ci: Update QEMU patch for 8.0.2

---------

Co-authored-by: Afonso Bordado <afonsobordado@az8.co>

---------

Co-authored-by: Chris Fallin <chris@cfallin.org>
Co-authored-by: Afonso Bordado <afonsobordado@az8.co>