Skip to content

Fizzy 0.7.0

Compare
Choose a tag to compare
@axic axic released this 01 Mar 12:09
· 279 commits to master since this release

With this release we aim to provide a much improved C and Rust API, including a clear separation of i32 and i64 types.

Fizzy passes all of the official WebAssembly 1.0 tests. We are maintaining the WebAssembly 1.0 test suite
with corrections and additions backported from the WebAssembly specification master branch. For this
Fizzy release the snapshot from 2021-02-12 is used:

  • 19044 of 19044 binary parser and execution tests,
  • 1009 of 1009 validation tests,
  • 499 skipped due to testing text format parser.

There are no performance changes expected nor observed in this release.
With one exception: the i32 member added to the Value union causes machine code being generated with different layout.
This may impact the execution performance depending on the compiler and build configuration.
In some isolated cases differences up to ±30% were observed.

Added

  • Value union now has a separate i32 member instead of putting 32-bit integers into i64. #517 #702
  • New function to resolve imported globals by name similar to resolve_imported_functions. #637 #697
  • Public C API:
    • Inspecting module's type and global definitions. #675
    • Check if module has table, memory, or start function. #684 #685
    • Inspecting module's import definitions. #683
    • Inspecting module's export definitions. #686
    • fizzy_resolve_instantiate now resolves imported globals besides functions. #660
    • Example of usage added to README.md. #682
  • Rust bindings:
    • Memory manipulation functions added. #609
    • Safe execute function with typed value and execution added. It performs type checking on function and passed arguments. #652 #705 #725
    • Module can be cloned. #719
    • Example of usage added. #724
    • Errors are returned as string error messages.#743
  • Doxygen config added and documentation generated on CI. #692 #703

Changed

  • Changed maximum call depth level to 2047. #669
  • fizzy::ExternalFunction now uses span type to represent input and output types of a function. #668
  • C API minor optimizations. #699
  • Rust bindings build and CI improvements. #706 #717 #731
  • Support building for ARM architecture and test it on CI. #714
  • Unit tests are now checking the types of arguments passed to execute() and the type of returned result. #655 #659 #687
  • Other unit test additions and improvements. #648 #679 #680 #688 #701 #711 #712 #732 #733 #742
  • Test utils improvements. #651 #691 #695 #704 #715 #718 #721 #741
  • Updated WebAssembly spec test suite. #690
  • Documentation comments improvements. #681 #707
  • Hunter dependencies updated. #736
  • uvwasi library repository address updated. #693

Fixed

  • Potential undefined behaviour for functions without locals. #630
  • Make sure that memory.grow implementation doesn't throw exceptions. #737