829 lines
32 KiB
Markdown
829 lines
32 KiB
Markdown
# Wasmtime Releases
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## Unreleased
|
|
|
|
## 0.28.0
|
|
|
|
Released 2021-06-09.
|
|
|
|
### Changed
|
|
|
|
* Breaking: Wasmtime's embedding API has been redesigned, as specified in [RFC
|
|
11]. Rust users can now enjoy easier times with `Send` and `Sync`, and all
|
|
users can now more clearly manage memory, especially in the C API. Language
|
|
embeddings have been updated to the new API as well.
|
|
[#2897](https://github.com/bytecodealliance/wasmtime/pull/2897)
|
|
|
|
[RFC 11]: https://github.com/bytecodealliance/rfcs/pull/11
|
|
|
|
### Added
|
|
|
|
* A new `InstancePre` type, created with `Linker::instantiate_pre`, has been
|
|
added to perform type-checking of an instance once and reduce the work done
|
|
for each instantiation of a module:
|
|
[#2962](https://github.com/bytecodealliance/wasmtime/pull/2962)
|
|
|
|
* Deserialization of a module can now optionally skip checking the wasmtime
|
|
version string:
|
|
[#2945](https://github.com/bytecodealliance/wasmtime/pull/2945)
|
|
|
|
* A method has been exposed to frontload per-thread initialization costs if the
|
|
latency of every last wasm call is important:
|
|
[#2946](https://github.com/bytecodealliance/wasmtime/pull/2946)
|
|
|
|
* Hooks have been added for entry/exit into wasm code to allow embeddings to
|
|
track time and other properties about execution in a wasm environment:
|
|
[#2952](https://github.com/bytecodealliance/wasmtime/pull/2952)
|
|
|
|
* A [C++ embedding of Wasmtime has been written][cpp].
|
|
|
|
[RFC 11]: https://github.com/bytecodealliance/rfcs/pull/11
|
|
[cpp]: https://github.com/bytecodealliance/wasmtime-cpp
|
|
|
|
### Fixed
|
|
|
|
* Multiple returns on macOS AArch64 have been fixed:
|
|
[#2956](https://github.com/bytecodealliance/wasmtime/pull/2956)
|
|
|
|
## 0.27.0
|
|
|
|
Released 2021-05-21.
|
|
|
|
### Security Fixes
|
|
|
|
* Fixed a security issue in Cranelift's x64 backend that could result in a heap
|
|
sandbox escape due to an incorrect sign-extension:
|
|
[#2913](https://github.com/bytecodealliance/wasmtime/issues/2913).
|
|
|
|
### Added
|
|
|
|
* Support for IBM z/Archiecture (`s390x`) machines in Cranelift and Wasmtime:
|
|
[#2836](https://github.com/bytecodealliance/wasmtime/pull/2836),
|
|
[#2837](https://github.com/bytecodealliance/wasmtime/pull/2837),
|
|
[#2838](https://github.com/bytecodealliance/wasmtime/pull/2838),
|
|
[#2843](https://github.com/bytecodealliance/wasmtime/pull/2843),
|
|
[#2854](https://github.com/bytecodealliance/wasmtime/pull/2854),
|
|
[#2870](https://github.com/bytecodealliance/wasmtime/pull/2870),
|
|
[#2871](https://github.com/bytecodealliance/wasmtime/pull/2871),
|
|
[#2872](https://github.com/bytecodealliance/wasmtime/pull/2872),
|
|
[#2874](https://github.com/bytecodealliance/wasmtime/pull/2874).
|
|
|
|
* Improved async support in wasi-common runtime:
|
|
[#2832](https://github.com/bytecodealliance/wasmtime/pull/2832).
|
|
|
|
* Added `Store::with_limits`, `StoreLimits`, and `ResourceLimiter` to the
|
|
Wasmtime API to help with enforcing resource limits at runtime. The
|
|
`ResourceLimiter` trait can be implemented by custom resource limiters to
|
|
decide if linear memories or tables can be grown.
|
|
|
|
* Added `allow-unknown-exports` option for the run command:
|
|
[#2879](https://github.com/bytecodealliance/wasmtime/pull/2879).
|
|
|
|
* Added API to notify that a `Store` has moved to a new thread:
|
|
[#2822](https://github.com/bytecodealliance/wasmtime/pull/2822).
|
|
|
|
* Documented guidance around using Wasmtime in multithreaded contexts:
|
|
[#2812](https://github.com/bytecodealliance/wasmtime/pull/2812).
|
|
In the future, the Wasmtime API will change to allow some of its core types
|
|
to be Send/Sync; see the in-progress
|
|
[#2897](https://github.com/bytecodealliance/wasmtime/pull/2897) for details.
|
|
|
|
* Support calls from native code to multiple-return-value functions:
|
|
[#2806](https://github.com/bytecodealliance/wasmtime/pull/2806).
|
|
|
|
### Changed
|
|
|
|
* Breaking: `Memory::new` has been changed to return `Result` as creating a
|
|
host memory object is now a fallible operation when the initial size of
|
|
the memory exceeds the store limits.
|
|
|
|
### Fixed
|
|
|
|
* Many instruction selection improvements on x64 and aarch64:
|
|
[#2819](https://github.com/bytecodealliance/wasmtime/pull/2819),
|
|
[#2828](https://github.com/bytecodealliance/wasmtime/pull/2828),
|
|
[#2823](https://github.com/bytecodealliance/wasmtime/pull/2823),
|
|
[#2862](https://github.com/bytecodealliance/wasmtime/pull/2862),
|
|
[#2886](https://github.com/bytecodealliance/wasmtime/pull/2886),
|
|
[#2889](https://github.com/bytecodealliance/wasmtime/pull/2889),
|
|
[#2905](https://github.com/bytecodealliance/wasmtime/pull/2905).
|
|
|
|
* Improved performance of Wasmtime runtime substantially:
|
|
[#2811](https://github.com/bytecodealliance/wasmtime/pull/2811),
|
|
[#2818](https://github.com/bytecodealliance/wasmtime/pull/2818),
|
|
[#2821](https://github.com/bytecodealliance/wasmtime/pull/2821),
|
|
[#2847](https://github.com/bytecodealliance/wasmtime/pull/2847),
|
|
[#2900](https://github.com/bytecodealliance/wasmtime/pull/2900).
|
|
|
|
* Fixed WASI issue with file metadata on Windows:
|
|
[#2884](https://github.com/bytecodealliance/wasmtime/pull/2884).
|
|
|
|
* Fixed an issue with debug info and an underflowing (trapping) offset:
|
|
[#2866](https://github.com/bytecodealliance/wasmtime/pull/2866).
|
|
|
|
* Fixed an issue with unwind information in the old x86 backend:
|
|
[#2845](https://github.com/bytecodealliance/wasmtime/pull/2845).
|
|
|
|
* Fixed i32 spilling in x64 backend:
|
|
[#2840](https://github.com/bytecodealliance/wasmtime/pull/2840).
|
|
|
|
## 0.26.0
|
|
|
|
Released 2021-04-05.
|
|
|
|
### Added
|
|
|
|
* Added the `wasmtime compile` command to support AOT compilation of Wasm
|
|
modules. This adds the `Engine::precompile_module` method. Also added the
|
|
`Config::target` method to change the compilation target of the
|
|
configuration. This can be used in conjunction with
|
|
`Engine::precompile_module` to target a different host triple than the
|
|
current one.
|
|
[#2791](https://github.com/bytecodealliance/wasmtime/pull/2791)
|
|
|
|
* Support for macOS on aarch64 (Apple M1 Silicon), including Apple-specific
|
|
calling convention details and unwinding/exception handling using Mach ports.
|
|
[#2742](https://github.com/bytecodealliance/wasmtime/pull/2742),
|
|
[#2723](https://github.com/bytecodealliance/wasmtime/pull/2723)
|
|
|
|
* A number of SIMD instruction implementations in the new x86-64 backend.
|
|
[#2771](https://github.com/bytecodealliance/wasmtime/pull/2771)
|
|
|
|
* Added the `Config::cranelift_flag_enable` method to enable setting Cranelift
|
|
boolean flags or presets in a config.
|
|
|
|
* Added CLI option `--cranelift-enable` to enable boolean settings and ISA presets.
|
|
|
|
* Deduplicate function signatures in Wasm modules.
|
|
[#2772](https://github.com/bytecodealliance/wasmtime/pull/2772)
|
|
|
|
* Optimize overheads of calling into Wasm functions.
|
|
[#2757](https://github.com/bytecodealliance/wasmtime/pull/2757),
|
|
[#2759](https://github.com/bytecodealliance/wasmtime/pull/2759)
|
|
|
|
* Improvements related to Module Linking: compile fewer trampolines;
|
|
|
|
[#2774](https://github.com/bytecodealliance/wasmtime/pull/2774)
|
|
|
|
* Re-export sibling crates from `wasmtime-wasi` to make embedding easier
|
|
without needing to match crate versions.
|
|
[#2776](https://github.com/bytecodealliance/wasmtime/pull/2776)
|
|
|
|
### Changed
|
|
|
|
* Switched the default compiler backend on x86-64 to Cranelift's new backend.
|
|
This should not have any user-visible effects other than possibly runtime
|
|
performance improvements. The old backend is still available with the
|
|
`old-x86-backend` feature flag to the `cranelift-codegen` or `wasmtime`
|
|
crates, or programmatically with `BackendVariant::Legacy`. We plan to
|
|
maintain the old backend for at least one more release and ensure it works on
|
|
CI.
|
|
[#2718](https://github.com/bytecodealliance/wasmtime/pull/2718)
|
|
|
|
* Breaking: `Module::deserialize` has been removed in favor of `Module::new`.
|
|
|
|
* Breaking: `Config::cranelift_clear_cpu_flags` was removed. Use `Config::target`
|
|
to clear the CPU flags for the host's target.
|
|
|
|
* Breaking: `Config::cranelift_other_flag` was renamed to `Config::cranelift_flag_set`.
|
|
|
|
* CLI changes:
|
|
* Wasmtime CLI options to enable WebAssembly features have been replaced with
|
|
a singular `--wasm-features` option. The previous options are still
|
|
supported, but are not displayed in help text.
|
|
* Breaking: the CLI option `--cranelift-flags` was changed to
|
|
`--cranelift-set`.
|
|
* Breaking: the CLI option `--enable-reference-types=false` has been changed
|
|
to `--wasm-features=-reference-types`.
|
|
* Breaking: the CLI option `--enable-multi-value=false` has been changed to
|
|
`--wasm-features=-multi-value`.
|
|
* Breaking: the CLI option `--enable-bulk-memory=false` has been changed to
|
|
`--wasm-features=-bulk-memory`.
|
|
|
|
* Improved error-reporting in wiggle.
|
|
[#2760](https://github.com/bytecodealliance/wasmtime/pull/2760)
|
|
|
|
* Make WASI sleeping fallible (some systems do not support sleep).
|
|
[#2756](https://github.com/bytecodealliance/wasmtime/pull/2756)
|
|
|
|
* WASI: Support `poll_oneoff` with a sleep.
|
|
[#2753](https://github.com/bytecodealliance/wasmtime/pull/2753)
|
|
|
|
* Allow a `StackMapSink` to be passed when defining functions with
|
|
`cranelift-module`.
|
|
[#2739](https://github.com/bytecodealliance/wasmtime/pull/2739)
|
|
|
|
* Some refactoring in new x86-64 backend to prepare for VEX/EVEX (e.g.,
|
|
AVX-512) instruction encodings to be supported.
|
|
[#2799](https://github.com/bytecodealliance/wasmtime/pull/2799)
|
|
|
|
### Fixed
|
|
|
|
* Fixed a corner case in `srem` (signed remainder) in the new x86-64 backend:
|
|
`INT_MIN % -1` should return `0`, rather than trapping. This only occurred
|
|
when `avoid_div_traps == false` was set by the embedding.
|
|
[#2763](https://github.com/bytecodealliance/wasmtime/pull/2763)
|
|
|
|
* Fixed a memory leak of the `Store` when an instance traps.
|
|
[#2803](https://github.com/bytecodealliance/wasmtime/pull/2803)
|
|
|
|
* Some fuzzing-related fixes.
|
|
[#2788](https://github.com/bytecodealliance/wasmtime/pull/2788),
|
|
[#2770](https://github.com/bytecodealliance/wasmtime/pull/2770)
|
|
|
|
* Fixed memory-initialization bug in uffd allocator that could copy into the
|
|
wrong destination under certain conditions. Does not affect the default
|
|
wasmtime instance allocator.
|
|
[#2801](https://github.com/bytecodealliance/wasmtime/pull/2801)
|
|
|
|
* Fix printing of float values from the Wasmtime CLI.
|
|
[#2797](https://github.com/bytecodealliance/wasmtime/pull/2797)
|
|
|
|
* Remove the ability for the `Linker` to instantiate modules with duplicate
|
|
import strings of different types.
|
|
[#2789](https://github.com/bytecodealliance/wasmtime/pull/2789)
|
|
|
|
## 0.25.0
|
|
|
|
Released 2021-03-16.
|
|
|
|
### Added
|
|
|
|
* An implementation of a pooling instance allocator, optionally backed by
|
|
`userfaultfd` on Linux, was added to improve the performance of embeddings
|
|
that instantiate a large number of instances continuously.
|
|
[#2518](https://github.com/bytecodealliance/wasmtime/pull/2518)
|
|
|
|
* Host functions can now be defined on `Config` to share the function across all
|
|
`Store` objects connected to an `Engine`. This can improve the time it takes
|
|
to instantiate instances in a short-lived `Store`.
|
|
[#2625](https://github.com/bytecodealliance/wasmtime/pull/2625)
|
|
|
|
* The `Store` object now supports having typed values attached to it which can
|
|
be retrieved from host functions.
|
|
[#2625](https://github.com/bytecodealliance/wasmtime/pull/2625)
|
|
|
|
* The `wiggle` code generator now supports `async` host functions.
|
|
[#2701](https://github.com/bytecodealliance/wasmtime/pull/2701)
|
|
|
|
### Changed
|
|
|
|
* The `Func::getN{,_async}` APIs have all been removed in favor of a new
|
|
`Func::typed` API which should be more compact in terms of API surface area as
|
|
well as more flexible in how it can be used.
|
|
[#2719](https://github.com/bytecodealliance/wasmtime/pull/2719)
|
|
|
|
* `Engine::new` has been changed from returning `Engine` to returning
|
|
`anyhow::Result<Engine>`. Callers of `Engine::new` will need to be updated to
|
|
use the `?` operator on the return value or otherwise unwrap the result to get
|
|
the `Engine`.
|
|
|
|
### Fixed
|
|
|
|
* Interpretation of timestamps in `poll_oneoff` for WASI have been fixed to
|
|
correctly use nanoseconds instead of microseconds.
|
|
[#2717](https://github.com/bytecodealliance/wasmtime/pull/2717)
|
|
|
|
## 0.24.0
|
|
|
|
Released 2021-03-04.
|
|
|
|
### Added
|
|
|
|
* Implement support for `async` functions in Wasmtime
|
|
[#2434](https://github.com/bytecodealliance/wasmtime/pull/2434)
|
|
|
|
### Fixed
|
|
|
|
* Fix preservation of the sigaltstack on macOS
|
|
[#2676](https://github.com/bytecodealliance/wasmtime/pull/2676)
|
|
* Fix incorrect semver dependencies involving fs-set-times.
|
|
[#2705](https://github.com/bytecodealliance/wasmtime/pull/2705)
|
|
* Fix some `i128` shift-related bugs in x64 backend.
|
|
[#2682](https://github.com/bytecodealliance/wasmtime/pull/2682)
|
|
* Fix incomplete trap metadata due to multiple traps at one address
|
|
[#2685](https://github.com/bytecodealliance/wasmtime/pull/2685)
|
|
|
|
## 0.23.0
|
|
|
|
Released 2021-02-16.
|
|
|
|
### Added
|
|
|
|
* Support for limiting WebAssembly execution with fuel was added, including
|
|
support in the C API.
|
|
[#2611](https://github.com/bytecodealliance/wasmtime/pull/2611)
|
|
[#2643](https://github.com/bytecodealliance/wasmtime/pull/2643)
|
|
* Wasmtime now has more knobs for limiting memory and table allocations
|
|
[#2617](https://github.com/bytecodealliance/wasmtime/pull/2617)
|
|
* Added a method to share `Config` across machines
|
|
[#2608](https://github.com/bytecodealliance/wasmtime/pull/2608)
|
|
* Added a safe memory read/write API
|
|
[#2528](https://github.com/bytecodealliance/wasmtime/pull/2528)
|
|
* Added support for the experimental wasi-crypto APIs
|
|
[#2597](https://github.com/bytecodealliance/wasmtime/pull/2597)
|
|
* Added an instance limit to `Config`
|
|
[#2593](https://github.com/bytecodealliance/wasmtime/pull/2593)
|
|
* Implemented module-linking's outer module aliases
|
|
[#2590](https://github.com/bytecodealliance/wasmtime/pull/2590)
|
|
* Cranelift now supports 128-bit operations for the new x64 backend.
|
|
[#2539](https://github.com/bytecodealliance/wasmtime/pull/2539)
|
|
* Cranelift now has detailed debug-info (DWARF) support in new backends (initially x64).
|
|
[#2565](https://github.com/bytecodealliance/wasmtime/pull/2565)
|
|
* Cranelift now uses the `POPCNT`, `TZCNT`, and `LZCNT`, as well as SSE 4.1
|
|
rounding instructions on x64 when available.
|
|
* Cranelift now uses the `CNT`, instruction on aarch64 when available.
|
|
|
|
### Changed
|
|
|
|
* A new WASI implementation built on the new
|
|
[`cap-std`](https://github.com/bytecodealliance/cap-std) crate was added,
|
|
replacing the previous implementation. This brings improved robustness,
|
|
portability, and performance.
|
|
|
|
* `wasmtime_wasi::WasiCtxBuilder` moved to
|
|
`wasi_cap_std_sync::WasiCtxBuilder`.
|
|
|
|
* The WebAssembly C API is updated, with a few minor API changes
|
|
[#2579](https://github.com/bytecodealliance/wasmtime/pull/2579)
|
|
|
|
### Fixed
|
|
|
|
* Fixed a panic in WASI `fd_readdir` on large directories
|
|
[#2620](https://github.com/bytecodealliance/wasmtime/pull/2620)
|
|
* Fixed a memory leak with command modules
|
|
[#2017](https://github.com/bytecodealliance/wasmtime/pull/2017)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## 0.22.0
|
|
|
|
Released 2021-01-07.
|
|
|
|
### Added
|
|
|
|
* Experimental support for [the module-linking
|
|
proposal](https://github.com/WebAssembly/module-linking) was
|
|
added. [#2094](https://github.com/bytecodealliance/wasmtime/pull/2094)
|
|
|
|
* Added support for [the reference types
|
|
proposal](https://webassembly.github.io/reference-types) on the aarch64
|
|
architecture. [#2410](https://github.com/bytecodealliance/wasmtime/pull/2410)
|
|
|
|
* Experimental support for [wasi-nn](https://github.com/WebAssembly/wasi-nn) was
|
|
added. [#2208](https://github.com/bytecodealliance/wasmtime/pull/2208)
|
|
|
|
### Changed
|
|
|
|
### Fixed
|
|
|
|
* Fixed an issue where the `select` instruction didn't accept `v128` SIMD
|
|
operands. [#2391](https://github.com/bytecodealliance/wasmtime/pull/2391)
|
|
|
|
* Fixed an issue where Wasmtime could potentially use the wrong stack map during
|
|
GCs, leading to a
|
|
panic. [#2396](https://github.com/bytecodealliance/wasmtime/pull/2396)
|
|
|
|
* Fixed an issue where if a host-defined function erroneously returned a value
|
|
from a different store, that value would be
|
|
leaked. [#2424](https://github.com/bytecodealliance/wasmtime/pull/2424)
|
|
|
|
* Fixed a bug where in certain cases if a module's instantiation failed, it
|
|
could leave trampolines in the store that referenced the no-longer-valid
|
|
instance. These trampolines could be reused in future instantiations, leading
|
|
to use after free bugs.
|
|
[#2408](https://github.com/bytecodealliance/wasmtime/pull/2408)
|
|
|
|
* Fixed a miscompilation on aarch64 where certain instructions would read `SP`
|
|
instead of the zero register. This could only affect you if you explicitly
|
|
enabled the Wasm SIMD
|
|
proposal. [#2548](https://github.com/bytecodealliance/wasmtime/pull/2548)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## 0.21.0
|
|
|
|
Released 2020-11-05.
|
|
|
|
### Added
|
|
|
|
* Experimental support for the multi-memory proposal was added.
|
|
[#2263](https://github.com/bytecodealliance/wasmtime/pull/2263)
|
|
|
|
* The `Trap::trap_code` API enables learning what kind of trap was raised.
|
|
[#2309](https://github.com/bytecodealliance/wasmtime/pull/2309)
|
|
|
|
### Changed
|
|
|
|
* WebAssembly module validation is now parallelized.
|
|
[#2059](https://github.com/bytecodealliance/wasmtime/pull/2059)
|
|
|
|
* Documentation is now available at docs.wasmtime.dev.
|
|
[#2317](https://github.com/bytecodealliance/wasmtime/pull/2317)
|
|
|
|
* Windows now compiles like other platforms with a huge guard page instead of
|
|
having its own custom limit which made modules compile and run more slowly.
|
|
[#2326](https://github.com/bytecodealliance/wasmtime/pull/2326)
|
|
|
|
* The size of the cache entry for serialized modules has been greatly reduced.
|
|
[#2321](https://github.com/bytecodealliance/wasmtime/pull/2321)
|
|
[#2322](https://github.com/bytecodealliance/wasmtime/pull/2322)
|
|
[#2324](https://github.com/bytecodealliance/wasmtime/pull/2324)
|
|
[#2325](https://github.com/bytecodealliance/wasmtime/pull/2325)
|
|
|
|
* The `FuncType` API constructor and accessors are now iterator-based.
|
|
[#2365](https://github.com/bytecodealliance/wasmtime/pull/2365)
|
|
|
|
### Fixed
|
|
|
|
* A panic in compiling reference-types-using modules has been fixed.
|
|
[#2350](https://github.com/bytecodealliance/wasmtime/pull/2350)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## 0.20.0
|
|
|
|
Released 2020-09-23.
|
|
|
|
### Added
|
|
|
|
* Support for explicitly serializing and deserializing compiled wasm modules has
|
|
been added.
|
|
[#2020](https://github.com/bytecodealliance/wasmtime/pull/2020)
|
|
|
|
* A `wasmtime_store_gc` C API was added to run GC for `externref`.
|
|
[#2052](https://github.com/bytecodealliance/wasmtime/pull/2052)
|
|
|
|
* Support for atomics in Cranelift has been added. Support is not fully
|
|
implemented in Wasmtime at this time, however.
|
|
[#2077](https://github.com/bytecodealliance/wasmtime/pull/2077)
|
|
|
|
* The `Caller::get_export` function is now implemented for `Func` references as
|
|
well.
|
|
[#2108](https://github.com/bytecodealliance/wasmtime/pull/2108)
|
|
|
|
### Fixed
|
|
|
|
* Leaks in the C API have been fixed.
|
|
[#2040](https://github.com/bytecodealliance/wasmtime/pull/2040)
|
|
|
|
* The `wasm_val_copy` C API has been fixed for reference types.
|
|
[#2041](https://github.com/bytecodealliance/wasmtime/pull/2041)
|
|
|
|
* Fix a panic with `Func::new` and reference types when the store doesn't have
|
|
reference types enabled.
|
|
[#2039](https://github.com/bytecodealliance/wasmtime/pull/2039)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## 0.19.0
|
|
|
|
Released 2020-07-14.
|
|
|
|
### Added
|
|
|
|
* The [WebAssembly reference-types proposal][reftypes] is now supported in
|
|
Wasmtime and the C API.
|
|
[#1832](https://github.com/bytecodealliance/wasmtime/pull/1832),
|
|
[#1882](https://github.com/bytecodealliance/wasmtime/pull/1882),
|
|
[#1894](https://github.com/bytecodealliance/wasmtime/pull/1894),
|
|
[#1901](https://github.com/bytecodealliance/wasmtime/pull/1901),
|
|
[#1923](https://github.com/bytecodealliance/wasmtime/pull/1923),
|
|
[#1969](https://github.com/bytecodealliance/wasmtime/pull/1969),
|
|
[#1973](https://github.com/bytecodealliance/wasmtime/pull/1973),
|
|
[#1982](https://github.com/bytecodealliance/wasmtime/pull/1982),
|
|
[#1984](https://github.com/bytecodealliance/wasmtime/pull/1984),
|
|
[#1991](https://github.com/bytecodealliance/wasmtime/pull/1991),
|
|
[#1996](https://github.com/bytecodealliance/wasmtime/pull/1996)
|
|
|
|
* The [WebAssembly simd proposal's][simd] spec tests now pass in Wasmtime.
|
|
[#1765](https://github.com/bytecodealliance/wasmtime/pull/1765),
|
|
[#1876](https://github.com/bytecodealliance/wasmtime/pull/1876),
|
|
[#1941](https://github.com/bytecodealliance/wasmtime/pull/1941),
|
|
[#1957](https://github.com/bytecodealliance/wasmtime/pull/1957),
|
|
[#1990](https://github.com/bytecodealliance/wasmtime/pull/1990),
|
|
[#1994](https://github.com/bytecodealliance/wasmtime/pull/1994)
|
|
|
|
* Wasmtime can now be compiled without the usage of threads for parallel
|
|
compilation, although this is still enabled by default.
|
|
[#1903](https://github.com/bytecodealliance/wasmtime/pull/1903)
|
|
|
|
* The C API is [now
|
|
documented](https://bytecodealliance.github.io/wasmtime/c-api/).
|
|
[#1928](https://github.com/bytecodealliance/wasmtime/pull/1928),
|
|
[#1959](https://github.com/bytecodealliance/wasmtime/pull/1959),
|
|
[#1968](https://github.com/bytecodealliance/wasmtime/pull/1968)
|
|
|
|
* A `wasmtime_linker_get_one_by_name` function was added to the C API.
|
|
[#1897](https://github.com/bytecodealliance/wasmtime/pull/1897)
|
|
|
|
* A `wasmtime_trap_exit_status` function was added to the C API.
|
|
[#1912](https://github.com/bytecodealliance/wasmtime/pull/1912)
|
|
|
|
* Compilation for the `aarch64-linux-android` target should now work, although
|
|
keep in mind this platform is not fully tested still.
|
|
[#2002](https://github.com/bytecodealliance/wasmtime/pull/2002)
|
|
|
|
[reftypes]: https://github.com/WebAssembly/reference-types
|
|
|
|
### Fixed
|
|
|
|
* Runtime warnings when using Wasmtime on musl have been fixed.
|
|
[#1914](https://github.com/bytecodealliance/wasmtime/pull/1914)
|
|
|
|
* A bug affecting Windows unwind information with functions that have spilled
|
|
floating point registers has been fixed.
|
|
[#1983](https://github.com/bytecodealliance/wasmtime/pull/1983)
|
|
|
|
### Changed
|
|
|
|
* Wasmtime's default branch and development now happens on the `main` branch
|
|
instead of `master`.
|
|
[#1924](https://github.com/bytecodealliance/wasmtime/pull/1924)
|
|
|
|
### Removed
|
|
|
|
* The "host info" support in the C API has been removed since it was never fully
|
|
or correctly implemented.
|
|
[#1922](https://github.com/bytecodealliance/wasmtime/pull/1922)
|
|
|
|
* Support for the `*_same` functions in the C API has been removed in the same
|
|
vein as the host info APIs.
|
|
[#1926](https://github.com/bytecodealliance/wasmtime/pull/1926)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## 0.18.0
|
|
|
|
Release 2020-06-09.
|
|
|
|
### Added
|
|
|
|
The `WasmTy` trait is now implemented for `u32` and `u64`.
|
|
|
|
[#1808](https://github.com/bytecodealliance/wasmtime/pull/1808)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## 0.17.0
|
|
|
|
Released 2020-06-01.
|
|
|
|
### Added
|
|
|
|
* The [Commands and Reactors ABI] is now supported in the Rust API. `Linker::module`
|
|
loads a module and automatically handles Commands and Reactors semantics.
|
|
|
|
[#1565](https://github.com/bytecodealliance/wasmtime/pull/1565)
|
|
|
|
[Commands and Reactors ABI]: https://github.com/WebAssembly/WASI/blob/master/design/application-abi.md#current-unstable-abi
|
|
|
|
The `Table::grow` function now returns the previous table size, making it consistent
|
|
with the `table.grow` instruction.
|
|
|
|
[#1653](https://github.com/bytecodealliance/wasmtime/pull/1653)
|
|
|
|
New Wasmtime-specific C APIs for working with tables were added which provide more
|
|
detailed error information and which make growing a table more consistent with the
|
|
`table.grow` instruction as well.
|
|
|
|
[#1654](https://github.com/bytecodealliance/wasmtime/pull/1654)
|
|
|
|
The C API now includes support for enabling logging in Wasmtime.
|
|
|
|
[#1737](https://github.com/bytecodealliance/wasmtime/pull/1737)
|
|
|
|
### Changed
|
|
|
|
The WASI `proc_exit` function no longer exits the host process. It now unwinds the
|
|
callstack back to the wasm entrypoint, and the exit value is available from the
|
|
`Trap::i32_exit_status` method.
|
|
|
|
[#1646](https://github.com/bytecodealliance/wasmtime/pull/1646)
|
|
|
|
The WebAssembly [multi-value](https://github.com/WebAssembly/multi-value/) proposal
|
|
is now enabled by default.
|
|
|
|
[#1667](https://github.com/bytecodealliance/wasmtime/pull/1667)
|
|
|
|
The Rust API does not require a store provided during `Module::new` operation. The `Module` can be send accross threads and instantiate for a specific store. The `Instance::new` now requires the store.
|
|
|
|
[#1761](https://github.com/bytecodealliance/wasmtime/pull/1761)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## 0.16.0
|
|
|
|
Released 2020-04-29.
|
|
|
|
### Added
|
|
|
|
* The `Instance` struct has new accessors, `get_func`, `get_table`,
|
|
`get_memory`, and `get_global` for quickly looking up exported
|
|
functions, tables, memories, and globals by name.
|
|
[#1524](https://github.com/bytecodealliance/wasmtime/pull/1524)
|
|
|
|
* The C API has a number of new `wasmtime_*` functions which return error
|
|
objects to get detailed error information when an API fails.
|
|
[#1467](https://github.com/bytecodealliance/wasmtime/pull/1467)
|
|
|
|
* Users now have fine-grained control over creation of instances of `Memory`
|
|
with a new `MemoryCreator` trait.
|
|
[#1400](https://github.com/bytecodealliance/wasmtime/pull/1400)
|
|
|
|
* Go bindings for Wasmtime are [now available][go-bindings].
|
|
[#1481](https://github.com/bytecodealliance/wasmtime/pull/1481)
|
|
|
|
* APIs for looking up values in a `Linker` have been added.
|
|
[#1480](https://github.com/bytecodealliance/wasmtime/pull/1480)
|
|
|
|
* Preliminary support for AArch64, also known as ARM64.
|
|
[#1581](https://github.com/bytecodealliance/wasmtime/pull/1581)
|
|
|
|
[go-bindings]: https://github.com/bytecodealliance/wasmtime-go
|
|
|
|
### Changed
|
|
|
|
* `Instance::exports` now returns `Export` objects which contain
|
|
the `name`s of the exports in addition to their `Extern` definitions,
|
|
so it's no longer necessary to use `Module::exports` to obtain the
|
|
export names.
|
|
[#1524](https://github.com/bytecodealliance/wasmtime/pull/1524)
|
|
|
|
* The `Func::call` API has changed its error type from `Trap` to `anyhow::Error`
|
|
to distinguish between wasm traps and runtime violations (like the wrong
|
|
number of parameters).
|
|
[#1467](https://github.com/bytecodealliance/wasmtime/pull/1467)
|
|
|
|
* A number of `wasmtime_linker_*` and `wasmtime_config_*` C APIs have new type
|
|
signatures which reflect returning errors.
|
|
[#1467](https://github.com/bytecodealliance/wasmtime/pull/1467)
|
|
|
|
* Bindings for .NET have moved to
|
|
https://github.com/bytecodealliance/wasmtime-dotnet.
|
|
[#1477](https://github.com/bytecodealliance/wasmtime/pull/1477)
|
|
|
|
* Passing too many imports to `Instance::new` is now considered an error.
|
|
[#1478](https://github.com/bytecodealliance/wasmtime/pull/1478)
|
|
|
|
### Fixed
|
|
|
|
* Spurious segfaults due to out-of-stack conditions when handling signals have
|
|
been fixed.
|
|
[#1315](https://github.com/bytecodealliance/wasmtime/pull/1315)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## 0.15.0
|
|
|
|
Released 2020-03-31.
|
|
|
|
### Fixed
|
|
|
|
Full release produced for all artifacts to account for hiccups in 0.13.0 and
|
|
0.14.0.
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## 0.14.0
|
|
|
|
*This version ended up not getting a full release*
|
|
|
|
### Fixed
|
|
|
|
Fix build errors in wasi-common on Windows.
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## 0.13.0
|
|
|
|
Released 2020-03-24.
|
|
|
|
### Added
|
|
|
|
* Lots of documentation of `wasmtime` has been updated. Be sure to check out the
|
|
[book](https://bytecodealliance.github.io/wasmtime/) and [API
|
|
documentation](https://bytecodealliance.github.io/wasmtime/api/wasmtime/)!
|
|
|
|
* All wasmtime example programs are now in a top-level `examples` directory and
|
|
are available in both C and Rust.
|
|
[#1286](https://github.com/bytecodealliance/wasmtime/pull/1286)
|
|
|
|
* A `wasmtime::Linker` type was added to conveniently link link wasm modules
|
|
together and create instances that reference one another.
|
|
[#1384](https://github.com/bytecodealliance/wasmtime/pull/1384)
|
|
|
|
* Wasmtime now has "jitdump" support enabled by default which allows [profiling
|
|
wasm code on linux][jitdump].
|
|
[#1310](https://github.com/bytecodealliance/wasmtime/pull/1310)
|
|
|
|
* The `wasmtime::Caller` type now exists as a first-class way to access the
|
|
caller's exports, namely memory, when implementing host APIs. This can be the
|
|
first argument of functions defined with `Func::new` or `Func::wrap` which
|
|
allows easily implementing methods which take a pointer into wasm memory. Note
|
|
that this only works for accessing the caller's `Memory` for now and it must
|
|
be exported. This will eventually be replaced with a more general-purpose
|
|
mechanism like interface types.
|
|
[#1290](https://github.com/bytecodealliance/wasmtime/pull/1290)
|
|
|
|
* The bulk memory proposal has been fully implemented.
|
|
[#1264](https://github.com/bytecodealliance/wasmtime/pull/1264)
|
|
[#976](https://github.com/bytecodealliance/wasmtime/pull/976)
|
|
|
|
* Virtual file support has been added to `wasi-common`.
|
|
[#701](https://github.com/bytecodealliance/wasmtime/pull/701)
|
|
|
|
* The C API has been enhanced with a Wasmtime-specific `wasmtime_wat2wasm` to
|
|
parse `*.wat` files via the C API.
|
|
[#1206](https://github.com/bytecodealliance/wasmtime/pull/1206)
|
|
|
|
[jitdump]: https://bytecodealliance.github.io/wasmtime/examples-profiling.html
|
|
|
|
### Changed
|
|
|
|
* The `wast` and `wasm2obj` standalone binaries have been removed. They're
|
|
available via the `wasmtime wast` and `wasmtime wasm2obj` subcommands.
|
|
[#1372](https://github.com/bytecodealliance/wasmtime/pull/1372)
|
|
|
|
* The `wasi-common` crate now uses the new `wiggle` crate to auto-generate a
|
|
trait which is implemented for the current wasi snapshot.
|
|
[#1202](https://github.com/bytecodealliance/wasmtime/pull/1202)
|
|
|
|
* Wasmtime no longer has a dependency on a C++ compiler.
|
|
[#1365](https://github.com/bytecodealliance/wasmtime/pull/1365)
|
|
|
|
* The `Func::wrapN` APIs have been consolidated into one `Func::wrap` API.
|
|
[#1363](https://github.com/bytecodealliance/wasmtime/pull/1363)
|
|
|
|
* The `Callable` trait has been removed and now `Func::new` takes a closure
|
|
directly.
|
|
[#1363](https://github.com/bytecodealliance/wasmtime/pull/1363)
|
|
|
|
* The Cranelift repository has been merged into the Wasmtime repository.
|
|
|
|
* Support for interface types has been temporarily removed.
|
|
[#1292](https://github.com/bytecodealliance/wasmtime/pull/1292)
|
|
|
|
* The exit code of the `wasmtime` CLI has changed if the program traps.
|
|
[#1274](https://github.com/bytecodealliance/wasmtime/pull/1274)
|
|
|
|
* The `wasmtime` CLI now logs to stderr by default and the `-d` flag has been
|
|
renamed to `--log-to-file`.
|
|
[#1266](https://github.com/bytecodealliance/wasmtime/pull/1266)
|
|
|
|
* Values cannot cross `Store` objects, meaning you can't instantiate a module
|
|
with values from different stores nor pass values from different stores into
|
|
methods.
|
|
[#1016](https://github.com/bytecodealliance/wasmtime/pull/1016)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## 0.12.0
|
|
|
|
Released 2020-02-26.
|
|
|
|
### Added
|
|
|
|
* Support for the [WebAssembly text annotations proposal][annotations-proposal]
|
|
has been added.
|
|
[#998](https://github.com/bytecodealliance/wasmtime/pull/998)
|
|
|
|
* An initial C API for instantiating WASI modules has been added.
|
|
[#977](https://github.com/bytecodealliance/wasmtime/pull/977)
|
|
|
|
* A new suite of `Func::getN` functions have been added to the `wasmtime` API to
|
|
call statically-known function signatures in a highly optimized fashion.
|
|
[#955](https://github.com/bytecodealliance/wasmtime/pull/955)
|
|
|
|
* Initial support for profiling JIT code through perf jitdump has been added.
|
|
[#360](https://github.com/bytecodealliance/wasmtime/pull/360)
|
|
|
|
* More CLI flags corresponding to proposed WebAssembly features have been added.
|
|
[#917](https://github.com/bytecodealliance/wasmtime/pull/917)
|
|
|
|
[annotations-proposal]: https://github.com/webassembly/annotations
|
|
|
|
### Changed
|
|
|
|
* The `wasmtime` CLI as well as embedding API will optimize WebAssembly code by
|
|
default now.
|
|
[#973](https://github.com/bytecodealliance/wasmtime/pull/973)
|
|
[#988](https://github.com/bytecodealliance/wasmtime/pull/988)
|
|
|
|
* The `verifier` pass in Cranelift is now no longer run by default when using
|
|
the embedding API.
|
|
[#882](https://github.com/bytecodealliance/wasmtime/pull/882)
|
|
|
|
### Fixed
|
|
|
|
* Code caching now accurately accounts for optimization levels, ensuring that if
|
|
you ask for optimized code you're not accidentally handed unoptimized code
|
|
from the cache.
|
|
[#974](https://github.com/bytecodealliance/wasmtime/pull/974)
|
|
|
|
* Automated releases for tags should be up and running again, along with
|
|
automatic publication of the `wasmtime` Python package.
|
|
[#971](https://github.com/bytecodealliance/wasmtime/pull/971)
|