|
| 1 | +--- |
| 2 | +title: "Wasmtime 27.0: Complete Wasm GC support, PyTorch backend, and more" |
| 3 | +author: "Eric Gregory" |
| 4 | +date: "2024-11-25" |
| 5 | +github_name: "ericgregory" |
| 6 | +excerpt_separator: <!--end_excerpt--> |
| 7 | +--- |
| 8 | + |
| 9 | +This month's v27.0 release of [Wasmtime](https://github.com/bytecodealliance/wasmtime)—the fast, secure, and standards-compliant WebAssembly (Wasm) runtime—includes enhancements such as completed support for the new Wasm garbage collection proposal, a PyTorch backend for `wasi-nn`, link-time feature gate configuration for unstable WIT APIs, and more. |
| 10 | + |
| 11 | +<!--end_excerpt--> |
| 12 | + |
| 13 | +* Wasmtime now fully supports the [WebAssembly Garbage Collection (GC) proposal](https://github.com/WebAssembly/gc). In addition to the GC, Wasmtime now includes a "null" collector that bump-allocates until the heap is exhausted. |
| 14 | +* A PyTorch backend [has been added](https://github.com/bytecodealliance/wasmtime/pull/9234) for `wasi-nn`, gated behind a `wasi-nn` feature flag: `--features pytorch` |
| 15 | +* Wasmtime's in-repo documentation has been updated to track [the implementation of various Wasm proposals in Wasmtime](https://github.com/bytecodealliance/wasmtime/blob/main/docs/stability-wasm-proposals.md). |
| 16 | + |
| 17 | +## What's new in Wasmtime v27.0 |
| 18 | + |
| 19 | +There are a variety of enhancements and fixes in Wasmtime 27.0. You can find the release notes [here](https://github.com/bytecodealliance/wasmtime/releases/tag/v27.0.0). |
| 20 | + |
| 21 | +### Added |
| 22 | + |
| 23 | +* Support for the Wasm GC proposal is now complete. A new "null" GC has also been added, which does not ever collect garbage. [#9389](https://github.com/bytecodealliance/wasmtime/pull/9389) [#9392](https://github.com/bytecodealliance/wasmtime/pull/9392) [#9401](https://github.com/bytecodealliance/wasmtime/pull/9401) [#9435](https://github.com/bytecodealliance/wasmtime/pull/9435) [#9437](https://github.com/bytecodealliance/wasmtime/pull/9437) [#9438](https://github.com/bytecodealliance/wasmtime/pull/9438) [#9446](https://github.com/bytecodealliance/wasmtime/pull/9446) [#9448](https://github.com/bytecodealliance/wasmtime/pull/9448) [#9454](https://github.com/bytecodealliance/wasmtime/pull/9454) [#9455](https://github.com/bytecodealliance/wasmtime/pull/9455) [#9484](https://github.com/bytecodealliance/wasmtime/pull/9484) |
| 24 | +* Unstable WIT APIs now have feature gates configured at link-time and new `-Scli-exit-with-code` / `-Snetwork-error-code` options are available as well. [#9381](https://github.com/bytecodealliance/wasmtime/pull/9381) [#9276](https://github.com/bytecodealliance/wasmtime/pull/9276) |
| 25 | +* Initial support for the wide-arithmetic proposal has been implemented. [#9403](https://github.com/bytecodealliance/wasmtime/pull/9403) [#9500](https://github.com/bytecodealliance/wasmtime/pull/9500) |
| 26 | +* Guests on s390x now implement the "inline probestacks" for Cranelift to more robustly detect stack overflows. [#9423](https://github.com/bytecodealliance/wasmtime/pull/9423) |
| 27 | +* Missing CLI options for the pooling allocator have been filled out. [#9447](https://github.com/bytecodealliance/wasmtime/pull/9447) |
| 28 | +* Cranelift now supports 128-bit atomics on x64. [#9459](https://github.com/bytecodealliance/wasmtime/pull/9459) |
| 29 | +* A new Cargo feature has been added to the `wasmtime` crate to reexport the `wasmparser` dependency. [#9485](https://github.com/bytecodealliance/wasmtime/pull/9485) |
| 30 | +* Support for a new PyTorch backend for wasi-nn has been added. [#9234](https://github.com/bytecodealliance/wasmtime/pull/9234) |
| 31 | +* A new `-Cnative-unwind-info` flag has been added to the `wasmtime` CLI. [#9494](https://github.com/bytecodealliance/wasmtime/pull/9494) |
| 32 | +* Initial support for illumos has been added. [#9535](https://github.com/bytecodealliance/wasmtime/pull/9535) |
| 33 | +* A new `Caller::get_module_export` API has been added. [#9525](https://github.com/bytecodealliance/wasmtime/pull/9525) |
| 34 | +* Basic debug logging has been added to the debug info transformatino. [#9526](https://github.com/bytecodealliance/wasmtime/pull/9526) |
| 35 | + |
| 36 | +### Changed |
| 37 | + |
| 38 | +* The WASI WITs vendored are now updated to 0.2.2. [#9395](https://github.com/bytecodealliance/wasmtime/pull/9395) |
| 39 | +* The `wasmtime-wasi-runtime-config` is now named `wasmtime-wasi-config`. [#9404](https://github.com/bytecodealliance/wasmtime/pull/9404) |
| 40 | +* Documentation on the implementation status of WebAssembly proposals has been updated. [#9434](https://github.com/bytecodealliance/wasmtime/pull/9434) |
| 41 | +* Wasmtime's WASI documentation has been overhauled. [#9471](https://github.com/bytecodealliance/wasmtime/pull/9471) |
| 42 | +* The `wasi_config_preopen_dir` in Wasmtime's C API now takes file/directory permissions. [#9477](https://github.com/bytecodealliance/wasmtime/pull/9477) |
| 43 | +* Detection of libunwind vs libgcc is now done with weak symbols. [#9479](https://github.com/bytecodealliance/wasmtime/pull/9479) |
| 44 | +* Winch has improved detection of unsupported features in a `Config`. [#9490](https://github.com/bytecodealliance/wasmtime/pull/9490) |
| 45 | +* Winch now supports fuel-based interruption. [#9472](https://github.com/bytecodealliance/wasmtime/pull/9472) |
| 46 | +* Wasmtime's minimum supported Rust version is now 1.80. [#9496](https://github.com/bytecodealliance/wasmtime/pull/9496) |
| 47 | +* ISLE no longer supports scheme-style booleans. [#9522](https://github.com/bytecodealliance/wasmtime/pull/9522) |
| 48 | +* ISLE now supports block comments. [#9529](https://github.com/bytecodealliance/wasmtime/pull/9529) |
| 49 | +* Support for shared memory in the C API has been added. [#9507](https://github.com/bytecodealliance/wasmtime/pull/9507) |
| 50 | +* Configuration options for guard size regions have been merged into a single option. [#9528](https://github.com/bytecodealliance/wasmtime/pull/9528) |
| 51 | + |
| 52 | +### Fixed |
| 53 | + |
| 54 | +* Double-registration of debug information for modules in components has been fixed. [#9470](https://github.com/bytecodealliance/wasmtime/pull/9470) |
| 55 | +* A panic on AArch64 for vector constants has been fixed. [#9482](https://github.com/bytecodealliance/wasmtime/pull/9482) |
| 56 | +* A miscompile with `sdiv` and `INT_MIN / -1` has been fixed on aarch64. [#9541](https://github.com/bytecodealliance/wasmtime/pull/9541) |
| 57 | + |
| 58 | +## Get involved |
| 59 | + |
| 60 | +Thanks to Dan Gohman for his work on this release. If you'd like to get involved with Wasmtime, join our [Zulip chat](https://bytecodealliance.zulipchat.com/) and check out the [Wasmtime contributors' guide](https://docs.wasmtime.dev/contributing.html) for more information. |
0 commit comments