alias b := bench
alias t := test

# Run the full test suite across the feature combinations CI checks.
test:
    cargo test
    cargo test --features approx
    cargo test --features approx,rayon
    cargo test --release --features approx

# Fast inner-loop tests.
check:
    cargo test --features approx

# Posteriors must be bit-identical across rayon worker counts.
determinism:
    #!/usr/bin/env bash
    set -euo pipefail
    for threads in 1 2 4 8; do
        echo "== RAYON_NUM_THREADS=$threads =="
        RAYON_NUM_THREADS=$threads cargo test --release \
            --features approx,rayon --test determinism
    done

lint:
    cargo clippy --all-targets --all-features -- -D warnings

# Always nightly: rustfmt.toml uses nightly-only options.
fmt:
    cargo +nightly fmt

fmt-check:
    cargo +nightly fmt --check

# Everything CI runs.
ci: fmt-check lint test determinism

store:
    cargo bench -- --save-baseline base

bench:
    cargo bench -- --baseline base

flame:
    cargo flamegraph --root --example atp
