Skip to content

Releases: bytecodealliance/wasmtime

v21.0.2: Release Wasmtime 21.0.2 (#9363)

09 Oct 17:03
70ceccd
Compare
Choose a tag to compare

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)

24 Sep 21:40
b4cb894
Compare
Choose a tag to compare

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)

20 Sep 15:43
0b195ef
Compare
Choose a tag to compare

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 has ArrayRef 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 of list arguments. The new behavior of the tracing option
    is that it does not print list values without verbose_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 and output-stream for
    filesystems in wasmtime-wasi have been refactored to directly implement
    the corresponding host traits. This additionally helps cleanup the internal
    organization of host-side resources in wasmtime-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)

20 Aug 15:19
6fc3d27
Compare
Choose a tag to compare

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 the Debug 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 to wasmtime 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 the Copy trait.
    #9024

  • Wasmtime's wasi-nn implementation has been updated to track the upstream
    specification.
    #9056

  • Names provided to trappable_imports in bindgen! are now validated to be
    used.
    #9057

  • Support for multi-package *.wit files now requires a package ...; header
    at the top of the file.
    #9053

v23.0.2: Release Wasmtime 23.0.2 (#9117)

12 Aug 18:20
694ee66
Compare
Choose a tag to compare

23.0.2

Released 2024-08-12.

Changed

  • Building the c-api from crates.io now correctly configures an include
    directory for header files with configured versions of header files.
    #9102
  • Wasmtime no longer requires linking with libm in Linux builds, which
    fixes linking against musl in some cases.
    #9100

v23.0.1: Release Wasmtime 23.0.1 (#8988)

22 Jul 16:28
fb531d2
Compare
Choose a tag to compare

23.0.1

Released 2024-07-22.

Fixed

  • Fixed some issues when auto-publishing crates to crates.io.
    #8986

v23.0.0: Release Wasmtime 23.0.0 (#8980)

22 Jul 15:04
3eb0268
Compare
Choose a tag to compare

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
    named call-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)

20 Jun 16:52
761f044
Compare
Choose a tag to compare

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 returns true in the
    C API. Additionally wasi_config_set_env and wasi_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 generated GetHost traits and
    add_to_linker_get_host functions which enable a more general means by which
    to acquire host implementations from a store's T.
    #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 the wasmtime-wasi crate are now for
    WasiImpl<T> instead of blanket impls for T.
    #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 that Func::new is now available even
    when the cranelift 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 the with module is used via new pub use
    statements.
    #8721

  • The WasiCtxBuilder::socket_addr_check function now takes an async 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 with wasmtime serve.
    #8738

v21.0.1: Release Wasmtime 21.0.1 (#8679)

22 May 18:05
cedf9aa
Compare
Choose a tag to compare

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)

20 May 20:23
aaa39cb
Compare
Choose a tag to compare

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-entry call_indirect caching to
    speed up modules with lots of call_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 in bindgen! 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

  • Pooling allocator CLI options are now respected with the wasmtime serve
    subcommand.
    #8525

  • The read implementation for file input streams in wasmtime-wasi now
    correctly handles zero-length reads.
    #8611