v0.3.0
Changed
- Cloud block storage no longer costs 40 % of the scan. Scaleway SBS
volumes (and virtualized block devices generally) report
queue/rotational = 1while being network-attached flash; camembert
believed them, dropped to the 2-worker rotational tier, and engaged
io_uring on top. Arotationalflag of1is now cross-checked against
the device's active I/O scheduler and disbelieved when the kernel left
nonescheduling active — a combination the kernel never produces for a
real spinning disk. Measured on a 2-vCPU cloud instance, 100k entries:
ext4 warm 340 → 210 ms, cold 1840 → 1017 ms; XFS warm 379 → 178 ms, cold
2122 → 968 ms. A real HDD, and any device whosequeue/schedulercannot
be read, keeps the rotational tier. --statx-engine autonow resolves tosyncat every worker count.
io_uring batching measured 12-21 % faster at ≤ 2 workers on the
development machine and 1.2-1.7× slower at every worker count from 1
to 8 (warm and cold, ext4/XFS/btrfs/f2fs) on cloud block storage. With
the evidence pointing both ways, the default takes the engine that is
never the slow one;--statx-engine io_uringstill forces the other.
Fixed
camembert … --no-ui | headno longer panics. The Rust runtime
leavesSIGPIPEignored, which turned a closed stdout into a write
error and a panic (stack trace, exit 101) where every other tool in a
pipeline exits quietly; the default disposition is now restored at
startup. The dump is also written before any summary text, so a
truncated pipeline costs the reader nothing but the text they stopped
reading.
Added
- Man pages —
camembert-mangen <OUT_DIR>renderscamembert.1(plus
one page per subcommand) from the same clap definitions the binary parses
with, so the manual cannot drift from--help. CAMEMBERT_GIT_SHAis honored at build time — set it and--version
reports that commit instead ofunknown, which is what a distro packager
building from a.git-less tarball needs.- Declared MSRV: Rust 1.88, the floor the dependency graph already
imposed. A CI job builds against exactly that version, so raising it has
to be deliberate. - AUR packaging —
packaging/aur/holds thePKGBUILDand the runbook
for publishing and updating it. Not published yet; it needs a release
containing the man-page generator.
Full Changelog: v0.2.0...v0.3.0