Repository navigation
Releases
v0.11.0 (2026-10-14)
Notable Changes
-
Unified SIMD dispatch across all architectures
Runtime dispatch now lives in a singlebase64_dispatch.godriver that invokesencodeSimd/decodeSimdhooks implemented by each SIMD architecture (amd64, arm64, loong64, ppc64x, riscv64, s390x). The formerbase64_asm.gowas split intobase64_amd64.goandbase64_s390x.go, and the amd64 assembly mergeddecodeStdAsm/decodeUrlAsminto a singledecodeAsm(dst, src, url bool)entry point. No exported API changes. -
RISCV64: custom-alphabet encodes now use the RVV path
Previously this case always fell back to the generic encoder. Since the RVV encoder performs its lookup directly on the raw 64-byte alphabet table, that restriction was no longer needed, so custom alphabets now take the same SIMD path (output unchanged). -
LoongArch64: replaced raw WORD encodings with real assembler mnemonics
Now that the Go 1.26 assembler supports VSHUFB/XVSHUFB, VSLTBU/XVSLTBU, VSSUBBU/XVSSUBBU, VMADDWODHBU/XVMADDWODHBU, VMADDWODWHU/XVMADDWODWHU and XVPERMIQ, the hand-codedWORD $0x...instructions inbase64_loong64.sare replaced with readable mnemonics. Generated machine code is byte-identical (verified via objdump). -
Minimum Go version raised to 1.26
go.modnow requires Go 1.26+. If you are unable to upgrade your Go version, please continue using v0.10.0.
CI / Tooling
- Applied StepSecurity security best practices (#46): workflows run with least-privilege permissions and
harden-runner, actions are pinned, and CodeQL code scanning + OpenSSF Scorecards workflows were added. - CI upgraded to Go 1.26 across all workflows; Dependabot now also tracks GitHub Actions dependencies daily.
- Added repo agent guidelines (
.github/copilot-instructions.md) and updated the SIMD skill docs to match the new dispatch layout.
Dependencies
- Bumped
golang.org/x/sysfrom v0.46.0 to v0.49.0. - Bumped GitHub Actions:
actions/checkout4.4.0 → 7.0.1 (#48),actions/setup-go6.4.0 → 7.0.0 (#47),actions/cache4.3.0 → 6.1.0 (#51),docker/setup-qemu-action3.7.0 → 4.4.0 (#49),codecov/codecov-action4.6.0 → 7.1.1 (#50),step-security/harden-runner2.16.1 → 2.22.1 (#52).
Full Changelog: v0.10.0...v0.11.0
v0.10.0 (2026-6-23)
New Features
- WHATWG Forgiving Base64 Decoding (#43)
AddedForgiving()method onEncodingto support the WHATWG forgiving base64 decoding approach. In this mode, the decoder transparently ignores ASCII whitespace characters — space (' '), tab ('\t'), form feed ('\f'), line feed ('\n'), and carriage return ('\r') — in the input.decoded, err := base64.StdEncoding.Forgiving().DecodeString("SGVs bG8g V29y bGQ=")
Performance Improvements
- AMD64: AVX-512 VBMI encode/decode paths
Added dedicated AVX-512 VBMI encode and decode implementations. The encode path uses the multishift technique for maximum throughput on wide SIMD hardware. Falls back to AVX2 for tail bytes when input is not aligned to the AVX-512 block size. - LoongArch64: LASX (256-bit SIMD) encode/decode
Added full LASX encode/decode paths usingxvpermi.qfor Q-lane operations, processing 24 bytes → 32 bytes per encode iteration and 32 bytes → 24 bytes per decode iteration. Falls back to LSX for remaining tail bytes. - ARM64: Direct VTBX opcode usage
Switched to theVTBXopcode directly, eliminating unnecessary intermediate instructions. - PowerPC64x: SIMD optimizations
Refined and debugged the PPC64x assembly paths for better performance and correctness. - s390x: SIMD optimizations
Optimized the s390x vector implementation for improved throughput.
CI / Tooling
- Added Intel SDE workflow for AVX-512 VBMI testing on GitHub Actions, with automated SDE download, ptrace configuration, and SHA256 verification.
- Added base64 benchmark GitHub Action for automated performance regression tracking.
Dependencies
- Bumped
golang.org/x/sysfromv0.41.0→v0.46.0.
RISCV64 RVV Support
Notable Changes:
- Added RISCV64 RVV support for both Base64 encode and decode fast paths, with automatic fallback to generic logic when needed.
- Introduced adaptive vector-length processing to improve portability and throughput across different RVV-capable CPUs.
- Added RISCV64-specific asm tests and generic-vs-RVV benchmarks for correctness and performance validation.
- Added a new riscv64-qemu GitHub Actions workflow and updated README/README-CN CI badges and architecture lists.
- CI now covers RISCV64 QEMU testing end-to-end, and the new RVV path is verified passing.
v0.8.0
v0.7.0
Notable Changes:
- upgrade go to at least 1.23.0
By now Go 1.24.0 has been released, and Go 1.22 is no longer supported
per the Go Release Policy (https://go.dev/doc/devel/release#policy).