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.
Also did https://github.com/dgryski/trifles/blob/master/tsip/go/asm.go (not on the list)
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" }