Skip to content

Releases: bytecodealliance/wasmtime

dev

28 Sep 20:31
2e48fbc
Compare
Choose a tag to compare
dev Pre-release
Pre-release
x64: rework new assembler rule priorities, remove old emission rules …

v30.0.1: Release Wasmtime 30.0.1 (#10272)

21 Feb 23:28
daaaabe
Compare
Choose a tag to compare

30.0.1

Released 2025-02-21.

Fixed

  • Fixes an issue building the cranelift-assembler-x64 crate on Windows
    when the Rust toolchain is on a different drive than the project using
    wasmtime. For more details, see the Zulip discussion. #10270

v30.0.0: Release Wasmtime 30.0.0 (#10250)

20 Feb 02:56
ede663c
Compare
Choose a tag to compare

30.0.0

Released 2025-02-20.

Added

  • New wasmtime-wasi-io crate provides a #![no_std] wasi:io implementation,
    factored out of wasmtime-wasi. Users of wasmtime-wasi don't have to
    depend on this new crate.
    #10036

  • Wasmtime's interpreter, Pulley, is now complete and has been listed as
    tier 2.
    #9897
    #9884
    #9943
    #9944
    #9983
    #9966
    #9935
    #10034
    #10057
    #10095

  • Wasmtime's CI now checks that the repository builds for aarch64-apple-ios.
    Note that no tests are run for this target, so it's still tier 3.
    #9888

  • Winch's support for AArch64 and simd on x64 have continued to progress
    well. Winch additionally now fully supports the threads WebAssembly
    proposal.
    #9889
    #9970
    #9950
    #9987
    #9990
    #9959
    #10008
    #10028
    #10029
    #10023
    #10042
    #10050
    #10039
    #10082
    #10092
    #10109
    #10148
    #10147

  • The memory64 WebAssembly feature is now enabled by default. This WebAssembly
    proposal is now considered a tier 1 feature.
    #9937
    #10159

  • Wasmtime's full test suite and CI now includes 32-bit platforms such as x86
    and armv7 Linux. These platforms have been added to tier 3 status and use
    Pulley as their execution backend.
    #10025

  • Initial experimental support for WASIp3 and async features of the Component
    Model have started to land. These features are not yet ready for
    general-purpose use.
    #10044
    #10047
    #10083
    #10103

  • The wasmtime CLI now supports using a TOML configuration file via --config
    in addition to CLI options.
    #9811
    #10132

  • Initial support for a new assembler on x64 has been added.
    #10110
    #10178

Changed

  • wasmtime-wasi split the WasiView trait into IoView and WasiView, and
    wasmtime-wasi-http re-uses IoView in WasiHttpView. Details on porting
    for embedders in PR.
    #10016

  • wasmtime-wasi renamed some exported types and traits. Embedders which use
    Pollable, InputStream, OutputStream, Subscribe, HostInputStream,
    HostOutputStream, PollableFuture, or ClosureFuture from that crate
    will need to rename those imports to their new names, describe in PR.
    #10036

  • Components using a 64-bit linear memory should never have worked before, but
    they're now rejected earlier in the validation process.
    #9952

  • Module validation is now deterministic in the face of multiple errors.
    #9947

  • Wasmtime's minimum supported version of Rust is now 1.82.0.
    #9956

  • Cranelift will now deduplicate trap[n]z instructions.
    #10004

  • The --emit-clif option to wasmtime compile now emits post-optimization
    CLIF.
    #10011

  • The signals-based-traps Cargo feature has been removed in favor of
    auto-detection of available features based on the #[cfg] directives
    available for the target platform.
    #9941

  • The async_stack_zeroing configuration knob now covers all stack allocations,
    not just those from the pooling allocator.
    #10027

  • Wasmtime should work-by-default on more platforms, even those where Cranelift
    has no support for the architecture. This is done by ensuring some
    architecture and platform-specific bits are removed on unknown platforms (and
    Pulley is used instead).
    #10107

  • Wasmtime now compiles on platforms missing 64-bit atomics.
    #10134

Fixed

  • Fixed a missing case for Ref::matches_ty should return true.
    #9985

  • A bug with using the single_pass register allocation algorithm on x64/s390x
    has been fixed by refactoring how branches are represented.
    #10086
    #10087

  • A bug with argument extensions on riscv64 has been fixed.
    #10069

  • The PartialEq implementation for RegisteredType has been fixed.
    #10091

  • The output of component::bindgen! now works with #![no_std] crates.
    #10105

  • Fix wasmtime wast when combined with --fuel.
    #10121

  • The wat feature of the C API is now plumbed correctly in a few more
    locations.
    #10124

  • Spurious wake-ups in blocking_* methods of InputStream and OutputStream
    have been fixed.
    #10113

v29.0.1: Release Wasmtime 29.0.1 (#10070)

21 Jan 22:44
58282df
Compare
Choose a tag to compare

29.0.1

Released 2025-01-21.

Fixed

  • Fix a missing increment in WASIp1-to-WASIp2 adapter which affected WASI
    configurations that have multiple preopened directories.
    #10064

v29.0.0: Release Wasmtime 29.0.0 (#10049)

20 Jan 18:32
5454077
Compare
Choose a tag to compare

29.0.0

Released 2025-01-20.

Added

  • Winch now supports epoch-based interruption.
    #9737

  • Pulley, Wasmtime's WebAssembly interpreter, has seen quite a lot of progress
    and support fleshed out. It's still not 100% complete but should be about
    ready to start kicking the tires.
    #9744

  • The Wasmtime CLI now supports a -Wextended-const flag to control whether the
    extended-const wasm proposal is enabled or not.
    #9768

  • Work continues to progress on the AArch64 Winch backend, bringing it closer to
    completion.
    #9762
    #9767
    #9751
    #9784
    #9781
    #9792
    #9787
    #9798
    #9850

  • Wasmtime now supports a "custom code publisher" which can be useful when
    Wasmtime doesn't have built-in support for a particular environment.
    #9778

  • Configuration options have been added for wasmtime-wasi-http outgoing
    bodies.
    #9800

  • Log prefixes can now be disabled for the wasmtime serve command.
    #9821

  • A new WASMTIME_LOG_NO_CONTEXT environment variable was added to live
    alongside WASMTIME_LOG.
    #9902

  • Release artifacts for aarch64-musl targets are now available.
    #9934

Changed

  • Wasmtime libcalls now return whether a trap happened rather than raising a
    trap directly to better prepare for the Pulley interpreter and an eventual
    implementation of Wasm exception-handling.
    #9710

  • Wasmtime will now use the Pulley interpreter by default on platforms that
    are not supported by Cranelift.
    #9741

  • Demangling symbols in profiling and debugging has improved to handle failures
    to demangle C++ symbols.
    #9756

  • WASI WIT files have been updated to 0.2.3.
    #9807

  • Wasmtime's bindgen! macro in async mode no longer uses #[async_trait]
    an instead natively uses async fn in traits.
    #9867

  • Floats are no longer canonicalized flowing into or out of components.
    #9879

  • Instance methods are now translated to static methods in DWARF translation.
    #9898

  • The C API now supports debug builtins for debugging guest code.
    #9915

Fixed

  • The header file for wasmtime_instance_pre_instantiate in the C API has been
    fixed.
    #9770

  • WebAssembly DWARF is more conservative in its GC pass during translation to
    native DWARF.
    #9829

  • Debugging intrinsics are fixed on Linux to be exported now.
    #9866

v28.0.1: Release Wasmtime 28.0.1 (#10015)

14 Jan 23:25
1bdf2c2
Compare
Choose a tag to compare

28.0.1

Released 2025-01-14.

Fixed

  • Fixed deallocating async stacks when using Store::into_data.
    #10009

v28.0.0: Release Wasmtime 28.0.0 (#9876)

20 Dec 16:26
2e584e8
Compare
Choose a tag to compare

28.0.0

Released 2024-12-20.

Added

  • The ISLE DSL used for Cranelift now has a first-class bool type.
    #9593

  • Cranelift now supports a new single-pass register allocator designed for
    compile-time performance (unlike the current default which is optimized for
    runtime-of-generated-code performance).
    #9611

  • The wasmtime crate now natively supports the wasm-wave crate and its
    encoding of component value types.
    #8872

  • A Module can now be created from an already-open file.
    #9571

  • A new default-enabled crate feature, signals-based-traps, has been added to
    the wasmtime crate. When disabled then runtime signal handling is not
    required by the host. This is intended to help with future effort to port
    Wasmtime to more platforms.
    #9614

  • Linear memories may now be backed by malloc in certain conditions when guard
    pages are disabled, for example.
    #9614
    #9634

  • Wasmtime's async feature no longer requires std.
    #9689

  • The buffer and budget capacity of OutgoingBody in wasmtime-wasi-http are
    now configurable.
    #9670

Changed

  • Wasmtime's external and internal distinction of "static" and "dynamic"
    memories has been refactored and reworded. All options are preserved but
    exported under different names with improved documentation about how they all
    interact with one another. (and everything should be easier to understand)
    #9545

  • Each Store<T> now caches a single fiber stack in async mode to avoid
    allocating/deallocating if the store is used multiple times.
    #9604

  • Linear memories now have a 32MiB guard region at the end instead of a 2GiB
    guard region by default.
    #9606

  • Wasmtime will no longer validate dependencies between WebAssembly features,
    instead delegating this work to wasmparser's validator.
    #9623

  • Cranelift's isle-in-source-tree feature has been re-worked as an environment
    variable.
    #9633

  • Wasmtime's minimum supported Rust version is now 1.81.
    #9692

  • Synthetic types in DWARF are now more efficiently represented.
    #9700

  • Debug builtins on Windows are now exported correctly.
    #9706

  • Documentation on Config now clarifies that defaults of some options may
    differ depending on the selected target or compiler depending on features
    supported.
    #9705

  • Wasmtime's error-related types now all unconditionally implement the Error
    trait, even in #[no_std] mode.
    #9702

Fixed

  • Field type matching for subtyping with wasm GC has been fixed.
    #9724

  • Native unwind info generated for s390x has been fixed in the face of tail
    calls.
    #9725

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.