@@ -13,29 +13,36 @@ When making changes in this repo, prioritize (in order):
1313## Common commands
1414
1515- All tests (Rust + Python): ` just test-all `
16- - Changelog (generate full): ` just changelog ` (runs ` git-cliff -o CHANGELOG.md ` )
17- - Changelog (prepend unreleased): ` just changelog-unreleased v0.3.0 `
18- - Create release tag: ` just tag v0.3.0 ` (creates annotated tag from CHANGELOG.md section)
1916- Benchmarks: ` cargo bench ` (or ` just bench ` )
2017- Build (debug): ` cargo build ` (or ` just build ` )
2118- Build (release): ` cargo build --release ` (or ` just build-release ` )
22- - CI simulation (lint + tests + examples + bench compile): ` just ci `
19+ - Changelog (generate full): ` just changelog ` (runs ` git-cliff -o CHANGELOG.md ` + post-processing)
20+ - Changelog (prepend unreleased): ` just changelog-unreleased v0.3.0 `
2321- Coverage (CI XML): ` just coverage-ci `
2422- Coverage (HTML): ` just coverage `
23+ - Create release tag: ` just tag v0.3.0 ` (creates annotated tag from CHANGELOG.md section)
2524- Fast compile check (no binary produced): ` cargo check ` (or ` just check-fast ` )
2625- Fast Rust tests (lib + doc): ` just test `
2726- Format: ` cargo fmt ` (or ` just fmt ` )
2827- Integration tests: ` just test-integration `
2928- Lint (Clippy): ` cargo clippy --all-targets --all-features -- -D warnings ` (or ` just clippy ` )
3029- Lint (Clippy, exact feature): ` cargo clippy --features exact --all-targets -- -D warnings ` (or ` just clippy-exact ` )
3130- Lint/validate: ` just check `
32- - Pre-commit validation: ` just ci `
31+ - Pre-commit validation / CI simulation: ` just ci ` (lint + tests + examples + bench compile)
32+ - Python setup: ` uv sync --group dev ` (or ` just python-sync ` )
3333- Python tests: ` just test-python `
3434- Run a single test (by name filter): ` cargo test solve_2x2_basic ` (or the full path: ` cargo test lu::tests::solve_2x2_basic ` )
3535- Run exact-feature tests: ` cargo test --features exact --verbose ` (or ` just test-exact ` )
36- - Run examples: ` just examples ` (or ` cargo run --example det_5x5 ` / ` cargo run --example solve_5x5 ` / ` cargo run --example const_det_4x4 ` )
36+ - Run examples: ` just examples ` (or ` cargo run --example det_5x5 ` / ` cargo run --example solve_5x5 ` /
37+ ` cargo run --example const_det_4x4 ` / ` cargo run --features exact --example exact_sign_3x3 ` )
3738- Spell check: ` just spell-check ` (uses ` typos.toml ` at repo root; add false positives to ` [default.extend-words] ` )
3839
40+ ## Feature flags
41+
42+ - ` exact ` — enables ` det_sign_exact() ` (adaptive-precision determinant sign via ` BigRational ` ).
43+ Gates ` src/exact.rs ` , additional tests, and the ` exact_sign_3x3 ` example.
44+ Clippy, doc builds, and test commands have dedicated ` --features exact ` variants.
45+
3946## Code structure (big picture)
4047
4148- This is a single Rust * library crate* (no ` src/main.rs ` ). The crate root is ` src/lib.rs ` .
@@ -47,9 +54,17 @@ When making changes in this repo, prioritize (in order):
4754 - ` src/ldlt.rs ` : ` Ldlt<const D: usize> ` factorization without pivoting for symmetric SPD/PSD matrices (` solve_vec ` , ` det ` )
4855 - ` src/exact.rs ` : ` det_sign_exact() ` — adaptive-precision determinant sign
4956 (Shewchuk-style f64 filter + Bareiss in ` BigRational ` ); ` features = ["exact"] `
50- - A minimal ` justfile ` exists for common workflows (see ` just --list ` ).
57+ - Rust tests are inline ` #[cfg(test)] ` modules in each ` src/*.rs ` file.
58+ - Python tests live in ` scripts/tests/ ` and run via ` just test-python ` (` uv run pytest ` ).
5159- The public API re-exports these items from ` src/lib.rs ` .
60+ - The ` justfile ` defines all dev workflows (see ` just --list ` ).
5261- Dev-only benchmarks live in ` benches/vs_linalg.rs ` (Criterion + nalgebra/faer comparison).
62+ - Python scripts under ` scripts/ ` :
63+ - ` criterion_dim_plot.py ` : benchmark plotting (CSV + SVG + README table update)
64+ - ` tag_release.py ` : annotated tag creation from CHANGELOG.md sections
65+ - ` postprocess_changelog.py ` : strips trailing blank lines from git-cliff output
66+ - ` subprocess_utils.py ` : safe subprocess wrappers for git commands
67+ - Release workflow is documented in ` docs/RELEASING.md ` .
5368
5469## Publishing note
5570
0 commit comments