Toolchain

Nexsiz pins Rust 1.87.0 in rust-toolchain.toml. Older toolchains (e.g. 1.75) cannot build --features libafl because transitive dependencies require edition 2024.

rustup toolchain install 1.87.0
rustup default 1.87.0
# or rely on rust-toolchain.toml when entering the repo
cd nexsiz && rustc --version
CI artefacts
GitHub Actions builds release binaries for the default and full feature sets. Prefer those artefacts when the local toolchain cannot satisfy LibAFL dependencies.

Default build

Default features are empty. The binary depends only on libc (Unix). No LibAFL, no serde, no CRIU.

cargo build --release
# binary → target/release/nexsiz
ls -lh target/release/nexsiz

Release profile uses LTO, single codegen unit, panic = "abort", opt-level = 3, and strip.

Optional features

FeatureEnablesNotes
libaflLibAFL executor + mutator path (-L)Requires toolchain 1.87+; pulls libafl, libafl_bolts, serde
json-modelOperator-defined JSON field trees (-m path/to/model.json)Pulls serde, serde_json
criuCRIU snapshot backend (--snapshot-backend criu)Requires criu on PATH; Linux only
# Single feature
cargo build --release --features libafl
cargo build --release --features json-model
cargo build --release --features criu

# Combined
cargo build --release --features "libafl,json-model"
cargo build --release --features "libafl,json-model,criu"

Makefile targets

The repo ships an operational Makefile. Common targets:

TargetAction
make releaseOptimised binary (override features with FEATURES=…)
make release-fullBuild with libafl,json-model,criu
make debugDebug binary
make nxsBuild all official NXS existence scripts into nxs/bin/
make statusShow binary + NXS presence
make clean-shmRemove residual /dev/shm/nexsiz-cov* maps
make clean-allFull wipe (build + output + SHM)
make release FEATURES=json-model
make release-full
make nxs
make status

NXS scripts (optional)

Post-event existence scripts are separate pure-stdlib binaries. Build them only if the campaign will use --nxs:

cd nxs && ./build.sh
# or
make nxs
./target/release/nexsiz --nxs default --nxs-list

Platform notes

  • Linux x86_64 — primary; all features supported.
  • Frida / SHM coverage and CRIU — Linux only.
  • Windows — core fuzzer path may build; SHM uses kernel32 file mapping; CRIU/Frida unavailable.