Fizzy aims to be a fast integer-only WebAssembly interpreter written in C++.
I) Code quality
- Clean and modern C++17 codebase without external dependencies
- Easily embeddable (and take part of the standardisation of the "C/C++ embedding API")
II) Simplicity
- Interpreter only
- Provide no support for floating point operations (initially)
- Support only WebAssembly binary encoding as an input (no support for the text format (
.wat
/.wast
))
III) Conformance
- Should pass the official WebAssembly test suite
IV) First class support for determistic applications (blockchain)
- Support an efficient big integer API (256-bit and perhaps 384-bit)
- Support optional runtime metering in the interpreter
- Support enforcing a call depth bound
- Further restrictions of complexity (e.g. number of locals, number of function parameters, number of labels, etc.)
Fizzy uses CMake as a build system:
$ mkdir build && cd build
$ cmake ..
$ cmake --build .
This will build Fizzy as a library and since there is no public API (the so called embedder API in WebAssembly) yet, this is not very useful.
Building with the FIZZY_TESTING
option will output a few useful utilities:
$ mkdir build && cd build
$ cmake -DFIZZY_TESTING=ON ..
$ cmake --build .
These utilities are as follows:
This can be used to run benchmarks available in the test/benchmarks
directory.
Read this guide for a short introduction.
Fizzy is capable of executing the official WebAssembly tests. Follow this guide for using the tool.
This is the unit tests suite of Fizzy.
Licensed under the Apache License, Version 2.0.