Last release today
26 Aug 2026
Ships fairly regularly
a new release about every 3 weeks
Rarely documented
notes for 10 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
207 releases · first in 2020
Release timeline
207 releases since 2020Releases
- v0.26.2-0.20260826142753-e37da86d340a26 Aug 2026pre-release
Nothing published for this version
- v0.26.2-0.20260825205837-a8ec4f849a6925 Aug 2026pre-release
Nothing published for this version
- v0.26.2-0.20260813235143-17f15162ffff13 Aug 2026pre-release
Nothing published for this version
- v0.26.113 Aug 2026
Release notes
Open source →What's Changed
- fix(composite): return error on truncated unknown TLV value instead of panicking (#415) by @SAY-5 in #416
- test(fuzz): add native Go fuzzers for Unpack/Pack and MessageScanner by @adamdecaf in #425
- ci(fuzz): anchor -fuzz patterns to avoid multi-match failures by @adamdecaf in #428
- fix(specs): register missing field types and encodings in the spec builder by @andresantoniuk in #430
- fix(composite): bounds-check unknown TLV length in skip path by @SashaMIT in #427
New Contributors
- @SAY-5 made their first contribution in #416
- @andresantoniuk made their first contribution in #430
- @SashaMIT made their first contribution in #427
Full Changelog: v0.26.0...v0.26.1
- v0.26.1-0.20260807203210-38361d20b31d7 Aug 2026pre-release
Nothing published for this version
- v0.26.1-0.20260708231246-0683146d967b8 Jul 2026pre-release
Nothing published for this version
- v0.26.1-0.20260608220115-45c6b37cb75d8 Jun 2026pre-release
Nothing published for this version
- v0.26.010 Apr 2026
Release notes
Open source →What's Changed
- fix: support TagSpec TLV fields in JSON export/import by @alovak in #408
- feat: add YAML serialization/deserialization for message specs by @alovak in #409
- feat: add support for re-marshaling unknown TLV tags in MarshalPath by @MassimilianoPoggiQonto in #412
- feat: add MessageScanner for partial message parsing by @alovak in #413
New Contributors
- @MassimilianoPoggiQonto made their first contribution ❤️ in #412
Full Changelog: v0.25.3...v0.26.0
- v0.25.4-0.20260325210811-dbe9f2b728d925 Mar 2026pre-release
Nothing published for this version
- v0.25.34 Mar 2026
- v0.25.3-0.20260220120310-69c7ef14559120 Feb 2026pre-release
Nothing published for this version
- v0.25.226 Jan 2026
- v0.25.115 Dec 2025
- v0.25.06 Dec 2025
Release notes
Open source →What's Changed
- allow preserving unknown fields instead of discarding them by @alovak in #393
- Fix getters by @alovak in #396
⚠️ Breaking Changes
GetField() now returns nil for unset fields:
GetField(id)returnsnilif the field is not set or not defined in the specification, whereas previously it always returned a field instance.Migration:
- Add nil checks before using the returned field
- Or migrate to
GetString(id)/GetBytes(id)which handle nil safely and return zero values for unset fields
This change aligns with the new lazy field loading behavior and makes field presence checking explicit. It fixes the issue introduced in v0.24.0 where getting the value of a field that wasn't set was setting it.
Full Changelog: v0.24.0...v0.25.0
- v0.24.1-0.20251202115857-bdf5ff34601d2 Dec 2025pre-release
Nothing published for this version
- v0.24.02 Dec 2025
Release notes
Open source →What's Changed
Lazy load field by @alovak in #392
Performance Improvements
Lazy field loading delivers significant performance gains:
Operation Time Memory Allocations Marshal -27% -33% -10% Unpack -29% -28% -5% Fields are now created on-demand rather than pre-allocated from the specification. Only fields actually used in a message consume memory.
In production scenarios where specs define many more fields than individual message types use, improvements across all metrics can exceed 80%.
Features
- Lazy field instantiation: Fields are created only when needed via internal
getOrCreateField()andcreateField()methods - New Instantiator interface: Allows custom field types to define their own instantiation logic via
NewInstance()method
⚠️ Breaking Changes
-
Partial unpacking on failure: When unpacking fails on a field, that field is now created on the message/composite with its zero value, whereas previously it wasn't created at all. This allows partial data recovery but changes behavior for error handling code that checks field presence.
-
Error message changes: Several error messages have been updated for clarity:
- "field X does not exist" → "field X is not defined in the spec"
- "no specification found" → "is not defined in the spec"
- Error messages now include additional context
-
Removed exported APIs:
CompositeWithSubfieldsinterfaceConstructSubfields()method on CompositeCreateSubfield()functionCreateSubfields()function
Full Changelog: v0.23.5...v0.24.0
- Lazy field instantiation: Fields are created only when needed via internal
- v0.23.527 Nov 2025
Release notes
Open source → - v0.23.5-0.20251021152053-eb817e9d75ea21 Oct 2025pre-release
Nothing published for this version
- v0.23.5-0.20250807203721-706777ebe5237 Aug 2025pre-release
Nothing published for this version
- v0.23.5-0.20250710025246-9bafc8578d4910 Jul 2025pre-release
Nothing published for this version
- v0.23.430 Jun 2025
Release notes
Open source →What's Changed
- fix: a binary field can marshal to a named string by @Inuart in #371
- docs: clarify composite spec.Legth by @alovak in #360
- docs: clarify usage DisableAutoExpand of the Bitmap field spec by @alovak in #368
Full Changelog: v0.23.3...v0.23.4
- v0.23.4-0.20250607001446-42c34d8a39387 Jun 2025pre-release
Nothing published for this version
- v0.23.36 Jun 2025
Release notes
Open source →What's Changed
- docs: rework, reorg and improve readme by @alovak in #345
- fix(deps): update module golang.org/x/text to v0.22.0 by @renovate in #347
- fix: DecodeLength() for long values in variable length HEX field by @svz-ya in #348
- chore(deps): update golang docker tag to v1.24 by @renovate in #349
- docs: add guide for composite fields by @alovak in #352
- fix(deps): update module golang.org/x/text to v0.23.0 by @renovate in #353
- docs: Explain that subfields can get reordered when packing by @Inuart in #354
- fix a tiny bug by @Viminice in #358
- fix: unmarshaling to []byte for Binary and String fields by @alovak in #364
- fix: resolve G115 integer overflow and exhaustive warnings by @alovak in #365
- feat: add support for anonymous embedded structs in Marshal/Unmarshal by @lsadehaan in #361
New Contributors
- @svz-ya made their first contribution in #348
- @Viminice made their first contribution in #358
- @lsadehaan made their first contribution in #361
Full Changelog: v0.23.2...v0.23.3
- v0.23.3-0.20250605174337-a63c5d71bede5 Jun 2025pre-release
Nothing published for this version
- v0.23.3-0.20250605154242-e529380be41a5 Jun 2025pre-release
Nothing published for this version
- v0.23.229 Jan 2025
Nothing published for this version
- v0.23.127 Jan 2025
Nothing published for this version
- v0.23.027 Jan 2025
Nothing published for this version
- v0.22.4-0.20241123164333-9183e0ca4e9b23 Nov 2024pre-release
Nothing published for this version
- v0.22.312 Nov 2024
Nothing published for this version
- v0.22.3-0.20241112200227-60f53999184812 Nov 2024pre-release
Nothing published for this version
- v0.22.3-0.20241108042605-1f2f3afe37f48 Nov 2024pre-release
Nothing published for this version
- v0.22.228 Oct 2024
Nothing published for this version
- v0.22.2-0.20241028154340-c352ad7741f728 Oct 2024pre-release
Nothing published for this version
- v0.22.2-0.20241027145108-8c09e8283ff827 Oct 2024pre-release
Nothing published for this version
- v0.22.2-0.20241002165148-b2065f8b88192 Oct 2024pre-release
Nothing published for this version
- v0.22.19 Sept 2024
Nothing published for this version
- v0.22.1-0.20240909193955-55330b0651049 Sept 2024pre-release
Nothing published for this version
- v0.22.1-0.20240819140728-159e2941ab4119 Aug 2024pre-release
Nothing published for this version
- v0.22.015 Jul 2024
Nothing published for this version
- v0.21.4-0.20240715160329-dfac6bdd86a015 Jul 2024pre-release
Nothing published for this version
- v0.21.4-0.20240712211002-edc9020f339812 Jul 2024pre-release
Nothing published for this version
- v0.21.4-0.20240704073057-85239638962d4 Jul 2024pre-release
Nothing published for this version
- v0.21.4-0.20240611091119-0e5c8d4c921b11 Jun 2024pre-release
Nothing published for this version
- v0.21.311 Jun 2024
Nothing published for this version
- v0.21.3-0.20240607210908-77c1c9cbef147 Jun 2024pre-release
Nothing published for this version
- v0.21.3-0.20240506140531-a234a4a4118c6 May 2024pre-release
Nothing published for this version
- v0.21.3-0.20240304150911-cd615f3967244 Mar 2024pre-release
Nothing published for this version
- v0.21.3-0.20240216180924-0813da9c062116 Feb 2024pre-release
Nothing published for this version
- v0.21.3-0.20240116134112-e656fa30fe5316 Jan 2024pre-release
Nothing published for this version
- v0.21.212 Jan 2024
Nothing published for this version
- v0.21.2-0.20240112225916-27feb74ecf2b12 Jan 2024pre-release
Nothing published for this version
- v0.21.130 Nov 2023
Nothing published for this version
- v0.21.030 Oct 2023
Nothing published for this version
- v0.20.2-0.20231030175603-8f4cb18cf46e30 Oct 2023pre-release
Nothing published for this version
- v0.20.2-0.20231010194914-add4df165bc510 Oct 2023pre-release
Nothing published for this version
- v0.20.2-0.20231006185658-f42243f838946 Oct 2023pre-release
Nothing published for this version
- v0.20.126 Sept 2023
Nothing published for this version
- v0.20.026 Sept 2023
Nothing published for this version
- v0.19.326 Sept 2023
Nothing published for this version