Skip to content

v0.28.0 - 2023-03-01

Compare
Choose a tag to compare
@Robbepop Robbepop released this 01 Mar 21:09
· 226 commits to master since this release
v0.28.0-wasi
223f815

Added

  • Added support for the tail-call Wasm proposal. (#683)
  • Added support for Linker defined host functions. (#692)
    • Apparently this PR introduced some performance wins for the Wasm target according to our tests.
      This information shall be taken with a grain of salt since we are not sure why those performance
      improvement occured since the PR's functionality is orthogonal to Wasm engine performance.
    • Required precursor refactoring PR: #681

Changed

  • The wasmi_wasi crate now more closely mirrors the wasmtime_wasi crate API. (#700)

Internal

  • Refactor the wasmi Wasm engine to handle Wasm calls and returns in its core. (#694)
    • This improved performance of Wasm function calls significantly at the cost of host function call performance.
    • Also this seemed to have impacts Wasm target performance quite positively, too.
  • The Store now handles Wasm functions and host functions separately. (#686)
    • This allows to store Wasm functions into the StoreInner type which was an important
      step towards the major refactoring in (#694)
    • It was expected that host function call performance would degrade by this PR but our tests
      actually showed that the opposite was true and Wasm target performance was improved overall.
  • Introduce ValueStackPtr abstraction for the wasmi engine core. (#688)
    • This change significantly improved performance especially on the Wasm target according to our tests.
  • Optimize memory.{load,store} when reading or writing single bytes. (#689)
    • The performance wins were more modest than we hoped but still measurable.
  • Use StoreContextMut<T> instead of impl AsContextMut in the wasmi engine core. (#685)
    • This is a simple refactoring with the goal to make the Rust compiler have a simpler job at
      optimizing certain functions in the engine's inner workings since StoreContextMut provides
      more information to the compiler.