Fast characterwise (and binary?) patches

I just found this old discussion still open deep in my tabs…but it looks like a lot of progress has happened since I last looked! Crossposting for anyone who ends up here via google or old links

  • We now have an efficient implementation of binary diffs, based on a rolling checksum (like rsync) and my diffs crate on the result. This isn’t yet integrated into Pijul, but will soon be.

The trick introduced in the last few version of Libpijul, and tested and debugged more carefully in version 1.0.0-alpha.45, is to use almost the same idea to compare the old version of a file with a new one. We don’t even need the more careful hashes, since we can compare the blocks directly, with the same complexity as computing a strong hash.