10 releases

0.1.17 Jan 11, 2022
0.1.16 Dec 3, 2021
0.1.15 Oct 27, 2021
0.1.14 Sep 28, 2021
0.0.2 Jul 30, 2021

#7 in #clvm

Apache-2.0

600KB
6.5K SLoC

Rust implementation of clvm.

Python Wheel

Use maturin to build the python interface. First, install into current virtualenv with

$ pip install maturin

Build clvm_rs directly into the current virtualenv with

$ maturin develop --release

On UNIX-based platforms, you may get a speed boost on sha256 operations by building with OpenSSL.

$ maturin develop --release --cargo-extra-args="--features=openssl"

To build the wheel, do

$ maturin build --release --no-sdist

or

$ maturin build --release --no-sdist --cargo-extra-args="--features=openssl"

WASM

Use wasm-pack to build the wasm pkg file used with npm. Install it with:

$ cargo install wasm-pack

Then build with

$ wasm-pack build --release

TESTS

In order to run the unit tests, run:

cargo test

Fuzzing

The fuzzing infrastructure for clvm_rs uses cargo-fuzz.

Documentation for setting up fuzzing in rust can be found here.

To generate an initial corpus (for the run_program fuzzer), run:

cd fuzz
mkdir -p corpus/fuzz_run_program/
python gen_corpus.py

To get started, run:

cargo fuzz run fuzz_run_program --jobs=32 -- -rss_limit_mb=4096

But with whatever number of jobs works best for you.

If you find issues in clvm_rs please see the Bug Bounty program.

Dependencies

~1.5–4.5MB
~92K SLoC