Releases: mmcloughlin/avo
v0.6.0
Extends instruction set support to include the extensions:
Third-party test suite now includes the standard library package crypto/internal/bigmod
.
Fixes issue reported in #387 where integer float data was printed incorrectly and therefore parsed as the wrong type by the Go assembler.
Includes miscellaneous tweaks to support Go 1.20 and 1.21 releases. The go.mod
file bumps the minimum Go version to 1.18.
What's Changed
- internal/opcodesextra: curated extra instructions by @mmcloughlin in #345
- all: add GFNI instructions by @mmcloughlin in #344
- internal/data: bump versions by @mmcloughlin in #346
- doc: fix ci badge by @mmcloughlin in #352
- tests/thirdparty: add crypto/internal/bigmod by @mmcloughlin in #355
- .github: use app token for third-party metadata tests by @mmcloughlin in #356
- .github/actions: fix bot author template by @mmcloughlin in #357
- all: VAES instructions by @mmcloughlin in #358
- all: VNNI instructions by @mmcloughlin in #359
- all: VPCLMULQDQ instruction by @mmcloughlin in #360
- all: VPOPCNTDQ instructions by @mmcloughlin in #361
- all: BITALG instructions by @mmcloughlin in #362
- all: VBMI2 instructions by @mmcloughlin in #363
- internal/opcodesextra: _yvblendmpd forms helper by @mmcloughlin in #365
- internal/opcodesextra: minor comment tweaks by @mmcloughlin in #366
- script: fix golangci-lint install by @mmcloughlin in #368
- Revert "script: fix golangci-lint install (#368)" by @mmcloughlin in #369
- ci: remove "Configure Go Environment" step by @mmcloughlin in #376
- ci: bump to go 1.20 by @mmcloughlin in #375
- tests/thirdparty: update golang/go tests to go1.20.1 by @mmcloughlin in #378
- all: require go 1.18 by @mmcloughlin in #379
- all: remove +build tags by @mmcloughlin in #377
- ci: skip entire autoland job for non-bot users by @mmcloughlin in #382
- script: update tool dependencies by @mmcloughlin in #380
- internal/opcodesextra: fix actions for VNNI and VBMI2 shifts by @vsivsi in #372
- operand: fix integer float data by @mmcloughlin in #393
- ci: bump to go 1.21 by @mmcloughlin in #400
- all: upgrade to golangci-lint v1.55.2 by @mmcloughlin in #416
- all: enable use-any revive rule by @mmcloughlin in #417
Full Changelog: v0.5.0...v0.6.0
v0.5.0
Fixes issue reported in #336 where automatic load/store generation does not work for boolean function arguments or return values.
Adds an Adopters README section and full adopters list to showcase exciting uses of avo
across the Go ecosystem. The list is auto-generated from the third-party test suite. If you'd like to see your project listed, please reach out.
The third-party test suite now includes:
- Standard library
crypto/ed25519
github.com/klauspost/compress/zstd
github.com/segmentio/asm
github.com/cloudflare/circl
lukechampine.com/blake3
github.com/oasisprotocol/deoxysii
github.com/mmcloughlin/md4
Includes small tweaks to support Go 1.18 and 1.19 releases. The go.mod
file bumps the minimum Go version to 1.16.
Implements bot automation for upgrading direct module dependencies and keeping third-party package metadata up-to-date.
What's Changed
- tests/thirdparty: add lukechampine/blake3 by @mmcloughlin in #231
- tests/thirdparty: re-enable segmentio/asm by @mmcloughlin in #232
- all: upgrade golangci-lint and formatters by @mmcloughlin in #240
- ci: bump to go 1.18 by @mmcloughlin in #239
- all: upgrade direct dependencies by @mmcloughlin in #244
- tests/thirdparty: add github.com/oasisprotocol/deoxysii by @mmcloughlin in #247
- tests/thirdparty: add mmcloughlin/md4 by @mmcloughlin in #249
- go.mod: require go 1.16 by @mmcloughlin in #250
- doc: generate README with docgen tool by @mmcloughlin in #251
- .github: configure dependabot by @mmcloughlin in #253
- doc: Adopters list in README by @mmcloughlin in #252
- doc: Adopters page by @mmcloughlin in #254
- doc: rounded avatars by @mmcloughlin in #256
- .github: upgrade setup-go action by @mmcloughlin in #259
- tests/thirdparty: standard library crypto/ed25519 by @mmcloughlin in #225
- script: yaml formatting by @mmcloughlin in #261
- tests/thirdparty: multiple packages per project by @mmcloughlin in #262
- tests/thirdparty: add klauspost/compress/zstd by @mmcloughlin in #263
- tests/thirdparty: add cloudflare/circl by @mmcloughlin in #264
- script: upgrade asmfmt to v1.3.2 by @mmcloughlin in #265
- .github: workflow to update metadata by @mmcloughlin in #257
- .github: auto-merge bot pull requests by @mmcloughlin in #268
- .github: fix automerge by @mmcloughlin in #273
- .github: remove unnecessary matrix parameters by @mmcloughlin in #275
- .github: add "required" ci job by @mmcloughlin in #276
- .github: replace dependabot with deps workflow by @mmcloughlin in #277
- doc: format stars count by @mmcloughlin in #281
- ci: do not auto-merge draft pull requests by @mmcloughlin in #282
- script: metadata update by @mmcloughlin in #283
- tests/thirdparty: use Suite type for configuration by @mmcloughlin in #285
- internal/cmd/docgen: use "missingkey=error" by @mmcloughlin in #287
- doc: report project metadata update time by @mmcloughlin in #286
- ci: create pull request action by @mmcloughlin in #288
- ci: reduce frequency of auto updates by @mmcloughlin in #328
- all: upgrade to golangci-lint v1.49.0 by @mmcloughlin in #329
- ci: bump to go 1.19 by @mmcloughlin in #330
- ci: setup go env in metadata workflow by @mmcloughlin in #337
- ci: allow metadata workflow manual trigger by @mmcloughlin in #338
- ci: upgrade actions by @mmcloughlin in #340
- build: mov deduction for booleans by @mmcloughlin in #341
- .github: exclude bot commits from auto-generated release notes by @mmcloughlin in #342
Full Changelog: v0.4.0...v0.5.0
v0.4.0
Extends avo to support most AVX-512 instruction sets.
The instruction type is extended to support suffixes. The K family of opmask registers is added to the register package, and the operand package is updated to support the new operand types. Move instruciton deduction in Load
and Store
is extended to support KMOV*
and VMOV*
forms.
Internal code generation packages were overhauled. Instruction database loading required various messy changes to account for the additional complexities of the AVX-512 instruction sets. The internal/api
package was added to introduce a separation between instruction forms in the database, and the functions avo provides to create them. This was required since with instruction suffixes there is no longer a one-to-one mapping between instruction constructors and opcodes.
AVX-512 bloated generated source code size substantially, initially increasing compilation and CI test times to an unacceptable level. Two changes were made to address this:
- Instruction constructors in the
x86
package moved to an optab-based approach. This compiles substantially faster than the verbose code generation we had before. - The most verbose code-generated tests are moved under build tags and limited to a stress test mode. Stress test builds are run on schedule but not in regular CI.
An example of AVX-512 accelerated 16-lane MD5 is provided to demonstrate and test the new functionality.
Third-party test suite now also includes:
golang.org/x/crypto/curve25519
filippo.io/edwards25519
github.com/oasisprotocol/curve25519-voi
github.com/ericlagergren/lwcrypto
Changelog
- tests/thirdparty: add ericlagergren/lwcrypto by @mmcloughlin in #219
- tests/thirdparty: add oasisprotocol/curve25519-voi by @mmcloughlin in #220
- tests/thirdparty: golang.org/x/crypto/curve25519 by @mmcloughlin in #222
- tests/thirdparty: package metadata by @mmcloughlin in #223
- tests/thirdparty: use shallow clone by @mmcloughlin in #224
- tests/thirdparty: add filippo.io/edwards25519 by @mmcloughlin in #227
- tests/thirdparty: add skip option by @mmcloughlin in #228
- all: AVX-512 by @mmcloughlin and @vsivsi in #217
Full Changelog: v0.3.1...v0.4.0
v0.3.1
- Fix argument size computation bug reported in #191 and #195. Previously
avo
would incorrectly add padding to the end of function arguments in the case where the function has no return values, triggering anasmdecl
vet error. - Add extensive test case with randomly generated function signatures.
- Upgrade direct module dependencies.
Changelog
- all: upgrade direct dependencies by @mmcloughlin in #213
- gotypes: fix argument size for signatures without return types by @mmcloughlin in #212
- gotypes: test case for issue #195 by @mmcloughlin in #214
- build: global Function() and SignatureExpr() by @mmcloughlin in #215
- tests: test functions with random signatures by @mmcloughlin in #216
Full Changelog: v0.3.0...v0.3.1
v0.3.0
- Support for outputting
go:build
constraints:avo
will output+build
,go:build
or both depending on the Go version. - Third-party test suite refactored for stability and parallel execution in Github actions
Changelog
- Update/add third party by @klauspost in #186
- ci: bump to go 1.16 by @mmcloughlin in #166
- doc: link to Filippo's live stream in README by @mmcloughlin in #187
- ci: github actions hardening by @mmcloughlin in #190
- ci: upgrade codecov action by @mmcloughlin in #196
- tests/thirdparty: fix and run as github workflow by @mmcloughlin in #198
- tests/thirdparty: add segmentio/asm by @mmcloughlin in #201
- tests/thirdparty: fix phoreproject-bls by @mmcloughlin in #204
- script: switch to install.sh from golangci-lint repo by @mmcloughlin in #203
- script: pin golangci-lint install script by @mmcloughlin in #205
- buildtags: go:build support by @mmcloughlin in #208
- printer: constraints formatting by @mmcloughlin in #209
- all: go 1.17 by @mmcloughlin in #197
- script: switch to go install for tools by @mmcloughlin in #210
- buildtags: Format only go:build lines for go 1.18+ by @mmcloughlin in #211
Full Changelog: v0.2.0...v0.3.0