Skip to content

v20.0.0: Release Wasmtime 20.0.0 (#8420)

Compare
Choose a tag to compare
@github-actions github-actions released this 22 Apr 21:04
· 196 commits to main since this release
9e1084f

20.0.0

Released 2024-04-22.

Added

  • Support for shared WebAssembly memories has been added to the C API.
    #7940

  • A Component::component_type method has been added to reflect on the imports
    and exports of a component.
    #8078

  • The with key in bindgen! now supports remapping entire packages and
    namespaces.
    #8083

  • Winch now supports the component model by using Cranelift to generate
    trampolines.
    #8082
    #8109

  • The WASI-NN backend now supports ONNX.
    #7691

  • The wasmtime CLI now has an -S inherit-env flag for inheriting the entire
    process environment.
    #8168

  • Winch now supports the WebAssembly memory64 proposal.
    #8194

  • Embedders can now opt-in to allowing wasmtime-wasi to block the current thread
    with file operations, for example.
    #8190

  • A wasmtime::CodeBuilder type has been added to refine the configuration of
    compiling a Module or a Component.
    #8181

  • The wasmtime serve subcommand now enables configuring preopened directories
    and environment variables.
    #8279

Changed

  • Support for WebAssembly GC is in the process of being implemented which has
    required refactoring and reimplementing the existing gc support for
    externref. Many APIs in this area has changed, see linked PRs for more
    details. Note that the wasm_* parts of the C API no longer support
    externref.
    #8011
    #8196

  • The wasmtime::component::Val type no longer stores type information and
    instead must be interpreted in the context of a type.
    #8062

  • The arguments required for ResourceAny::try_from_resource have been
    simplified by refactoring the internal representation.
    #8061

  • The arguments required for wasmtime::component::Linker::func_new have been
    simplified by refactoring the internal representation.
    #8070

  • The pooling allocator is now enabled by default with wasmtime serve.
    #8073

  • The error message for missing imports in has been improved with components.
    #7645

  • Wasmtime's MSRV is now 1.75.0.
    #8205

  • Wasmtime's translation of table-related instructions has improved codegen in
    some common cases, especially with call_indirect.
    #8063
    #8125
    #8124
    #8134
    #8137
    #8162
    #8159
    #8172
    #8171
    #8139
    #8206

  • Book-based documentation has been reordered and refactored.
    #8130

  • The -S common flag is renamed to -S cli, to better reflect that it provides
    the wasi-cli APIs. -S common is still accepted for now, and will be deprecated
    in the future.
    #8166

  • The tail-call calling convention now supports callee-saved registers to
    improve performance and allow enabling this WebAssembly proposal by default in
    the future.
    #8246

  • The wasmtime-wasi crate has been refactored to restructure some items and
    documentation has been added for most items.
    #8228

  • Support for the WebAssembly threads proposal is now gated by an
    on-by-default Cargo feature named threads.
    #8260

  • Borrow-checking in wiggle has been optimized to not be as fine-grained any
    more. This is a breaking change if users are relying on the ability to safely
    mutably borrow disjoint regions of memory.
    #8277

Fixed

  • Connection timeouts with wasi-http have been fixed.
    #8085

  • Generating bindings with bindgen! now works correctly when some WIT types
    are not used.
    #8065

  • Errors in wasi-http are no longer accidentally returned as traps.
    #8272

  • C API bindings now depend on wasmtime-wasi instead of wasi-common, and the
    wasi_config_preopen_socket function is no longer available as a result.
    #8066