# Wasmtime Releases
--------------------------------------------------------------------------------
## 0.19.0
Unreleased.
### Added
### Changed
### Removed
--------------------------------------------------------------------------------
## 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 )