Five-minute orientation. For the full framework reference see the upstream docs site (https://nih-plug.robbertvanderhelm.nl/) and README.md.
cargo xtask bundle gain --releaseOutput lands in target/bundled/. CI uses cargo xtask known-packages to
enumerate plugins — see bundler.toml.
cargo build --workspaceSlow (every plugin compiles). Use the per-crate build for day-to-day work.
cargo test --locked --workspace --features "simd,standalone,zstd"Never run
cargo test --all-features—logic_nih_plug_icedhas mutually exclusive features. The--features "simd,standalone,zstd"set is what CI uses; see .github/workflows/build.yml.
cargo xtask bundle gain --release --target x86_64-unknown-linux-gnu
cargo xtask bundle-universal -p gain --release # macOS universal| Plugin | Toolchain | Why |
|---|---|---|
| most plugins | stable | default |
crossover, diopser |
nightly | uses std::simd via the simd feature |
From AGENTS.md §5:
process()is real-time. No allocations, no blocking, noprintln!.initialize()is the only place that may allocate heavily.- Cross-thread =
Arc<AtomicF32>,parking_lot::Mutex(try_lock), or crossbeam channels. - Params need stable
#[id = "…"]and#[persist = "…"]attrs. - Use
nih_log!/nih_dbg!fromlogic_nih_plug::debug, notprintln!/dbg!.