There was no CI of any kind — no workflows directory at all — despite a full release pipeline (release.toml, cliff.toml, a maintained CHANGELOG, three tagged releases). The workflow covers the feature combinations that actually have distinct behaviour, including a release-profile job: `debug_assert!` is compiled out there, which is exactly where the validation this branch added has to hold, and a debug-only suite would never have seen it. Determinism is checked at RAYON_NUM_THREADS of 1, 2, 4 and 8. The Justfile gains test/lint/fmt/determinism recipes so the same checks run locally with one command, and `just ci` runs the lot. `Cargo.toml` had only name, version and edition, so `cargo publish` would have been rejected. Added description, repository, readme, keywords, categories, exclude, and `rust-version = "1.85"` — the edition-2024 floor, now verified by a CI job. Two let-chains introduced earlier on this branch would have pushed that to 1.88; they are rewritten to keep the floor where it was. `src/lib.rs` had no `//!` header at all, so the docs.rs landing page would have been a bare symbol list — conspicuous given every other module has one. It now explains what Through Time does differently, and carries three runnable examples (which `cargo test --doc` checks, where previously there was nothing to check), including the draw/p_draw interaction that is the easiest way to get an error out of this crate. `cargo publish --dry-run` now packages and verifies cleanly. The only remaining blocker is `license`, which is yours to choose — noted as a TODO in the manifest rather than picked unilaterally. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DnsaJg74eNSva3PJjK2eej
46 lines
1.0 KiB
Makefile
46 lines
1.0 KiB
Makefile
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
|