The bs branch has reached a milestone: git-annex find and git-annex get (when all files are present) process ByteStrings end-to-end with no String conversion. That sped it up by around 30% on top of the previous optimisations.

To get here, I spent a couple of days creating the filepath-bytestring library, which git-annex will depend on. Lots more git-annex internals were switched to ByteString, especially everything having to do with statting files.

Other commands, like git-annex whereis, still do some String conversions. Optimisation never ends.

But the bs branch is ready to merge as-is, and the diff is 10 thousand lines, so not a branch I want to maintain for long. Planning to merge it after the next release.