Oh, that is nice. Searches for adler32 on
godoc.org did not yield that result.
To comment about the differences between implementations, in case anyone wonders:
- From what I see, the window size is hardcoded to 64 bytes in Camlistore, while in my implementation it is determined by the first Write(). That is certainly not a problem, because I don't see a reason to change the window size once someone has settled for one in a given project, but that's a difference.
- My implementation satisfies the hash.Hash interface, while the one in Camlistore does not. But that will not bring you much, because the point of a rolling checksum is to be able to Roll, which is not possible with this hash.Hash interface.
- I have a bunch of tests trying to show that it yields the same results as the vanilla adler32 implementation, and I see no such tests in Camlistore. But Camlistore seems like a large, well maintained project, so there is no reason not to trust that code.
And that's it, roughly. I am not saying one is better than the other, I just wanted to point out the differences in case that helps someone make their choice.