
James E. King III wrote:
2. Seems to be missing some other hashes like BLAKE, SHA3.
There's an infinite amount of hashes that can potentially be added; since the library is (at least in principle) not about the provided hash algorithms, but about the framework allowing user-defined objects to be hashed by any algorithm satisfying the concept, I didn't want to turn it into a repository of hash algorithms. Of course, if SHA3 (f.ex.) is requested by users, we'll consider adding it. The current selection is intended to cover all major use cases and serve as a proof of concept that the framework is able to support them.
3. Do we have a checksum library with CRC32/32C/64/64NVME (the new one AWS S3 is using)? Do they belong here?
There's Boost.CRC.
4. The benchmark seems like it uses a typical time-boxed chrono calculation. Is there really not a canned implementation of that somewhere?
Maybe; nothing comes to mind at the moment.
5. Is the benchmark using sufficient content to avoid overwhelming cache optimization?
Hash functions are rarely faster than main memory, so going out of L3 isn't that important, at least at the moment. The benchmark is useful enough for getting a quick impression how the various functions perform relative to each other.
6. There's a header-only implementation of SHA1 in uuid (*iirc...), will we be moving to use this?
There's MD5 in UUID too (which you added.) We can move to this, but it's not necessary. UUID has very few dependencies (at the moment) and people like it that way, because it's a library they often want to use without bringing in more from Boost.