Release notes — v2.32.0
Highlights
- Configurable buffer sizes — new
ConfigfieldsSlabSize,WriteBufSize, andReadBufSizelet 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
Skipfor 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 newConfigfields, 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) —LocalTimestampMillisandLocalTimestampMicrosare now registered with the defaultTypeResolver.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 fixand Go 1.24 modernization passes applied across the codebase. golangci-lintupgraded to 2.9.- Updated benchmarks, README, LICENSE, and added an
ISSUES.mdtracking 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.0in v2.31.0; CI now validates on 1.26).
Full changelog: git log v2.31.0..v2.32.0