[issue39298] add BLAKE3 to hashlib

Larry Hastings report at bugs.python.org
Fri Mar 4 10:59:39 EST 2022


Larry Hastings <larry at hastings.org> added the comment:

Okay, so.  Here's a PR that adds BLAKE3 support to hashlib.

The code was straightforward; I just took the BLAKE2 module and modified it to only have one algorithm.  I also copied over the whole C directory tree from BLAKE3, which is totally okay fine by their license.  I didn't have to modify it a bit.

The tricky part was building it.  Building extension modules is done inside setup.py using distutils (or the modern replacement), and in order to get those sexy SIMD implementations I had to compile assembly-language files, or C files with extra flags.  What I did works great on my Linux box, and I have my fingers crossed that it'll work on other POSIX platforms.  I wrote a loooong comment in setup.py explaining what I did and why.

Steve: I didn't do anything for Windows support.  Do you have time to take a pass at it?  Or if you know another core dev who does Windows build stuff, please nosy them.  Whoever does the work. I suggest you read https://github.com/BLAKE3-team/BLAKE3/blob/master/c/README.md for a little guidance on how to build BLAKE3 on Windows with SIMD support.  Also, I see you now build Python for Windows on ARM!  Does this mean Python can use BLAKE3's NEON support?  Maybe it's time to find out!  Get hyped!

Jack and I corresponded last year (or maybe 2020?) about what the API should look like.  The idea is, Jack also maintains a BLAKE3 Python extension on pypi, written in Rust.  Our goal was to make the two types behave identically, so that it could be like the old stringio / cstringio situation.  You can use the built-in one for convenience, but also you can install the Rust version from PyPI for even more performance.  Jack, it wouldn't hurt my feelings overly much if you checked my PR to make sure I got the interface right.

----------

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue39298>
_______________________________________


More information about the Python-bugs-list mailing list