v0.14.0 - 2022-07-26
Added
-
Added support for the following Wasm proposals:
- Import and export of mutable globals
- Non-trapping float-to-int conversions
- Sign-extension operators
- Multi-value
We plan to support more Wasm proposals in the future.
Changed
-
Wasmi has been entirely redesigned and reimplemented.
This work resulted in an entirely new API that is heavily inspired by
the Wasmtime API,
a brand new Wasm execution engine that performs roughly 30-40%
better than the previous engine according to our benchmarks,
the support of many Wasm proposals and Wasm parsing and validation
using the battle testedwasmparser
crate by the BytecodeAlliance.The new
wasmi
design allows to reuse the Wasm execution engine
resources instead of spinning up a new Wasm execution engine for every
function call.Note: If you plan to use
wasmi
it is of critical importance
to compilewasmi
using the following Cargoprofile
settings:[profile.release] lto = "fat" codegen-units = 1
If you do not use these profile settings you might risk regressing
performance ofwasmi
by up to 400%. You can read more about this
issue here.
Removed
- Removed support for resuming function execution.
We may consider to add this feature back into the new engine.
If you are a user ofwasmi
and want this feature please feel
free to open an issue
and provide us with your use case.