diff --git a/README.md b/README.md index 1d917fe..0ec2b9e 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ For more about `avo`: * Introductory talk ["Better `x86` Assembly Generation with Go"](https://www.youtube.com/watch?v=6Y5CZ7_tyA4) at [dotGo 2019](https://2019.dotgo.eu/) ([slides](https://speakerdeck.com/mmcloughlin/better-x86-assembly-generation-with-go)) * [Longer tutorial at Gophercon 2019](https://www.youtube.com/watch?v=WaD8sNqroAw) showing a highly-optimized dot product ([slides](https://speakerdeck.com/mmcloughlin/better-x86-assembly-generation-with-go-gophercon-2019)) * Watch [Filippo Valsorda](https://filippo.io/) live code the [rewrite of `filippo.io/edwards25519` assembly with `avo`](https://vimeo.com/679848853) +* Explore [projects using `avo`](doc/adopters.md) * Discuss `avo` and general Go assembly topics in the [#assembly](https://gophers.slack.com/archives/C6WDZJ70S) channel of [Gophers Slack](https://invite.slack.golangbridge.org/) _Note: APIs subject to change while `avo` is still in an experimental phase. You can use it to build [real things](examples) but we suggest you pin a version with your package manager of choice._ @@ -227,6 +228,8 @@ Popular projects using `avo`: :star: 107 > Accelerate aggregated MD5 hashing performance up to 8x for AVX512 and 4x for AVX2. Useful for server applications that need to compute many MD5 sums in parallel. +See the [full list of projects using `avo`](doc/adopters.md). + ## Contributing Contributions to `avo` are welcome: diff --git a/doc/adopters.md b/doc/adopters.md new file mode 100644 index 0000000..bdca067 --- /dev/null +++ b/doc/adopters.md @@ -0,0 +1,89 @@ +# Adopters + + [klauspost / **compress**](https://github.com/klauspost/compress) / **s2** + +Optimized Go Compression Packages + + [golang / **crypto**](https://github.com/golang/crypto) / **curve25519** + +[mirror] Go supplementary cryptography libraries + + [klauspost / **reedsolomon**](https://github.com/klauspost/reedsolomon) + +Reed-Solomon Erasure Coding in Go + + [segmentio / **asm**](https://github.com/segmentio/asm) + +Go library providing algorithms optimized to leverage the characteristics of modern CPUs + + [zeebo / **blake3**](https://github.com/zeebo/blake3) + +Pure Go implementation of BLAKE3 with AVX2 and SSE4.1 acceleration + + [lukechampine / **blake3**](https://github.com/lukechampine/blake3) + +A pure-Go implementation of the BLAKE3 cryptographic hash function + + [zeebo / **xxh3**](https://github.com/zeebo/xxh3) + +XXH3 algorithm in Go + + [dgryski / **go-bloomindex**](https://github.com/dgryski/go-bloomindex) + +Bloom-filter based search index + + [minio / **md5-simd**](https://github.com/minio/md5-simd) + +Accelerate aggregated MD5 hashing performance up to 8x for AVX512 and 4x for AVX2. Useful for server applications that need to compute many MD5 sums in parallel. + + [phoreproject / **bls**](https://github.com/phoreproject/bls) + +Go implementation of the BLS12-381 pairing + + [FiloSottile / **edwards25519**](https://github.com/FiloSottile/edwards25519) + +filippo.io/edwards25519 — A safer, faster, and more powerful low-level edwards25519 Go implementation. + + [lukechampine / **us**](https://github.com/lukechampine/us) / **merkle/blake2b** + +An alternative interface to Sia + + [oasisprotocol / **curve25519-voi**](https://github.com/oasisprotocol/curve25519-voi) + +High-performance Curve25519/ristretto255 for Go + + [dgryski / **go-sip13**](https://github.com/dgryski/go-sip13) + +siphash 1-3 + + [orisano / **wyhash**](https://github.com/orisano/wyhash) + +A pure-Go wyhash implementation. + + [oasisprotocol / **deoxysii**](https://github.com/oasisprotocol/deoxysii) + +Go Deoxys-II-256-128 + + [mmcloughlin / **md4**](https://github.com/mmcloughlin/md4) + +Assembly-optimized MD4 hash algorithm in Go + + [dgryski / **go-marvin32**](https://github.com/dgryski/go-marvin32) + +Assembly-optimized Marvin32 hash function + + [dgryski / **go-speck**](https://github.com/dgryski/go-speck) + +SPECK cipher + + [dgryski / **go-chaskey**](https://github.com/dgryski/go-chaskey) + +go-chaskey: an implementation of chaskey, an efficient MAC for microcontrollers + + [ericlagergren / **lwcrypto**](https://github.com/ericlagergren/lwcrypto) / **ascon** + +NIST Lightweight Cryptography finalists + + [ericlagergren / **lwcrypto**](https://github.com/ericlagergren/lwcrypto) / **grain** + +NIST Lightweight Cryptography finalists diff --git a/internal/cmd/docgen/main.go b/internal/cmd/docgen/main.go index 9b37fda..0fb500a 100644 --- a/internal/cmd/docgen/main.go +++ b/internal/cmd/docgen/main.go @@ -42,6 +42,7 @@ func mainerr() (err error) { t.Funcs(template.FuncMap{ "include": include, "snippet": snippet, + "avatar": avatar, }) // Load template. @@ -163,3 +164,9 @@ func snippet(filename, start, end string) (string, error) { return buf.String(), nil } + +// avatar returns HTML for a Github user avatar. +func avatar(owner string) (string, error) { + format := `` + return fmt.Sprintf(format, owner), nil +} diff --git a/internal/cmd/docgen/templates/adopters.tmpl b/internal/cmd/docgen/templates/adopters.tmpl new file mode 100644 index 0000000..9c370b3 --- /dev/null +++ b/internal/cmd/docgen/templates/adopters.tmpl @@ -0,0 +1,7 @@ +# Adopters +{{ range .Packages.Ranked }} +{{ avatar .Repository.Owner }} [{{ .Repository.Owner }} / **{{ .Repository.Name }}**]({{ .Repository.URL }}) +{{- if .SubPackage }} / **{{ .SubPackage}}**{{ end }} + +{{ .Metadata.Description }} +{{ end -}} diff --git a/internal/cmd/docgen/templates/readme.tmpl b/internal/cmd/docgen/templates/readme.tmpl index 7177faf..452226d 100644 --- a/internal/cmd/docgen/templates/readme.tmpl +++ b/internal/cmd/docgen/templates/readme.tmpl @@ -20,6 +20,7 @@ For more about `avo`: * Introductory talk ["Better `x86` Assembly Generation with Go"](https://www.youtube.com/watch?v=6Y5CZ7_tyA4) at [dotGo 2019](https://2019.dotgo.eu/) ([slides](https://speakerdeck.com/mmcloughlin/better-x86-assembly-generation-with-go)) * [Longer tutorial at Gophercon 2019](https://www.youtube.com/watch?v=WaD8sNqroAw) showing a highly-optimized dot product ([slides](https://speakerdeck.com/mmcloughlin/better-x86-assembly-generation-with-go-gophercon-2019)) * Watch [Filippo Valsorda](https://filippo.io/) live code the [rewrite of `filippo.io/edwards25519` assembly with `avo`](https://vimeo.com/679848853) +* Explore [projects using `avo`](doc/adopters.md) * Discuss `avo` and general Go assembly topics in the [#assembly](https://gophers.slack.com/archives/C6WDZJ70S) channel of [Gophers Slack](https://invite.slack.golangbridge.org/) _Note: APIs subject to change while `avo` is still in an experimental phase. You can use it to build [real things](examples) but we suggest you pin a version with your package manager of choice._ @@ -106,13 +107,15 @@ Popular projects using `avo`: {{ range .Packages.Top 10 -}} {{ if lt .Metadata.Stars 100 }}{{break}}{{ end -}} - [{{ .Repository.Owner }} / **{{ .Repository.Name }}**]({{ .Repository.URL }}) +{{ avatar .Repository.Owner }} [{{ .Repository.Owner }} / **{{ .Repository.Name }}**]({{ .Repository.URL }}) {{- if .SubPackage }} / **{{ .SubPackage}}**{{ end }} :star: {{ .Metadata.Stars }} > {{ .Metadata.Description }} {{ end -}} +See the [full list of projects using `avo`](doc/adopters.md). + ## Contributing Contributions to `avo` are welcome: diff --git a/script/doc b/script/doc index 2fd7068..14b5ba7 100755 --- a/script/doc +++ b/script/doc @@ -5,6 +5,7 @@ go install ./internal/cmd/docgen pkgs="tests/thirdparty/packages.json" docgen -pkgs "${pkgs}" -type readme -output README.md +docgen -pkgs "${pkgs}" -type adopters -output doc/adopters.md # Process simple file embeddings with embedmd. find . -name '*.md' | xargs embedmd -w