Skip to content

Latest commit

 

History

History
520 lines (356 loc) · 19.9 KB

RELEASES.md

File metadata and controls

520 lines (356 loc) · 19.9 KB

Wasmtime Releases


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 Config across 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, 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 crate was added, replacing the previous implementation. This brings improved robustness, portability, and performance.
  • The WebAssembly C API is updated, with a few minor API changes #2579

Fixed

  • Fixed a panic in WASI fd_readdir on large directories #2620
  • Fixed a memory leak with command modules #2017

0.22.0

Released 2021-01-07.

Added

Changed

Fixed

  • Fixed an issue where the select instruction didn't accept v128 SIMD 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 SP instead 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_code API 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 FuncType API 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_gc C API was added to run GC for externref. #2052

  • Support for atomics in Cranelift has been added. Support is not fully implemented in Wasmtime at this time, however. #2077

  • The Caller::get_export function is now implemented for Func references as well. #2108

Fixed

  • Leaks in the C API have been fixed. #2040

  • The wasm_val_copy C API has been fixed for reference types. #2041

  • Fix a panic with Func::new and reference types when the store doesn't have reference types enabled. #2039


0.19.0

Released 2020-07-14.

Added

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 main branch instead of master. #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 *_same functions 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.

#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

The Table::grow function now returns the previous table size, making it consistent with the table.grow instruction.

#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

The C API now includes support for enabling logging in Wasmtime.

#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

The WebAssembly multi-value proposal is now enabled by default.

#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


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

  • 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 Memory with a new MemoryCreator trait. #1400

  • Go bindings for Wasmtime are now available. #1481

  • APIs for looking up values in a Linker have been added. #1480

  • Preliminary support for AArch64, also known as ARM64. #1581

Changed

  • Instance::exports now returns Export objects which contain the names 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

  • 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

  • A number of wasmtime_linker_* and wasmtime_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::new is 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 wasmtime has been updated. Be sure to check out the book and API documentation!

  • All wasmtime example programs are now in a top-level examples directory and are available in both C and Rust. #1286

  • A wasmtime::Linker type 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::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

  • 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_wat2wasm to parse *.wat files via the C API. #1206

Changed

  • The wast and wasm2obj standalone binaries have been removed. They're available via the wasmtime wast and wasmtime wasm2obj subcommands. #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

  • Wasmtime no longer has a dependency on a C++ compiler. #1365

  • The Func::wrapN APIs have been consolidated into one Func::wrap API. #1363

  • The Callable trait has been removed and now Func::new takes 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 wasmtime CLI has changed if the program traps. #1274

  • The wasmtime CLI now logs to stderr by default and the -d flag has been renamed to --log-to-file. #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


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::getN functions have been added to the wasmtime API 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 wasmtime CLI as well as embedding API will optimize WebAssembly code by default now. #973 #988

  • The verifier pass 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 wasmtime Python package. #971