Repository navigation
Releases: autor3search/rust
Release list
v0.1.1 — correct commit in `version`
A patch release fixing two bugs in what version reports. No behaviour change anywhere else.
cargo install --locked autor3search-rust
Fixed
version said unknown when installed from crates.io. build.rs asked git for the commit, and a crate unpacked from the registry has no git repository to ask. It now reads the commit cargo records in .cargo_vcs_info.json when packaging, falling back to git only when that file is absent — which is exactly the case in a normal checkout.
version reported the previous commit on every build after the first. cargo:rerun-if-changed=.git/HEAD does not fire when you commit on the branch you are already on, because that file holds ref: refs/heads/<name> rather than a hash. The ref HEAD names is now watched too, along with packed-refs, and a linked worktree is followed to its real git directory first.
Verified both ways: a binary installed from the packaged crate reports the packaged sha, and a fresh commit in a checkout changes what version prints with no touch to build.rs.
Unchanged from v0.1.0
Everything else. The full description of what this tool does, what it refuses to do, and what has and has not been validated is in the README and in v0.1.0's notes.
Requires Rust 1.85 or later.
v0.1.0 — first release
First release of the Rust port. A frozen measurement harness: you point a coding agent at your Rust repository, and this decides whether what it did was actually faster — freezing the tests, measuring the candidate against a pinned baseline with interleaved rounds, and returning KEEP or DISCARD.
cargo install --locked autor3search-rust
What it does
init finds your criterion benchmarks and writes a config plus a program.md for the agent. baseline --tag <tag> freezes every in-scope tests/** and benches/** file, hashes the inline tests and doctests it cannot restore, and pins a detached worktree. eval then runs fourteen ordered gates against each candidate commit — scope, build, the frozen tests, then interleaved A/B benchmark rounds with the sides swapped each round to cancel first-slot bias — and scores the result with a Mann-Whitney U test and a Bonferroni-corrected alpha. report gives you the cumulative picture, profile shows where the time actually goes, doctor tells you whether the machine is fit to measure at all.
Measured, not illustrated
Every number in the README is from a real run. Against the bundled demo crate: count_words 44,702 ns → 38,636 ns, −13.57 %, p ≈ 1.1 × 10⁻⁵, KEEP — written up in the case study.
Against a third-party crate, unicode-segmentation v1.13.3, driven end to end by an agent following program.md: four experiments, two KEEPs and two honest DISCARDs, the best of them −90.53 % on one benchmark, 2.33× cumulative. The frozen-test guarantee was attacked on purpose in that run — a frozen test's assertions weakened and the code it guards broken in the same commit — and it held. The full report, failed hypotheses included, is in the third-party validation report.
That run found three real defects in this tool, all fixed before this release: init could not see criterion 0.3.x/0.4.x benchmarks, profile crashed against current samply, and the doc-comment gate fired on plain prose.
What it does not do
Stated in the README rather than left to be discovered: no allocation metrics, because criterion measures time only. Inline #[cfg(test)] tests and doctests are refused rather than restored, because restoring the file would erase the agent's work with them. unsafe is ungated, so get_unchecked will pass every test and buy its speed with undefined behaviour — review kept diffs yourself. Freeze/restore covers only the workspace root's tests/** and benches/**. And one third-party crate is one, not three.
Platforms
Linux, macOS and Windows, with CI running the full suite on all three.
Requires Rust 1.85 or later.