Skip to content

Releases: bytecodealliance/wasmtime

dev: Start using `#[expect]` instead of `#[allow]` (#9696)

28 Sep 20:31
45b60bd
Compare
Choose a tag to compare
* Start using `#[expect]` instead of `#[allow]`

In Rust 1.81, our new MSRV, a new feature was added to Rust to use
`#[expect]` to control lint levels. This new lint annotation will
silence a lint but will itself cause a lint if it doesn't actually
silence anything. This is quite useful to ensure that annotations don't
get stale over time.

Another feature is the ability to use a `reason` directive on the
attribute with a string explaining why the attribute is there. This
string is then rendered in compiler messages if a warning or error
happens.

This commit migrates applies a few changes across the workspace:

* Some `#[allow]` are changed to `#[expect]` with a `reason`.
* Some `#[allow]` have a `reason` added if the lint conditionally fires
  (mostly related to macros).
* Some `#[allow]` are removed since the lint doesn't actually fire.
* The workspace configures `clippy::allow_attributes_without_reason = 'warn'`
  as a "ratchet" to prevent future regressions.
* Many crates are annotated to allow `allow_attributes_without_reason`
  during this transitionary period.

The end-state is that all crates should use
`#[expect(..., reason = "...")]` for any lint that unconditionally fires
but is expected. The `#[allow(..., reason = "...")]` lint should be used
for conditionally firing lints, primarily in macro-related code.
The `allow_attributes_without_reason = 'warn'` level is intended to be
permanent but the transitionary
`#[expect(clippy::allow_attributes_without_reason)]` crate annotations
to go away over time.

* Fix adapter build

prtest:full

* Fix one-core build of icache coherence

* Use `allow` for missing_docs

Work around rust-lang/rust#130021 which was fixed in Rust 1.83 and isn't
fixed for our MSRV at this time.

* More MSRV compat

v27.0.0: Release Wasmtime 27.0.0 (#9624)

20 Nov 16:19
8eefa23
Compare
Choose a tag to compare

27.0.0

Released 2024-11-20.

Added

  • Support for the Wasm GC proposal is now complete. A new "null" GC has been
    also added which does not ever collect garbage.
    #9389
    #9392
    #9401
    #9435
    #9437
    #9438
    #9446
    #9448
    #9454
    #9455
    #9484

  • Unstable WIT APIs now have feature gates configured at link-time and new
    -Scli-exit-with-code / -Snetwork-error-code options are available as well.
    #9381
    #9276

  • Initial support for the wide-arithmetic proposal has been implemented.
    #9403
    #9500

  • Guests on s390x now implement the "inline probestacks" for Cranelift to more
    robustly detect stack overflows.
    #9423

  • Missing CLI options for the pooling allocator have been filled out.
    #9447

  • Cranelift now supports 128-bit atomics on x64.
    #9459

  • A new Cargo feature has been added to the wasmtime crate to reexport the
    wasmparser dependency.
    #9485

  • Support for a new PyTorch backend for wasi-nn has been added.
    #9234

  • A new -Cnative-unwind-info flag has been added to the wasmtime CLI.
    #9494

  • Initial support for illumos has been added.
    #9535

  • A new Caller::get_module_export API has been added.
    #9525

  • Basic debug logging has been added to the debug info transformatino.
    #9526

Changed

  • The WASI WITs vendored are now updated to 0.2.2.
    #9395

  • The wasmtime-wasi-runtime-config is now named wasmtime-wasi-config.
    #9404

  • Documentation on the implementation status of WebAssembly proposals has been
    updated.
    #9434

  • Wasmtime's WASI documentation has been overhauled.
    #9471

  • The wasi_config_preopen_dir in Wasmtime's C API now takes file/directory
    permissions.
    #9477

  • Detection of libunwind vs libgcc is now done with weak symbols.
    #9479

  • Winch has improved detection of unsupported features in a Config.
    #9490

  • Winch now supports fuel-based interruption.
    #9472

  • Wasmtime's minimum supported Rust version is now 1.80.
    #9496

  • ISLE no longer supports scheme-style booleans.
    #9522

  • ISLE now supports block comments.
    #9529

  • Support for shared memory in the C API has been added.
    #9507

  • Configuration options for guard size regions have been merged into a single
    option.
    #9528

Fixed

  • Double-registration of debug information for modules in components has been
    fixed.
    #9470

  • A panic on AArch64 for vector constants has been fixed.
    #9482

  • A miscompile with sdiv and INT_MIN / -1 has been fixed on aarch64.
    #9541

v26.0.1: Release Wasmtime 26.0.1 (#9561)

05 Nov 19:24
c138e08
Compare
Choose a tag to compare

26.0.1

Released 2024-11-05.

Fixed

  • Update to cap-std 3.4.1, for #9559, which fixes a wasi-filesystem sandbox
    escape on Windows.
    CVE-2024-51745.

v25.0.3: Release Wasmtime 25.0.3 (#9562)

05 Nov 19:24
94c223f
Compare
Choose a tag to compare

25.0.3

Released 2024-11-05.

Fixed

  • Update to cap-std 3.4.1, for #9559, which fixes a wasi-filesystem sandbox
    escape on Windows.
    CVE-2024-51745.

v24.0.2: Release Wasmtime 24.0.2 (#9563)

05 Nov 19:20
c29a9bb
Compare
Choose a tag to compare

24.0.2

Released 2024-11-05.

Fixed

  • Update to cap-std 3.4.1, for #9559, which fixes a wasi-filesystem sandbox
    escape on Windows.
    CVE-2024-51745.

v26.0.0: Release Wasmtime 26.0.0 (#9489)

22 Oct 15:23
c92317b
Compare
Choose a tag to compare

26.0.0

Released 2024-10-22.

Added

  • The "table64" extension of the memory64 proposals to WebAssembly has been
    implemented.
    #9206

  • Initial support has been added for compiling WebAssembly modules with Pulley,
    Wasmtime's interpreter. Note that the interpreter is not feature complete yet.
    #9240

  • Wasmtime can now execute code without relying on host-based signal handlers.
    #9230

  • Work has continued on implementing the GC proposals in Wasmtime.
    #9246
    #9244
    #9271
    #9275
    #9278
    #9282
    #9285
    #9326
    #9341
    #9358

  • Support for ARM64 Windows has been finished with support for unwinding.
    Release binaries are now also available for this platform.
    #9266
    #9283

  • The bindgen! macro now supports multiple paths to load WIT from.
    #9288

  • A new -W async-stack-size=N argument has been added to the CLI.
    #9302

  • A new wasmtime completion subcommand can be used to generate a completion
    script for the Wasmtime CLI.
    #9312

  • Components now support initialize_copy_on_write_image like core modules.
    #9357

  • Initial support for the ISLE verifier Crocus has landed.
    #9178

Changed

  • Wasmtime now requires Rust 1.79.0 to compile.
    #9202

  • The future-trailers.get in wasi-http now returns none when trailers are
    absent.
    #9208

  • The Cranelift instructions iadd_cin and isub_bin were removed. The
    isub_borrow and iadd_carry instructions were renamed to {u,s}add_carry
    and {u,s}sub_borrow.
    #9199

  • Winch now supports multi-value results on AArch64.
    #9218

  • Some issues related to shutdown have been fixed with WASI sockets.
    #9225

  • Cranelift now has a Cargo feature to enable support for all native ISAs and
    not Pulley.
    #9237

  • Cranelift support for StructArgument in the arm64, riscv64, and s390x
    backends has been removed.
    #9258

  • The pooling allocator no longer limits instances/memories/tables by default.
    #9257

  • Stack overflow on an async stack will now print a message that this happened.
    #9304

  • Cranelift's cranelift-wasm crate has been removed and folded directly into
    wasmtime-cranelift.
    #9313

  • Cranelift's TrapCode type is now represented with a single byte.
    #9338

Fixed

  • Stack slots in Cranelift are now aligned from the start instead of the end.
    #9279

  • The WASIp1 adapter now correctly handles allocations where the initial
    alignment consumes the entire allocation.
    #9356

v25.0.2: Release Wasmtime 25.0.2 (#9366)

09 Oct 16:56
52a565b
Compare
Choose a tag to compare

25.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

v24.0.1: Release Wasmtime 24.0.1 (#9370)

09 Oct 16:55
eb42159
Compare
Choose a tag to compare

24.0.1

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

v23.0.3: Release Wasmtime 23.0.3 (#9365)

09 Oct 16:59
72bedc1
Compare
Choose a tag to compare

23.0.3

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

v22.0.1: Release Wasmtime 22.0.1 (#9364)

09 Oct 16:57
6e4dbe3
Compare
Choose a tag to compare

22.0.1

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