malvin
Installation
Notes
malvin allows all tool calls by default.
Speed
malvin likes to run unit tests. It does its best to only run what's necessary, but these tools can help speed things up:
- [Python] pytest-testmon Runs only unit tests affected by code changes
- [Rust] cargo-nextest Faster than
cargo test - [Rust] cargo-difftests Re-runs only tests whose executed code changed (LLVM coverage indexes)
- [Rust] sccache Speeds up builds by caching build artifacts
sccache (Rust builds)
Install once:
- macOS:
brew install sccache - Linux / other:
./admin/sccache_install.sh(orcargo install sccache --locked)
This repo enables sccache via .cargo/config.toml (rustc-wrapper = "sccache"). Any cargo build, cargo clippy, or cargo nextest in this tree uses it automatically.
Verify: ./admin/verify_sccache.sh
cargo-difftests (selective Rust tests)
Requires nightly Rust, llvm-tools-preview, and cargo-binutils (cargo-cov). One-time install:
Initial profiling pass (slow; builds/tests under profile.difftests):
After code changes, rerun only dirty tests and refresh indexes:
Malvin gate runs use ./admin/malvin_rust_test_gate.sh (listed in .malvin/checks): selective difftests when indexes are warm, full partitioned nextest otherwise. Override with MALVIN_FORCE_FULL_RUST_TESTS=1 to always run the full suite.
Indexes live in difftests-index-root/; work artifacts under target/tmp/difftests/. Both are gitignored. Normal cargo build, cargo clippy, and cargo nextest stay uninstrumented; only the difftests scripts use cargo +nightly difftests.