Skip to content

Releases: bytecodealliance/wasmtime

dev: Remove the `wasmtime::runtime::vm::ModuleInfo[Lookup]` traits (#9286)

28 Sep 20:31
8ea2590
Compare
Choose a tag to compare
* Remove the `wasmtime::runtime::vm::ModuleInfo` trait

This harkens back to the `wasmtime` vs `wasmtime-runtime` crate split. We can
simply use `wasmtime::Module` these days.

* Rename `wasmtime::runtime::vm::ModuleInfoLookup::lookup` to `lookup_module_by_pc`

This will make removing `ModuleInfoLookup` easier in subsequent commits.

* Remove the `ModuleInfoLookup` trait

This harkens back to the `wasmtime` vs `wasmtime-runtime` crate split. We can
simply use the `ModuleRegistry` directly now.

* cargo fmt

v24.0.0: Release Wasmtime 24.0.0 (#9147)

20 Aug 15:19
6fc3d27
Compare
Choose a tag to compare

24.0.0

Released 2024-08-20.

Added

  • A new wasmtime_engine_clone function was added to the C API.
    #8907

  • Wasmtime now has basic support for allocating a StructRef in the embedder
    API.
    #8933

  • The wasmtime run subcommand now support a --argv0 flag indicating the
    value of the first element to arguments reported to wasm if it shouldn't be
    the default of the wasm binary name itself.
    #8961

  • Support for Winch on AArch64 continued to improve.
    #8921
    #9018
    #9033
    #9051

  • An initial implementation of the wasi-runtime-config proposal was added to
    Wasmtime.
    #8950
    #8970
    #8981

  • Initial support for f16 and f128 in Cranelift continued to improve.
    #8893
    #9045

  • More types in wasmtime-wasi-http implement the Debug trait.
    #8979

  • The wasmtime explore subcommand now supports exploring CLIF too.
    #8972

  • Support for SIMD in Winch has begun, but it is not complete yet.
    #8990
    #9006

  • Initial work on Pulley, an interpreter for Wasmtime, has begun.
    #9008
    #9013
    #9014

  • The -Wunknown-imports-trap flag to wasmtime run now supports components.
    #9021

  • An initial implementation of the wasi-keyvalue proposal was added to
    Wasmtime.
    #8983
    #9032
    #9050
    #9062

  • An unsafe API has been added to unload process trap handlers.
    #9022

  • The s390x backend now fully supports tail calls.
    #9052

Changed

  • The flags type in the component model now has a hard limit of 32-or-fewer
    flags. For more information about this transition see
    WebAssembly/component-model#370.
    #8882

  • Multiple returns for functions in the component model are now gated by default
    and are planned to be removed.
    #8965

  • TCP streams in WASIp2 will now immediately return StreamError::Closed when
    the TCP stream is closed or shut down.
    #8968
    #9055

  • Cranelift will now perform constant propagation on some floating-point
    operations.
    #8954

  • Wasmtime and Cranelift now require at least Rust 1.78.0 to compile.
    #9010

  • The wasmtime::Val type now implements the Copy trait.
    #9024

  • Wasmtime's wasi-nn implementation has been updated to track the upstream
    specification.
    #9056

  • Names provided to trappable_imports in bindgen! are now validated to be
    used.
    #9057

  • Support for multi-package *.wit files now requires a package ...; header
    at the top of the file.
    #9053

v23.0.2: Release Wasmtime 23.0.2 (#9117)

12 Aug 18:20
694ee66
Compare
Choose a tag to compare

23.0.2

Released 2024-08-12.

Changed

  • Building the c-api from crates.io now correctly configures an include
    directory for header files with configured versions of header files.
    #9102
  • Wasmtime no longer requires linking with libm in Linux builds, which
    fixes linking against musl in some cases.
    #9100

v23.0.1: Release Wasmtime 23.0.1 (#8988)

22 Jul 16:28
fb531d2
Compare
Choose a tag to compare

23.0.1

Released 2024-07-22.

Fixed

  • Fixed some issues when auto-publishing crates to crates.io.
    #8986

v23.0.0: Release Wasmtime 23.0.0 (#8980)

22 Jul 15:04
3eb0268
Compare
Choose a tag to compare

23.0.0

Released 2024-07-22.

Added

  • Support for DWARF debugging information with native debuggers is now
    implemented for components.
    #8693

  • CLIF frontends can now define their own stack maps.
    #8728
    #8876

  • Wasmtime now supports the custom-page-sizes proposal.
    #8763

  • This project now publishes a crate named
    wasi-preview1-component-adapter-provider which provides the WASIp1 adapters
    as constants in Rust code.
    #8874

Changed

  • Call hooks now have access to the full StoreContextMut<T>.
    #8791

  • Call hooks have been moved behind an off-by-default compile-time Cargo feature
    named call-hook.
    #8795
    #8808

  • Wasmtime's minimum supported Rust version is now 1.77.0.
    #8796

  • Resumable traps have been removed from Cranelift.
    #8809

  • Traps are not GC safepoints any more in Cranelift.
    #8810

  • Support for Intel memory protection keys is now disabled by default at compile
    time and is gated behind a Cargo feature.
    #8813

  • Exports from components have been refactored and redesigned to support
    skipping name lookups at runtime where possible.
    #8786

  • Wasmtime's lookup of versioned component exports now takes semver into
    account in the same manner as imports.
    #8830

  • Wasmtime's guest profiler will now take samples at hostcall boundaries.
    #8802

  • Wasmtime's pooling allocator now by default allows 32-bit linear memories to
    grow to their full size of 4G.
    #8849

  • The size of WASI adapter binaries has been optimized.
    #8858
    #8859

  • The wasmtime-wasi-http crate has been refactored to better match the
    wasmtime-wasi crate.
    #8861

  • Support for caching call_indirect sites has been removed.
    #8881

  • Wasmtime's x86_64 binary releases are now based on AlmaLinux 8 instead of
    CentOS 7.
    #8892

Fixed

  • An issue with generated .debug_loc sections for native debuggers has been
    fixed.
    #8753

  • Wasmtime's no_std build for riscv64 has been fixed.
    #8770

  • A bug related to lost Waker instances with async stdio streams has been
    fixed.
    #8782

  • Configuration of trappable_error_type has been improved in Wasmtime's
    bindgen! macro.
    #8833

  • Prints to stdout/stderr without a newline now work better with wasmtime serve.
    #8877

  • An issue with br_if and stack-related state has been fixed in Winch.
    #8886

v22.0.0: Release Wasmtime 22.0.0 (#8844)

20 Jun 16:52
761f044
Compare
Choose a tag to compare

22.0.0

Released 2024-06-20.

Added

  • The CMake-based build of Wasmtime's C API now adds a
    WASMTIME_FASTEST_RUNTIME option which activates the "fastest-runtime"
    compilation profile which enables LTO.
    #8554

  • Cranelift supports more instructions in the RISC-V Zfa and ZiCond extensions.
    #8582
    #8695

  • Support for fused-multiply-and-add on RISC-V has been improved.
    #8596
    #8588

  • Release binaries for {aarch64,x86_64}-android have been added. Note that
    Android is still a Tier 3 target.
    #8601

  • Wasmtime now supports supertypes and finality in the type hierarchy for wasm
    gc.
    #8595

  • Lazy initialization of tables can now be tuned with a CLI flags and
    configuration option.
    #8531

  • Wasmtime now compiles for x86_64 OpenBSD. Note that this is a Tier 3
    target
    and continued support is always appreciated.
    #8613

  • Stack slots in Cranelift can now specify custom alignment.
    #8635

  • Wasm function names are now used in compiled objects to assist with debugging
    and introspection with native tools.
    #8627

  • Wasmtime's release artifacts now includes wasmtime-platform.h for use with
    no_std targets.
    #8644

  • Release binaries for x86_64 Alpine Linux have been added.
    #8668

  • A new Component::define_unknown_imports_as_traps function has been added to
    stub out functions in a component linker.
    #8672

Changed

  • Wasmtime and Cranelift's now require Rust 1.76.0 to build.
    #8560

  • The wasi_config_preopen_dir function no longer always returns true in the
    C API. Additionally wasi_config_set_env and wasi_config_set_argv may now
    return an error.
    #8572

  • Cranelift now updates registers of backend instructions in-place, simplifying
    register allocation and assignment.
    #8566
    #8581
    #8592
    #8604
    #8605

  • Wasmtime now attempts to batch memory decommits into one tight loop.
    #8581
    #8590

  • Bindings generated with bindgen! now have generated GetHost traits and
    add_to_linker_get_host functions which enable a more general means by which
    to acquire host implementations from a store's T.
    #8448

  • The wasmtime serve subcommand will now dynamically determine whether to use
    the pooling allocator by default based on the system's available virtual
    memory.
    #8610

  • Implementations of Host traits in the wasmtime-wasi crate are now for
    WasiImpl<T> instead of blanket impls for T.
    #8609
    #8766

  • The concepts of "virtual sp offset" and "nominal sp" have been removed from all
    Cranelift backends.
    #8631
    #8643

  • The maximum size of linear memory in the pooling allocator is now specified in
    bytes instead of pages.
    #8628

  • Wasmtime no longer has two different host ABIs for host functions and instead
    only has one. The "array" calling convention is now unconditionally used
    instead of having a split between the "native" calling convention and the
    "array" calling convention. This means that Func::new is now available even
    when the cranelift feature is disabled.
    #8629
    #8646

  • Wasmtime's C API bindings for CMake have been refactored and now supports
    specifying Cargo features directly. Functions that are configured out are now
    also gated in header files.
    #8642

  • Wasmtime's C API can now be built without Cranelift or Winch.
    #8661

  • Wasmtime's release binaries have Winch compiled in by default now.
    #8660

  • The output of wasmtime explore now shows function names in addition to
    indices.
    #8639

  • Support for the Wasmtime 13-and-prior CLI has been removed.
    #8597

  • Wiggle-based borrow checking has been removed in favor of modeling host usage
    of guest memory with Rust-level borrows.
    #8702

  • Wasmtime's bindgen! macro will now generate the same hierarchy of
    traits/types/modules even when the with module is used via new pub use
    statements.
    #8721

  • The WasiCtxBuilder::socket_addr_check function now takes an async closure.
    #8715

  • The Func::wrapN_async functions and friends have all been consolidated into
    a single function with a slightly different signature of taking a tuple of
    arguments rather than "splatted" arguments.
    #8732

Fixed

  • Trampoline lookup for wasm gc functions that may use subtyping on the host to
    match a guest's desired type now no longer panics.
    #8579

  • The total size of arguments, environment variables, and preopens is now
    allowed to exceed 64k when using the wasip1 component adapter.
    #8594

  • Performing a zero-length read on file streams is now fixed in WASI.
    #8611

  • Tail calls are now turned by default after a mistake was discovered in the
    previous releases's intent to enable them by default.
    #8682

  • Winch support for f64 comparison instructions has been fixed.
    #8685

  • The SO_REUSEADDR option is reenabled for Unix platforms with wasmtime serve.
    #8738

v21.0.1: Release Wasmtime 21.0.1 (#8679)

22 May 18:05
cedf9aa
Compare
Choose a tag to compare

21.0.1

Released 2024-05-22.

Fixed

  • Fixed outgoing HTTP requests which don't explicitly specify a port.
    #8671

v21.0.0: Release Wasmtime 21.0.0 (#8666)

20 May 20:23
aaa39cb
Compare
Choose a tag to compare

21.0.0

Released 2024-05-20.

Added

  • The wasmtime explore subcommand now supports *.wat files.
    #8314

  • Wasmtime now supports DWARF Fission *.dwp files.
    #8055

  • The wasmtime crate now supports #![no_std], and more information about
    this transition can be found in
    #8341.
    #8463
    #8483
    #8485
    #8528
    #8533

  • A Config knob is now available for one-entry call_indirect caching to
    speed up modules with lots of call_indirect instructions.
    #8509

  • Cranelift's riscv64 backend has initial support for the Zfa Extension.
    #8536

  • The WebAssembly tail-calls proposal is now enabled by default when using the
    Cranelift backend, except for the s390x architecture.
    #8540

Changed

  • Support for NaN canonicalization on x64 has been optimized to avoid branches.
    #8313

  • The bindgen! macro now defaults to assuming imports cannot trap, but this
    behavior is configurable at macro-generation time.
    #8310

  • The fd_{read,write} implementations in wasmtime-wasi have been optimized.
    #8303

  • The wasmtime-wasi-http crate has been refactored and has improved
    documentation.
    #8332
    #8347

  • Unused with parameters in bindgen! now generate an error.
    #8371

  • The fd_read implementation in wasmtime-wasi now only reads into a single
    iovec per call.
    #8415

  • The wasmtime_val_t type in the C API no longer holds any allocations. This
    type must still be manually managed to properly unroot values, however.
    #8451

  • Add an optimized "sleep" path for poll_oneoff to wasmtime-wasi.
    #8429

  • The Wasmtime-internal wasmtime-runtime crate has been removed.
    #8501

  • The pooling allocator now allows twice as many elements as before.
    #8527

  • Using CMake to build the C API has been improved along a number of axes.
    #8490
    #8497
    #8549

Fixed

  • Pooling allocator CLI options are now respected with the wasmtime serve
    subcommand.
    #8525

  • The read implementation for file input streams in wasmtime-wasi now
    correctly handles zero-length reads.
    #8611

v20.0.2: Release Wasmtime 20.0.2 (#8574)

07 May 19:22
20e5070
Compare
Choose a tag to compare

20.0.2

Released 2024-05-07.

Added

  • Improve error in CMake for when Cargo is not found.
    #8497

  • Use --release in CMake with MinSizeRel and RelWithDebInfo.
    #8549

  • Add a WASMTIME_FASTEST_RUNTIME configuration option for CMake which enables
    LTO and other related optimization options.
    #8554

v20.0.1: Release Wasmtime 20.0.1 (#8538)

03 May 16:59
d1feb03
Compare
Choose a tag to compare

20.0.1

Released 2024-05-03.

Added

  • Make the c-api CMakeLists.txt easier to import.
    #8496