Installation
Toolchain, feature flags, release build, and operational Make targets.
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
| Feature | Enables | Notes |
|---|---|---|
libafl | LibAFL executor + mutator path (-L) | Requires toolchain 1.87+; pulls libafl, libafl_bolts, serde |
json-model | Operator-defined JSON field trees (-m path/to/model.json) | Pulls serde, serde_json |
criu | CRIU 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:
| Target | Action |
|---|---|
make release | Optimised binary (override features with FEATURES=…) |
make release-full | Build with libafl,json-model,criu |
make debug | Debug binary |
make nxs | Build all official NXS existence scripts into nxs/bin/ |
make status | Show binary + NXS presence |
make clean-shm | Remove residual /dev/shm/nexsiz-cov* maps |
make clean-all | Full 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.