Skip to content

Releases: bytecodealliance/wasmtime

dev

28 Sep 20:31
a6d1244
Compare
Choose a tag to compare
dev Pre-release
Pre-release
Add ptest and vptest to the new assembler (#11139)

v34.0.1: Release Wasmtime 34.0.1 (#11119)

24 Jun 16:50
ebdadc4
Compare
Choose a tag to compare

34.0.1

Released 2025-06-24.

Fixed

  • Fix a panic with host-defined tables/globals and concrete reference
    types.
    #11103

v33.0.1: Release Wasmtime 33.0.1 (#11120)

24 Jun 16:48
b7e5651
Compare
Choose a tag to compare

33.0.1

Released 2025-06-24.

Fixed

  • Fix a panic with host-defined tables/globals and concrete reference
    types.
    #11103

v32.0.1: Release Wasmtime 32.0.1 (#11118)

24 Jun 16:16
ac65901
Compare
Choose a tag to compare

32.0.1

Released 2025-06-24.

Fixed

  • Fix a panic with host-defined tables/globals and concrete reference
    types.
    #11103

v24.0.3: Release Wasmtime 24.0.3 (#11121)

24 Jun 16:41
6f07581
Compare
Choose a tag to compare

24.0.3

Released 2025-06-24.

Fixed

  • Fix a panic with host-defined tables/globals and concrete reference
    types.
    #11103

v34.0.0: Release Wasmtime 34.0.0 (#11085)

20 Jun 15:55
26ed24a
Compare
Choose a tag to compare

34.0.0

Released 2025-06-20.

Added

  • Support for SIMD in the Pulley interpreter can now be disabled at compile-time
    to shrink the size of the final binary.
    #10727

  • The C API now has wasmtime_trap_new_code to create a wasm_trap_t from
    its code.
    #10765

  • Winch's support for x86_64 is now classified with tier 1 support in Wasmtime.
    #10755

  • Winch's support for aarch64 now implements stack checks to pass many more spec
    tests.
    #10763

  • Cranelift's s390x backend now has full support for the f128 type.
    #10774

  • Wasmtime's C API for the component model has initial support for calling
    functions.
    #10697
    #10841
    #10858
    #10864
    #10877

  • The wasmtime wast command now has a --generate-dwarf flag to show
    filename/line number information for backtraces.
    #10780

Changed

  • The shape of bindgen!-generated add_to_linker functions has changed with
    the removal of GetHost and replacement of a HasData trait. For more
    information see the associated PR.
    #10770

  • Wasmtime's Store<T> now requires that T: 'static. This is done in
    preparation for merging WASIp3 work to the main repository with some more
    information on the associated PR.
    #10760

  • The wasmtime::component::Instance::instance_pre method is now public.
    #10761

  • Wasmtime and Cranelift's minimnum supported version of Rust (MSRV) is now
    1.85.0.
    #10785

  • Cranelift's debugtrap on aarch64 now generates brk #0xf000 for debuggers
    to recognize it.
    #10813

  • The wasi-http implementation no longer generates a trap if the handle to
    receive the response on the host is dropped early.
    #10833

  • The wasmtime serve command will now send some boilerplate descriptive HTML
    on a 500 server error instead of nothing.
    #10851

  • A significant amount of work has gone into the new assembler for the x64
    backend. Too many PRs to list here but progress continues apace at defining
    all machine instructions in a standalone crate.

  • Cranelift will now reject unimplemented big-endian loads/stores on backends
    that do not implement this functionality.
    #10863

  • The wasmtime explore generated HTML handles large modules better now.
    #10892

  • Wasmtime's internal representation of wasmtime::Func has changed and a
    previous optimization of Func::call has been lost. If affected it'd
    recommended to use Func::call_unchecked instead or to open an issue.
    #10897

v33.0.0: Release Wasmtime 33.0.0 (#10812)

20 May 12:50
4ce8232
Compare
Choose a tag to compare

33.0.0

Released 2025-05-20.

Added

  • Cranelift now has initial support for try_call and try_call_indirect
    instructions, to be used in the future for the WebAssembly exception-handling
    proposal. Wasmtime does not yet implement this proposal yet.
    #10510
    #10557
    #10593

  • Cranelift can now optimize some simple possibly-side-effectful instructions,
    such as division.
    #10524

  • Wasmtime now supports --invoke for components using the WAVE format.
    #10054

  • Initial support for the Component Model has landed in Wasmtime's C API. Note
    that the API is not yet feature-complete, however.
    #10566
    #10598
    #10651
    #10675

  • Wasmtime's C++ API is now available from this repository and the
    bytecodealliance/wasmtime-cpp repository has been archived. Additionally the
    monolithic wasmtime.hh header file has been split into separate header
    files.
    #10582
    #10600

  • Wasmtime's cookbook-style documentation has been expanded.
    #10630

  • Wasmtime's now supports custom yield behavior when using epoch interrupts.
    #10671

Changed

  • Wasmtime's bindgen now type-checks export functions in the constructor of
    the generated {Worldname}Pre or {Worldname} structs, rather than at the
    call of the export function.
    #10610

  • Wasmtime's component::Component and component::Instance now have consistient
    get_export and get_export_index methods, which return (ComponentItem, ComponentExportIndex) and ComponentExportIndex, respectively.
    #10597

  • On failure, wasmtime serve gives an internal server error response, rather
    than closing the connection.
    #10645

  • Cranelift's single-pass allocator has been disabled due to being unable to
    support internal refactorings in preparation for the WebAssembly exceptions
    proposal. Re-enabling this allocator is tracked at
    regalloc2#217 for
    those interested.
    #10554

  • Wasmtime's {Array,Extern,Struct}Ref functions will now automatically trigger
    a GC.
    #10560

  • Wasmtime's GC heaps now use the same translation techniques as linear memories
    meaning they have far fewer bounds-checks than before.
    #10503

  • Wasmtime's implementation of WASIp2 has moved to wasmtime_wasi::p2 from the
    root of the crate.
    #10073

  • Wasmtime will no longer emit calls to Cranelift-defined "libcalls" and instead
    everything goes through Wasmtime's libcall mechanism instead, paving the way
    for a future change for more efficient stack limit checking in wasm. This can
    also improve deserialize-from-disk times and improve page cache usage for
    modules that use libcalls as relocations are no longer necessary.
    #10657

  • Configuration of caching can now be done through an API instead of exclusively
    through a configuration file. Additionally cache-related APIs in Config have
    changed.
    #10665

  • Resources in the Component Model are now stored in a single table per-instance
    instead of per-type tables. Guests will see a different pattern of index
    allocation but this is not expected to cause any issues at runtime.
    #10701

Fixed

  • Some math intrinsics have been fixed when compiled by Rust 1.87+.
    #10534

  • Component model libcalls correctly handle platform-specific argument extension
    in ABIs.
    #10540

  • An off-by-one issue with DWARF debuginfo has been fixed.
    #10570

  • The Config::target method is no longer gated by a #[cfg] for an enabled
    compiler, it can be used when only the runtime feature is available.
    #10618

  • An issue with "simulated" DWARF has been fixed.
    #10681

  • C/C++ headers are now tested that they can be included in isolation, and a
    number of issues have been fixed.
    #10694

v32.0.0: Release Wasmtime 32.0.0 (#10617)

21 Apr 15:27
d305495
Compare
Choose a tag to compare

32.0.0

Released 2025-04-21.

Added

  • {Module,Component}::deserialize_raw can now be used to deserialize an
    in-memory module while relying on external management of the memory.
    #10321

  • An initial implementation of wasi-tls has been added.
    #10249

  • The wasmtime CLI now supports hexadecimal integer CLI arguments.
    #10360

  • Cranelift now supports a log2_min_function_alignment flag.
    #10391

  • A new wasmtime objdump subcommand has been added to help explore and debug
    *.cwasm files.
    #10405

  • Support for the pooling allocator has been added to the C API.
    #10484

  • Support for the guest profiler with the component model has been added.
    #10507

Changed

  • Cranelift MemFlags now has a can_move flag which restricts whether a load
    or store can be moved.
    #10340

  • The .text size of Pulley *.cwasm files should be smaller with less
    padding.
    #10285

  • The wasmtime serve subcommand now implements a graceful shutdown on ctrl-c.
    #10394

  • Stack maps used for GC are now stored in a serialized binary format that is
    faster to deserialize.
    #10404

  • The aegraph implementation in Cranelift has been simplified to remove the
    union-find and canonical eclass IDs.
    #10471

  • The store_list and load_list helpers have been specialized in components
    for f32 and f64.
    #9892

  • Cranelift now removes block params on critical-edge blocks.
    #10485

  • The Linker::define_unknown_imports_as_default_values API now supports
    defining defaults for more kinds of items.
    #10500

  • Wasmtime now requires Rust 1.84.0 to compile.
    #10520

Fixed

  • Winch compilation of extadd instructions has been fixed.
    #10337

  • Fix an issue with DRC collector's barriers.
    #10371

  • Loads on (ref null none) that can trap are now performed.
    #10372

  • Fix reference count management in AnyRef::from_raw.
    #10374

  • An issue with multi-value returns in Winch has been fixed.
    #10370

  • A panic at compile-time from an overflowing shift has been fixed when
    targeting aarch64.
    #10382

  • The wasmtime serve command no longer panics when handle returns before
    calling set.
    #10387

  • Winch compilation of replace_lane instructions with floats has been fixed.
    #10393

  • An invalid integer-shift optimization on vector types has been removed.
    #10413

  • The DWARF loclist to exprloc optimization has been fixed.
    #10400

  • Objects in the DRC collector are now transitively dec-ref's when collected.
    #10401

  • A bug with GC rec gropus and registration in an Engine has been fixed.
    #10435

  • A bug related to GC arrays of GC refs misreported their count of GC edges has
    been fixed.
    #10453

  • A bug related to appropriately adding stack maps for all GC variables has been
    fixed.
    #10456
    #10468

  • A bug with array.fill has been fixed.
    #10470

  • GC structs are no longer reordered to optimize their size to fix subtyping.
    #10463

  • Panics related to exceptions and components being mixed has been fixed.
    #10473

  • Winch stack parameter alignment has been fixed.
    #10513

  • Rendering inline function frames in a trap backtrace has been fixed.
    #10523

v31.0.0: Release Wasmtime 31.0.0 (#10428)

20 Mar 14:53
7a9be58
Compare
Choose a tag to compare

31.0.0

Released 2025-03-20.

Added

Changed

  • Pulley's implementation of loads/stores to linear memory has changed to
    better support optimizations and reduction of interpreter opcodes in the
    final binary.
    #10154

  • Cranelift's verifier now ensures that integers used as address types have the
    correct width.
    #10209

  • Wasmtime and Cranelift's minimum supported version of Rust is now 1.83.0.
    #10264

  • Wasmtime now mentions the filename when the input cannot be opened on the CLI.
    #10292

  • All types are now generated in component::bindgen!, even if they're not
    reachable.
    #10311

  • Tables allocated with the system allocator now use alloc_zeroed (aka
    calloc) for allocation.
    #10313

Fixed

  • GC: the is-null-or-i31ref checks have been fixed.
    #10221

  • GC: an incorrect assertion and canonicalized types for runtime usage has been
    fixed.
    #10223

  • GC: subtype checks for imported globals during instantiation have been fixed.
    #10304

  • GC: exposing references to wasm in the gc_alloc_raw libcall has been fixed.
    #10322

  • Winch's fuel checks correctly sync fuel before the check now.
    #10231

  • Winch's treatment of stores and other trapping ops has been fixed on AArch64.
    #10201

  • Winch's handling of the shadow stack pointer has been fixed on AArch64.
    #10263

  • Winch's handling of address calculations has been fixed on AArch64.
    #10297

  • Winch's handling of multivalue return of constants has ben fixed.
    #10315

v30.0.2: Release Wasmtime 30.0.2 (#10294)

25 Feb 18:31
398694a
Compare
Choose a tag to compare

30.0.2

Released 2025-02-25.

Fixed

  • MinGW C API builds are now built with a newer version of GCC which seems to
    fix an issue caused by #9929.
    #10290

Changed

  • The cranelift-codegen crate now no longer depends on arbitrary, a
    now-unnecessary dependency.
    #10217