github iskorotkov/avro v2.32.0

6 hours ago

Release notes — v2.32.0

Highlights

  • Configurable buffer sizes — new Config fields SlabSize, WriteBufSize, and ReadBufSize let callers tune Reader/Writer memory behavior.
  • Faster map decoding — typed decode is 14–16% faster with ~60% less memory and ~99% fewer allocations; generic decode is up to 7% faster with 15% less memory.
  • Faster Skip for large arrays/maps and faster reader hot paths via better inlining and bounds-check elimination.
  • Bug fixes for local-timestamp logical types and duplicate enum codegen.
  • Toolchain bump — CI now builds on Go 1.26; code modernized accordingly.

Features

  • feat: add configurable SlabSize, WriteBufSize, ReadBufSize (config.go) — three new Config fields, all defaulting to the previous behavior (1024-byte slab, 512-byte read/write buffers).
  • feat: speed up huge skip (codec_skip.go) — fast-path skip for large array/map blocks, courtesy of @klajok (#2).

Performance

  • perf(map): reuse existing values and defer creation with size hint (codec_map.go) — typed map decode 14–16% faster, ~60% less memory, ~99% fewer allocs; generic map decode up to 7% faster, 15% less memory.
  • perf(reader): optimize inlining and bounds checks — reduces overhead on hot read paths.

Fixes

  • fix(resolver): register missing logical types for local timestamps (resolver.go) — LocalTimestampMillis and LocalTimestampMicros are now registered with the default TypeResolver.
  • fix: Enum types are being duplicated in the Go code generation (gen/gen.go) — resolves upstream hamba#595.

Chore / CI

  • CI now runs on Go 1.26; go1.26.0 fix and Go 1.24 modernization passes applied across the codebase.
  • golangci-lint upgraded to 2.9.
  • Updated benchmarks, README, LICENSE, and added an ISSUES.md tracking unresolved upstream items.

Notes for users

  • No public API removals; all new config fields are opt-in and fall back to existing defaults when zero.
  • Fork users on Go 1.23 should upgrade to Go 1.24+ (module already declared go 1.24.0 in v2.31.0; CI now validates on 1.26).

Full changelog: git log v2.31.0..v2.32.0

Don't miss a new avro release

NewReleases is sending notifications on new releases.