Skip to content

Releases: bytecodealliance/wasmtime

dev: Wasm translator: move stacks into FuncEnvironment. (#11955)

28 Sep 20:31
d280865

Choose a tag to compare

This is a refactor that came up [here]: we currently have a split
between the "environment" and the "stacks" in the Wasm translator that
is *mostly* a path-dependent property from our development history:
the environment used to be a trait purely with hook implementations.
It turns out that carrying through the multiple bits was becoming
fairly verbose plumbing and it is desired to collapse it somewhat.

This PR puts `FuncTranslationStacks` under `FuncEnvironment`. As a
result, all of our Wasmtime-specific state is now in one container
that we can plumb through more easily.

There is a tiny bit more cloning here: calls and a few other
instructions were peeking a slice of the operand stack and passing
that into a method on the environ (taking a mut self) to codegen
certain sequences. An alternative would have been to indirect somehow
-- pass a `Range<usize>` or a closure that gets the environ back to
yield the args slice -- but it didn't seem worth the complexity
here. Happy to change if needed.

[here]: https://github.com/bytecodealliance/wasmtime/pull/11921#discussion_r2461912848

v38.0.3: Release Wasmtime 38.0.3 (#11934)

24 Oct 21:40
Immutable release. Only release title and notes can be modified.
d9dc16b

Choose a tag to compare

38.0.3

Released 2025-10-24.

Fixed

  • Fix possible host crash with host-to-wasm component intrinsics
    CVE-2025-62711

v38.0.2: Release Wasmtime 38.0.2 (#11903)

21 Oct 23:06
Immutable release. Only release title and notes can be modified.
b27d62c

Choose a tag to compare

38.0.2

Released 2025-10-21.

Changed

  • This repository is attempting to start out using GitHub's "Immutable Releases"
    feature with this release, and this'll be the first release, assuming all goes
    well, that has this enabled.
    #11901

Fixed

  • Fix compatibility with the Go runtime on Windows for exceptions.
    #11892

v38.0.1: Release Wasmtime 38.0.1 (#11888)

20 Oct 16:34
f2140f6

Choose a tag to compare

38.0.1

Released 2025-10-20.

Fixed

  • Fixed some automation that went wrong with the 38.0.0 release.

v37.0.2: Release Wasmtime 37.0.2 (#11767)

07 Oct 17:22
7a95dd3

Choose a tag to compare

37.0.2

Released 2025-10-07.

Fixed

  • Fix a memory leak in the C API when using anyref or externref.
    CVE-2025-61670.

v37.0.1: Release Wasmtime 37.0.1 (#11738)

23 Sep 18:44
10c784c

Choose a tag to compare

37.0.1

Released 2025-09-23.

Fixed

  • Cranelift's cranelift-jit crate now properly applies relocations to ADRP
    instructions on aarch64; a zero-extension on the offset was fixed to properly
    sign-extend instead.
    #11734

v37.0.0: Release Wasmtime 37.0.0 (#11724)

20 Sep 17:07
7b3d6ae

Choose a tag to compare

37.0.0

Released 2025-09-20.

Added

  • Wasmtime now fully implements the WebAssembly exception-handling proposal.
    Support is still disabled by default but is ready for testing. The proposal
    will be enabled by default in a future release of Wasmtime.
    #11326

  • An initial implementation of WASIp3 is available for the 0.3.0-rc-2025-08-15
    tag made for the WASIp3 release. Note that this is not production ready yet
    but is an excellent time to start kicking the tires in preparation for an
    upcoming officialy WASIp3 0.3.0 release. Users of the CLI can opt-in with
    -Sp3 -Wcomponent-model-async.
    #11406
    #11423
    #11443

  • Wasmtime has initial support for the Linux PAGEMAP_SCAN ioctl which can
    greatly improve instantiation throughput in scenarios with a high number of
    instantiations and short instance lifetime. This support is disabled by
    default but will likely be enabled by default in a future release.
    #11372
    #11433

  • GC support can now be configured in Config and not only through crate
    features through Config::gc_support.
    #11463

  • Wasmtime now supports reading metrics of the pooling allocator at runtime.
    #11490

  • The ManuallyRooted type is now replaced with OwnedRooted which is intended
    to make management of GC object lifetimes on the host easier.
    #11514

  • Wasmtime's documentation of the C++ embedding API and examples has been
    expanded.
    #11569

  • Wasmtime's support for the stack-switching WebAssembly proposal continues to
    progress on x86_64 Linux.
    #11003

Changed

  • The preview0 and preview1 modules and features in the wasmtime-wasi
    crate are now called p0 and p1.
    #11380

  • Release artifacts for the C API are now unconditionally built with unwind
    tables.
    #11383

  • Wasmtime now requires Rust 1.87.0 or later to build.
    #11396

  • The component-model-async gated AbortHandle is now named JoinHandle.
    #11414

  • Wasmtime's internal implementation details are now async in many more
    locations to help ensure the implementation is more sound.
    #11411
    #11416
    #11442
    #11444
    #11457
    #11460
    #11461
    #11468
    #11470
    #11481
    #11496

  • Component-model-async primitives such as streams, tasks, etc, now use the same
    table as resources in a component. This means that guest-visible allocated
    indices are updated slightly.
    #11374

  • Wasmtime's precompiled binaries available from CI now include the
    component-model-async feature.
    #11429

  • C API release artifacts are now built with LTO so they have a smaller size.
    #11483

  • Code can no longer be loaded on x86_64-unknown-none by default without
    opting-in to a contract that either the host is compiled with SSE2 support or
    wasm is compiled with enough features that libcalls aren't used.
    #11553

  • Host support for component model async futures/streams has been updated to a
    new API.
    #11515

Fixed

  • GC of dead DWARF has been improved.
    #11402

  • Wasm-gc branching instructions now correctly check for fuel.
    #11426

  • The array.new_default instruction now checks for fuel/epochs in its inner
    loop.
    #11428

  • The "min" C API artifacts now have correct headers.
    #11479

  • GC OOM during const eval no longer panics.
    #11557

  • Wasmtime now properly respects a disabled std feature even on targets which
    have std available.
    #11568

v36.0.2: Release Wasmtime 36.0.2 (#11541)

26 Aug 15:08
459dbfb

Choose a tag to compare

36.0.2

Released 2025-08-26.

Fixed

  • Wasmtime will no longer panic in the pooling allocator when in near-OOM
    conditions related to resetting the linear memory of a slot.
    #11510

v36.0.1: Release Wasmtime 36.0.1 (#11477)

21 Aug 18:09
ebce5d4

Choose a tag to compare

36.0.1

Released 2025-08-21.

Added

  • Accessors for internal WASI-related contexts are added to
    wasmtime_wasi::WasiCtx to account for refactorings that happened in this
    release.
    #11473

Changed

  • Release artifacts for the C API are now smaller than the previous release to
    assist with redistribution as-is.
    #11483

v36.0.0: Release Wasmtime 36.0.0 (#11471)

20 Aug 15:28
ada802c

Choose a tag to compare

36.0.0

Released 2025-08-20.

Added

  • Cranelift's has initial support for inlining between functions. Wasmtime
    additionally now has support for inlining as well, for example between modules
    in a component.
    #11210
    #11239
    #11228
    #11269
    #11283

  • The async proposal for the Component Model is now fully implemented in
    Wasmtime with a number of WASIp3 interfaces implemented. The implementation
    is still off-by-default and the implementation of WASIp3 is not fully
    complete, but is remains suitable for testing.
    #11127
    #11136
    #11137
    #11238
    #11221
    #11250
    #11257
    #11291
    #11325

Changed

  • Users who implemented WasiHttpView::is_forbidden_header from
    wasmtime-wasi-http now need to include DEFAULT_FORBIDDEN_HEADERS, e.g.
    DEFAULT_FORBIDDEN_HEADERS.contains(name) || name.as_str() == "custom-forbidden-header"
    #11292

  • Cranelift's incremental cache has received some optimizations.
    #11186

  • Wasmtime's internal implementations of WebAssembly primitives has been
    refactored to be modeled with safer internal primitives.
    #11211
    #11212
    #11216
    #11229
    #11215
    #11254
    #11255
    #11319
    #11320

  • Detection of native hardware features has been refactored on s390x.
    #11220

  • Further progress has been made towards an implementation of the WebAssembly
    exceptions proposal, although it is not yet complete.
    #11230
    #11321

  • Cranelift's assembler for x64 now supports EVEX encoding.
    #11153
    #11270
    #11303

  • The default implementation of send_request in the wasmtime-wasi-http crate
    is now behind an on-by-default feature gate.
    #11323

  • Configuration of the bindgen! macro has been redesigned to more consistently
    configure per-function options such as whether or not it's async.
    #11328

  • Initial support fo mutatis has been added to Wasmtime's fuzzers.
    #11290

  • The debug-builtins crate feature of wasmtime no compiles on no_std
    targets.
    #11304

Fixed

  • Deserializing external modules no long unnecessarily requires the allocation
    to be aligned.
    #11306

  • A CMake linker error and warning when using the C API on macOS has been fixed.
    #11293
    #11315

  • The C API declaration of wasmtime_component_linker_instance_add_func has
    been fixed.
    #11327

  • The calculation of reachable DWARF has been fixed.
    #11338