mmcloughlin/avo

ports: port peachpy go projects to avo

mmcloughlin opened this issue · 10 comments

Consider porting existing PeachPy Go projects to avo. At a minimum this would be really valuable feedback and system-level testing for avo. These could be committed to the avo examples directory or potentially committed back to the original repos if their maintainers are interested.

Repository Description Stars
Yawning/chacha20 ChaCha20 cryptographic cipher. 33
Yawning/aez AEZ authenticated-encryption scheme. 6
robskie/bp128 SIMD-BP128 integer encoding and decoding. 22
dgryski/go-marvin32 Microsoft's Marvin32 hash function. 7
dgryski/go-highway Google's Highway hash function. 55
dgryski/go-metro MetroHash function. 66
dgryski/go-stadtx Stadtx hash function. See examples/stadtx 7
dgryski/go-sip13 SipHash 1-3 function. 17
dgryski/go-chaskey Chaskey MAC. 5
dgryski/go-speck SPECK cipher. 7
dgryski/go-bloomindex Bloom-filter based search index. 79
dgryski/go-groupvariant SSE-optimized group varint integer encoding. 25
bwesterb/go-sha256x8 Eight-way SHA256 0
gtank/ed25519 radix51 sub-package originally generated with PeachPy 8

Porting my projects definitely on my TODO list. Start small then work big. Small are SPECK, marvin32, sip13. Maybe bloomindex. Medium are metro, chaskey, groupvarint. Large highway.

groupvarint not worth converting. Only a single tiny asm routine. Removed peachpy but left the generated 10-line function.

Will probably not convert stadtx, as you've already done that.

Will probably not convert stadtx, as you've already done that.

Please feel free to copy that code into your repo.

https://github.com/dgryski/go-chaskey/blob/master/asm.go

Notable in this one is the loop helper type.

type loop string

var loops int

func newLoop(name string) loop {
	loops++
         if name == "" { name = "loop" }
	return loop(name + strconv.Itoa(loops-1))
}

func (l loop) begin() string { return string(l) + "_begin" }
func (l loop) end() string   { return string(l) + "_end" }