Skip to content

v0.10.0 (2026-6-23)

Latest

Choose a tag to compare

@emmansun emmansun released this 23 Jun 06:02
24e9d2a

New Features

  • WHATWG Forgiving Base64 Decoding (#43)
    Added Forgiving() method on Encoding to 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 using xvpermi.q for 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 the VTBX opcode 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/sys from v0.41.0v0.46.0.