22 KiB
Wasmtime Releases
0.25.0
Not yet released
Added
-
An implementation of a pooling instance allocator, optionally backed by
userfaultfdon Linux, was added to improve the performance of embeddings that instantiate a large number of instances continuously. #2518 -
Host functions can now be defined on
Configto share the function across allStoreobjects connected to anEngine. This can improve the time it takes to instantiate instances in a short-livedStore. #2625 -
The
Storeobject now supports having typed values attached to it which can be retrieved from host functions. #2625 -
The
wigglecode generator now supportsasynchost functions. #2701
Changed
- The
Func::getN{,_async}APIs have all been removed in favor of a newFunc::typedAPI which should be more compact in terms of API surface area as well as more flexible in how it can be used. #2719
Fixed
- Interepretation of timestamps in
poll_oneofffor WASI have been fixed to correctly use nanoseconds instead of microseconds. #2717
0.24.0
Released 2021-03-04.
Added
- Implement support for
asyncfunctions in Wasmtime #2434
Fixed
- Fix preservation of the sigaltstack on macOS #2676
- Fix incorrect semver dependencies involving fs-set-times. #2705
- Fix some
i128shift-related bugs in x64 backend. #2682 - Fix incomplete trap metadata due to multiple traps at one address #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 #2643
- Wasmtime now has more knobs for limiting memory and table allocations #2617
- Added a method to share
Configacross machines #2608 - Added a safe memory read/write API #2528
- Added support for the experimental wasi-crypto APIs #2597
- Added an instance limit to
Config#2593 - Implemented module-linking's outer module aliases #2590
- Cranelift now supports 128-bit operations for the new x64 backend. #2539
- Cranelift now has detailed debug-info (DWARF) support in new backends (initially x64). #2565
- Cranelift now uses the
POPCNT,TZCNT, andLZCNT, 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-stdcrate was added, replacing the previous implementation. This brings improved robustness, portability, and performance. -
wasmtime_wasi::WasiCtxBuildermoved towasi_cap_std_sync::WasiCtxBuilder. -
The WebAssembly C API is updated, with a few minor API changes #2579
Fixed
- Fixed a panic in WASI
fd_readdiron large directories #2620 - Fixed a memory leak with command modules #2017
0.22.0
Released 2021-01-07.
Added
-
Experimental support for the module-linking proposal was added. #2094
-
Added support for the reference types proposal on the aarch64 architecture. #2410
Changed
Fixed
-
Fixed an issue where the
selectinstruction didn't acceptv128SIMD operands. #2391 -
Fixed an issue where Wasmtime could potentially use the wrong stack map during GCs, leading to a panic. #2396
-
Fixed an issue where if a host-defined function erroneously returned a value from a different store, that value would be leaked. #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
-
Fixed a miscompilation on aarch64 where certain instructions would read
SPinstead of the zero register. This could only affect you if you explicitly enabled the Wasm SIMD proposal. #2548
0.21.0
Released 2020-11-05.
Added
-
Experimental support for the multi-memory proposal was added. #2263
-
The
Trap::trap_codeAPI enables learning what kind of trap was raised. #2309
Changed
-
WebAssembly module validation is now parallelized. #2059
-
Documentation is now available at docs.wasmtime.dev. #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
-
The size of the cache entry for serialized modules has been greatly reduced. #2321 #2322 #2324 #2325
-
The
FuncTypeAPI constructor and accessors are now iterator-based. #2365
Fixed
- A panic in compiling reference-types-using modules has been fixed. #2350
0.20.0
Released 2020-09-23.
Added
-
Support for explicitly serializing and deserializing compiled wasm modules has been added. #2020
-
A
wasmtime_store_gcC API was added to run GC forexternref. #2052 -
Support for atomics in Cranelift has been added. Support is not fully implemented in Wasmtime at this time, however. #2077
-
The
Caller::get_exportfunction is now implemented forFuncreferences as well. #2108
Fixed
-
Leaks in the C API have been fixed. #2040
-
The
wasm_val_copyC API has been fixed for reference types. #2041 -
Fix a panic with
Func::newand reference types when the store doesn't have reference types enabled. #2039
0.19.0
Released 2020-07-14.
Added
-
The WebAssembly reference-types proposal is now supported in Wasmtime and the C API. #1832, #1882, #1894, #1901, #1923, #1969, #1973, #1982, #1984, #1991, #1996
-
The [WebAssembly simd proposal's][simd] spec tests now pass in Wasmtime. #1765, #1876, #1941, #1957, #1990, #1994
-
Wasmtime can now be compiled without the usage of threads for parallel compilation, although this is still enabled by default. #1903
-
The C API is now documented. #1928, #1959, #1968
-
A
wasmtime_linker_get_one_by_namefunction was added to the C API. #1897 -
A
wasmtime_trap_exit_statusfunction was added to the C API. #1912 -
Compilation for the
aarch64-linux-androidtarget should now work, although keep in mind this platform is not fully tested still. #2002
Fixed
-
Runtime warnings when using Wasmtime on musl have been fixed. #1914
-
A bug affecting Windows unwind information with functions that have spilled floating point registers has been fixed. #1983
Changed
- Wasmtime's default branch and development now happens on the
mainbranch instead ofmaster. #1924
Removed
-
The "host info" support in the C API has been removed since it was never fully or correctly implemented. #1922
-
Support for the
*_samefunctions in the C API has been removed in the same vein as the host info APIs. #1926
0.18.0
Release 2020-06-09.
Added
The WasmTy trait is now implemented for u32 and u64.
0.17.0
Released 2020-06-01.
Added
-
The Commands and Reactors ABI is now supported in the Rust API.
Linker::moduleloads a module and automatically handles Commands and Reactors semantics.
The Table::grow function now returns the previous table size, making it consistent
with the table.grow instruction.
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.
The C API now includes support for enabling logging in Wasmtime.
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.
The WebAssembly multi-value proposal is now enabled by default.
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.
0.16.0
Released 2020-04-29.
Added
-
The
Instancestruct has new accessors,get_func,get_table,get_memory, andget_globalfor quickly looking up exported functions, tables, memories, and globals by name. #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 -
Users now have fine-grained control over creation of instances of
Memorywith a newMemoryCreatortrait. #1400 -
Go bindings for Wasmtime are now available. #1481
-
APIs for looking up values in a
Linkerhave been added. #1480 -
Preliminary support for AArch64, also known as ARM64. #1581
Changed
-
Instance::exportsnow returnsExportobjects which contain thenames of the exports in addition to theirExterndefinitions, so it's no longer necessary to useModule::exportsto obtain the export names. #1524 -
The
Func::callAPI has changed its error type fromTraptoanyhow::Errorto distinguish between wasm traps and runtime violations (like the wrong number of parameters). #1467 -
A number of
wasmtime_linker_*andwasmtime_config_*C APIs have new type signatures which reflect returning errors. #1467 -
Bindings for .NET have moved to https://github.com/bytecodealliance/wasmtime-dotnet. #1477
-
Passing too many imports to
Instance::newis now considered an error. #1478
Fixed
- Spurious segfaults due to out-of-stack conditions when handling signals have been fixed. #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
wasmtimehas been updated. Be sure to check out the book and API documentation! -
All wasmtime example programs are now in a top-level
examplesdirectory and are available in both C and Rust. #1286 -
A
wasmtime::Linkertype was added to conveniently link link wasm modules together and create instances that reference one another. #1384 -
Wasmtime now has "jitdump" support enabled by default which allows profiling wasm code on linux. #1310
-
The
wasmtime::Callertype 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 withFunc::neworFunc::wrapwhich allows easily implementing methods which take a pointer into wasm memory. Note that this only works for accessing the caller'sMemoryfor now and it must be exported. This will eventually be replaced with a more general-purpose mechanism like interface types. #1290 -
The bulk memory proposal has been fully implemented. #1264 #976
-
Virtual file support has been added to
wasi-common. #701 -
The C API has been enhanced with a Wasmtime-specific
wasmtime_wat2wasmto parse*.watfiles via the C API. #1206
Changed
-
The
wastandwasm2objstandalone binaries have been removed. They're available via thewasmtime wastandwasmtime wasm2objsubcommands. #1372 -
The
wasi-commoncrate now uses the newwigglecrate to auto-generate a trait which is implemented for the current wasi snapshot. #1202 -
Wasmtime no longer has a dependency on a C++ compiler. #1365
-
The
Func::wrapNAPIs have been consolidated into oneFunc::wrapAPI. #1363 -
The
Callabletrait has been removed and nowFunc::newtakes a closure directly. #1363 -
The Cranelift repository has been merged into the Wasmtime repository.
-
Support for interface types has been temporarily removed. #1292
-
The exit code of the
wasmtimeCLI has changed if the program traps. #1274 -
The
wasmtimeCLI now logs to stderr by default and the-dflag has been renamed to--log-to-file. #1266 -
Values cannot cross
Storeobjects, meaning you can't instantiate a module with values from different stores nor pass values from different stores into methods. #1016
0.12.0
Released 2020-02-26.
Added
-
Support for the WebAssembly text annotations proposal has been added. #998
-
An initial C API for instantiating WASI modules has been added. #977
-
A new suite of
Func::getNfunctions have been added to thewasmtimeAPI to call statically-known function signatures in a highly optimized fashion. #955 -
Initial support for profiling JIT code through perf jitdump has been added. #360
-
More CLI flags corresponding to proposed WebAssembly features have been added. #917
Changed
-
The
wasmtimeCLI as well as embedding API will optimize WebAssembly code by default now. #973 #988 -
The
verifierpass in Cranelift is now no longer run by default when using the embedding API. #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
-
Automated releases for tags should be up and running again, along with automatic publication of the
wasmtimePython package. #971