Skip to content

wasmx/fizzy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

May 14, 2020
5000e53 · May 14, 2020
May 12, 2020
May 13, 2020
May 12, 2020
May 14, 2020
Jan 8, 2020
Jan 24, 2020
Feb 24, 2020
Dec 20, 2019
May 14, 2020
May 14, 2020
Dec 19, 2019
Apr 24, 2020
May 11, 2020
Dec 25, 2019
May 10, 2020
Mar 18, 2020

Repository files navigation

Fizzy

webassembly badge readme style standard badge circleci badge codecov badge license badge

Fizzy aims to be a fast integer-only WebAssembly interpreter written in C++.

Goals

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.)

Building and using

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:

fizzy-bench

This can be used to run benchmarks available in the test/benchmarks directory. Read this guide for a short introduction.

fizzy-spectests

Fizzy is capable of executing the official WebAssembly tests. Follow this guide for using the tool.

fizzy-unittests

This is the unit tests suite of Fizzy.

Maintainers

License

license badge

Licensed under the Apache License, Version 2.0.

About

Fizzy aims to be a fast, deterministic, and pedantic WebAssembly interpreter written in C++.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 11