Show HN: The BLAKE3 hash function running on a 6502 microprocessor
github.com
github.com
permute:
; Rather than permuting the 32-bit words stored in the
; COMPRESS_MSG array, we permute the 8-bit pointers stored
; in the MPTRS array.
;
; The permutation is defined to be:
; 2, 6, 3, 10, 7, 0, 4, 13, 1, 11, 12, 5, 9, 14, 15, 8
;
; If we walk those assignments, we get two loops:
; 0<-2<-3<-10<-12<-9<-11<-5<-0
; 1<-6<-4<-7<-13<-14<-15<-8<-1[1] https://archive.org/details/byte-magazine-1981-06/page/n393/...
https://twitter.com/IcePic_dz/status/839548134929858560?s=20...
Also somewhat related: https://news.ycombinator.com/item?id=9593412 and https://news.ycombinator.com/item?id=20383561
If you're curious about the single-threaded performance differences between BLAKE3 and BLAKE2b, I might clarify that the red bar chart at the top of the BLAKE3 readme is actually a single-threaded measurement. Everything depends on your input size though, and we have some more detailed graphs in the paper.
Sure is long and complicated. I wish they'd dual license it as MIT.
[0]: https://unlicense.org/ [1]: https://softwareengineering.stackexchange.com/q/147111/10551...
The other half is that it is also a very widespread and thus well-understood license that I am not afraid to use.