I wonder how many veteran C programmers (myself not included) would react with "d'oh, of course you should byte-align memory access" here...
It turned out to be a useful exercise, since adler32 in digest gave incorrect checksums, due to initialization to 0 rather than 1:
https://github.com/jkff/digest/pull/1
Anyway, thanks to Francesco Mazzoli for the really nice article!
Word-aligning, though - that's a different story.