* Revert "Remove spec interpreter fuzz target temporarily (#3399)"
This reverts commit 25d3fa4d7b.
* add support for differential fuzzing against verified OCaml interpreter
* formatting
* comments
* fix missing dep case
* fix build error
* fix unit tests?
* restore previous differential_v8 max_table config
* attempt: add OCaml deps
* fix interpeter github repo
* fix spec repo url
* fix zarith package
* fix unit test
wasm-spec-interpreter
This project shows how to use ocaml-interop to call into the Wasm spec
interpreter. There are several steps to making this work:
- building the OCaml Wasm spec interpreter as a static library
- building a Rust-to-OCaml FFI bridge using
ocaml-interopand a custom OCaml wrapper - linking both things into a Rust crate
Dependencies
This crate only builds in an environment with:
make(the Wasm spec interpreter uses aMakefile)ocamlopt,ocamlbuild(available with, e.g.,dnf install ocaml)- Linux tools (e.g.
ar); currently it is easiest to build the static libraries in a single environment but this could be fixed in the future (TODO)
Remember to retrieve the Wasm spec submodule:
git clone ... --recursive
Build
RUSTFLAGS=--cfg=fuzzing cargo build
Use FFI_LIB_DIR=path/to/lib/... to specify a different location for the static
library (this is mainly for debugging). If the --cfg=fuzzing configuration is
not provided, this crate will build successfully but fail at runtime.
Test
RUSTFLAGS=--cfg=fuzzing cargo test