Versions reads your project faster, and runs on one OS layer
Versions hashes a 10,000-file project in 208 ms instead of 512 ms, and reads 10,000 stored objects in 138 ms instead of 326 ms, measured on an M4.
Versions now hashes files on every core at once and reads stored versions straight from mapped memory. On a 10-core M4, hashing a project of 10,008 files (about 170 MB) took 208 ms instead of 512 ms, reading 10,000 stored objects took 138 ms instead of 326 ms, and a capture took 383 ms instead of 463 ms. Both builds were run back to back on the same machine, four times each, and these are the averages.
SHA-256 runs on the processor's own SHA instructions on Apple silicon and on ARM and Intel chips that have them, and falls back to portable code where they are missing. Every digest still matches the published NIST test vectors, and the files Versions writes to disk are byte for byte the same as before.
Watching for changes, cloning files, mapped reads and free-space checks now sit in one small layer with a macOS, Linux and Windows side. A new branch clones each file where the disk supports it and copies it on disks that do not, such as exFAT. The Versions tests also pass on Linux, on both ARM and Intel.