Skip to content

v33.0.0: Release Wasmtime 33.0.0 (#10812)

Latest
Compare
Choose a tag to compare
@github-actions github-actions released this 20 May 12:50
· 91 commits to main since this release
4ce8232

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