Skip to content

Fizzy 0.2.0

Compare
Choose a tag to compare
@axic axic released this 29 Jun 17:58
· 1130 commits to master since this release

Firstly, this release implements many validation steps prescribed by the specification, with the exception of type checking.

It passes a large part of the official test suite (spectest 1.0):

  • 4481 of 4490 binary parser and execution tests,
  • 659 of 942 validation tests,
  • 6381 skipped due to containing floating-point instructions or testing text format parser.

Secondly, two major optimisations are included: branch resolution is done once in the parser and not during execution; and an optimised stack implementation is introduced.

In many cases this results in v0.2.0 executing code twice as fast compared to v0.1.0.

Added

  • Introduced a Fizzy logo. #326 #344 #399
  • API for resolving imported function names into function types. #318
  • Validation of alignment argument in memory instructions. #310
  • Validation of br_table instruction. #368
  • Validation of constant expressions. #352 #393 #394 #397
  • Validation of data section. #317
  • Validation of element section. #350
  • Validation of export section. #357
  • Validation of global.get/global.set instructions. #351
  • Validation of local.get/local.set/local.tee instructions. #363
  • Validation of stack height at the end of blocks and functions, at branch instructions, and after unreachable
    instructions. #319 #356 #343 #384 #386
  • Validation of start section. #353
  • fizzy-bench now requires .inputs files to include the signature of the called function. #331
  • Better unit tests coverage. #320 #335 #337 #346 #364 #378 #380
  • CI improvements. #322 #330 #333 #342 #336 #348 #361
  • Micro-benchmark for executing interpreter switch. #374 #396

Changed

  • Exception error messages cleaned up. #315
  • fizzy-bench now reports more useful error messages. #316
  • Operand stack optimizations. #247 #265 #339
  • Optimization to resolve all jump destinations during parsing instead of having control stack in execution. #304 #312 #341 #373 #391
  • Better execution time measurement in fizzy-bench. #383

Fixed

  • Validation of stack height for call instructions. #338 #387
  • Validation of type indices in function section. #334
  • fizzy-bench executes the start function on all engines (previously it did not on wabt). #332 #349
  • fizzy-bench correctly handles errors during validation phase. #340