Earlier quoted context omitted.
And if you're designing hardware (or on an FPGA) ChaCha (and BLAKE2/3) are actually really freakin' fast for the die area they take. IIRC ChaCha20 beats AES in hardware. It's just extremely rare (FPGA only) to find it in hardware, since there's not enough demand. I expect that to eventually change.
Given that all these are ARX cores, I wonder if a fused ARX instruction could cover a wide range of them?
BLAKE3 1.0
41–50 of 126 posts
Re: BLAKE3 1.0
#42Is this 1.0 ready indeed? a comment in blake3_neon.c: // TODO: This is probably incorrect for big-endian ARM. How should that work?
Rust ecosystem is already overthinking 1.0 releases, which results in tons of crates having 0.x versions while being depended on as de-facto stable.
Re: BLAKE3 1.0
#43Earlier quoted context omitted.
Given that all these are ARX cores, I wonder if a fused ARX instruction could cover a wide range of them?
Probably. With a barrel shifter easily. Barrel shifters are a bit slower than wired shifts though, so for ultimate speed you'd end up with hardware shift amounts.
Re: BLAKE3 1.0
#44Is this 1.0 ready indeed? a comment in blake3_neon.c: // TODO: This is probably incorrect for big-endian ARM. How should that work?
I know ARM in principal supports BE, but never heard real BE ARM products yet. Is there one? I am just curious.
Re: BLAKE3 1.0
#45Re: BLAKE3 1.0
#46Is this 1.0 ready indeed? a comment in blake3_neon.c: // TODO: This is probably incorrect for big-endian ARM. How should that work?
The algorithm itself hasn't changed, which is great!
Re: BLAKE3 1.0
#47Is this 1.0 ready indeed? a comment in blake3_neon.c: // TODO: This is probably incorrect for big-endian ARM. How should that work?
I know ARM in principal supports BE, but never heard real BE ARM products yet. Is there one? I am just curious.
Netbsd releases big endian versions that work on various ARM boards. Here's an announcement showing it works on an Rpi3 and below, for example: https://mail-index.netbsd.org/port-arm/2020/12/03/msg007117....
They said at the time that it's not yet working on the Rpi4 because of issues getting BE mode and UEFI to work together.
I don't know that it's used often, but it does exist.
Re: BLAKE3 1.0
#48Is this 1.0 ready indeed? a comment in blake3_neon.c: // TODO: This is probably incorrect for big-endian ARM. How should that work?
1.0 is not the last and final version of a product. There can always be 1.0.1 or 1.1 or 2.0. Numbers are plentiful. Rust ecosystem is already overthinking 1.0 releases, which results in tons of crates having 0.x versions while being depended on as de-facto stable.
Of course, but if you bother to do semantic versioning, it should strive to be a stable one and not a "we are still experimenting" release.
IMHO knowing that something doesn't work, or isn't even implemented yet and will be addressed in the next release is OK for an 0.x.y release, but you shouldn't rush towards 1.0.0, already planing to release it "unfinished" and complete it later on in 1.0.1. That IMO kind of misses the point of the versioning semantics.
Re: BLAKE3 1.0
#49Re: BLAKE3 1.0
#50Is this 1.0 ready indeed? a comment in blake3_neon.c: // TODO: This is probably incorrect for big-endian ARM. How should that work?