Skip to content

Releases: bytecodealliance/wasmtime

v19.0.1: Release Wasmtime 19.0.1 (#8289)

02 Apr 19:11
26104f0
Compare
Choose a tag to compare

19.0.1

Released 2024-04-02.

  • Fix a panic using tables with the wrong type.
    #8284

v19.0.0: Release Wasmtime 19.0.0 (#8186)

20 Mar 15:15
6e0abd7
Compare
Choose a tag to compare

19.0.0

Released 2024-03-20.

Added

  • C API bindings for the sampling-based profiler in Wasmtime have been added.
    #7854

  • Add the WasiP1Ctx to ease the use of wasmtime-wasi in place of wasi-common
    #8053

  • The Winch compiler backend is now feature-complete for x64. Note that minor
    issues and fuzz bugs are still being addressed, but now's a good time to test
    if you're interested.
    #7894
    #7909
    #7927
    #7932
    #7949
    #7974
    #8001

  • The typed function references proposal to WebAssembly is now fully
    implemented.
    #7943

  • The component::Linker type is now "semver aware" in that it enables loading
    components referring to past or future versions of interfaces so long as the
    types are compatible.
    #7994

  • Wasmtime can now be built for "custom platforms" which is intended for
    bare-metal builds.
    #7995

  • The wasmtime-wasi-nn crate now has a backend based on WinML.
    #7807

  • The wasmtime CLI now has flags for configuring limits of the pooling
    allocator.
    #8027

Changed

  • The wasmtime serve command no longer binds its port with SO_REUSEADDR
    meaning that if it is invoked twice only one will succeed.
    #7863

  • The sampling-based profiler in Wasmtime now takes an explicit argument of
    the time delta between samples.
    #7873

  • Many accessors for type information now require an &Engine argument to be
    specified in preparation for an implementation of wasm GC.
    #7892

  • The host header is now forbidden in wasi-http.
    #7905

  • Stronger type-checks are now performed for host-owned resources when
    interacting with the component model to help catch mistakes earlier.
    #7902

  • Demangling Rust and C/C++ symbols in WebAssembly modules is now done by
    default in the C API.
    #7962

  • Preview2-based APIs are now located at the root of the wasmtime_wasi crate
    instead of a submodule.
    #7933

  • Components now reserve index 0 for handle tables to match the component model
    specification.
    #7661

  • Support for externref has been moved behind a new gc Cargo feature. This
    will also gate support for wasm gc in the future.
    #7975

  • Require the WASMTIME_WASI_CONFIG_PREOPEN_SOCKET_ALLOW environment variable
    to bet set to allow the use of wasi_config_preopen_socket via the c api, as
    it will be deprecated in 20.0.0.
    #8053

Fixed

  • WIT interface names that are Rust keywords now correctly generate bindings.
    #7790

  • PKRU state is now restored across await points.
    #7789

  • Wasmtime now correctly supports global.get in all constant expressions
    within a module.
    #7996

v18.0.3: Release Wasmtime 18.0.3 (#8103)

12 Mar 22:57
ff528a2
Compare
Choose a tag to compare

18.0.3

Released 2024-03-12

Fixed

  • Fix inferring native flags when a compilation target is specified.
    #7991

v18.0.2: Release Wasmtime 18.0.2 (#8023)

28 Feb 23:26
90db6e9
Compare
Choose a tag to compare

18.0.2

Released 2024-02-28.

Fixed

  • Fix an egraph rule bug that was permitting an incorrect ireduce rewrite to
    unary and binary operations, leading to miscompilations.
    #8005

v17.0.2: Release Wasmtime 17.0.2 (#8024)

28 Feb 23:23
f475c0b
Compare
Choose a tag to compare

17.0.2

Released 2024-02-28

Fixed

  • Fix an egraph rule bug that was permitting an incorrect ireduce rewrite to
    unary and binary operations, leading to miscompilations.
    #8005

v18.0.1: Release Wasmtime 18.0.1 (#7967)

20 Feb 22:08
446862c
Compare
Choose a tag to compare

18.0.1

Released 2024-02-20.

Fixed

  • Fixed a mistake in the CI release process that caused the crates.io
    publication of the 18.0.0 release to not succeed.
    #7966

v18.0.0: Release Wasmtime 18.0.0 (#7958)

20 Feb 19:59
518fd4a
Compare
Choose a tag to compare

18.0.0

Released 2024-02-20.

Added

  • The wasmtime-c-api-impl crate is now published on crates.io.
    #7837

  • A new EngineWeak type enables holding a weak pointer to an engine with the
    ability to dynamically and fallibly upgrade it to an Engine.
    #7797

  • The WebAssembly tail calls proposal can now be enabled through the C API.
    #7811

  • The import and export types of a Component can now be inspected at runtime.
    #7804

  • New APIs/types have been added to support a faster version of looking up
    module exports without using string lookups with Module::get_export_index.
    #7828

Changed

  • Owned resources represented with ResourceAny can now be passed as arguments
    to functions that require a borrow<T> parameter.
    #7783

  • Generated structures from wasmtime::component::bindgen! for exported
    interfaces are now all renamed to Guest to avoid conflicting with WIT names.
    #7794

  • Guest profiler output will now automatically demangle symbols.
    #7809

  • The wasmtime crate now has a runtime Cargo feature which, if disabled,
    enables building Wasmtime with only the ability to compile WebAssembly
    modules. This enables compiling Wasmtime's compilation infrastructure, for
    example, to WebAssembly itself.
    #7766

  • Support for the old wasi-common crate and the original implementation of
    "WASIp1" aka "preview1" is being deprecated in the wasmtime-wasi crate.
    Users should migrate to the wasmtime_wasi::preview2 implementation, which
    supports both WASIp1 and WASIp2, as in the next release the
    wasi-common-based reexports of wasmtime-wasi will be deleted.
    #7881

v17.0.1: Release Wasmtime 17.0.1 (#7890)

07 Feb 23:28
601e229
Compare
Choose a tag to compare

17.0.1

Fixed

  • Fix an egraph elaboration fuzzbug that was allowing values with dependencies
    that shouldn't be duplicated to be chosen in a context that would make them
    invalid.
    #7859
    #7879
  • Fix an egraph rule bug that was allowing unconstrained recursion through the
    DFG to run away on large functions.
    #7882

v17.0.0: Release Wasmtime 17.0.0 (#7800)

25 Jan 20:31
ab5a448
Compare
Choose a tag to compare

17.0.0

Released 2024-01-25

The major feature of this release is that the WASI support in Wasmtime is now
considered stable and flagged at an 0.2.0 version approved by the WASI subgroup.
The release was delayed a few days to hold off until the WASI subgroup voted to
approve the CLI and HTTP worlds and they're now on-by-default! Additionally the
component model is now enabled by default in Wasmtime, for example an opt-in
flag is no longer required on the CLI. Note that embeddings still must opt-in to
using the component model by using the wasmtime::component module.

Added

  • Cranelift optimizations have been added for "3-way comparisons", or Ord::cmp
    in Rust or <=> in C++.
    #7636
    #7702

  • Components now use Wasmtime's compilation cache used for core wasm modules by
    default.
    #7649

  • The Resource<T> and ResourceAny types can now be converted between each
    other.
    #7649
    #7712

Changed

  • Minor changes have been made to a number of WITs as they progressed to their
    official 0.2.0 status.
    #7625
    #7640
    #7690
    #7781
    #7817

  • The component model is now enabled by default.
    #7821

  • The implementation of memory.atomic.{wait,notify} has been rewritten.
    #7629

  • The wasmtime_wasi::preview2::Table type has been moved to
    wasmtime::component::ResourceTable.
    #7655

  • Creating a UDP stream now validates the address being sent to.
    #7648

  • Defining resource types in Linker<T> now takes the type to define as a
    runtime parameter.
    #7680

  • Socket address checks can now be performed dynamically at runtime.
    #7662

  • Wasmtime and Cranelift's MSRV is now 1.73.0.
    #7739

Fixed

  • Bindings for WIT APIs where interfaces have multiple versions are now fixed by
    putting the version in the generated binding names.
    #7656

  • The preview1 fd_{read,write} APIs are now fixed when a shared memory is
    used.
    #7755

  • The preview1 fd_{read,write} APIs no longer leak an intermediate stream
    created.
    #7819

v16.0.0: Release Wasmtime 16.0.0 (#7709)

20 Dec 18:38
6613acd
Compare
Choose a tag to compare

16.0.0

Released 2023-12-20.

Added

  • Add yielding support in wasmtime_store_epoch_deadline_callback in the C API.
    #7476

  • Support for the wasi_unstable module ("wasi preview0" canonically) has been
    added to the -Spreview2 support in the CLI.
    #7548

  • The original module can now be obtained from an "instance pre" in the C API.
    #7572

  • Usage of Mach ports on macOS can now be disabled in the C API.
    #7595

Changed

  • The preview1-to-preview2 component adapters now import a smaller number of
    interfaces by default.
    #7543
    #7544

  • Wasmtime and Cranelift now require Rust 1.72.0 to build.
    #7554

  • The default world supported by wasmtime serve has been slimmed down to
    exactly what wasi:http/proxy specifies by default. Support for other WASI
    APIs can be included with the -S common command-line flag.
    #7597

  • The wasmtime --version CLI output will now include date/commit information
    when Wasmtime is built from a git checkout.
    #7610

Fixed

  • MPK support is now explicitly disabled on AMD-based CPUs since the
    implementation does not currently support it.
    #7513

  • Initialization of a WebAssembly data segment with a negative offset is fixed
    to zero-extend the offset instead of sign-extend.
    #7559

  • The reported offset of O_APPEND files in preview1 has been fixed.
    #7586

  • MPK support does a better job of compacting memories to minimize virtual
    memory used.
    #7622

Cranelift

  • Union node bitpacking has been fixed with egraph optimizations to ensure the
    minimal cost node is selected.
    #7465

  • Equivalent-cost expressions now have ties broken with expression depth in
    egraphs to prefer "shallow" expression trees.
    #7456

  • Long-and-narrow chains of expressions are now optimized into shallow-and-wide
    trees.
    #7466