github.com/moov-io/iso8583
v0.26.1
#2516 most downloaded on Go modules
moov-io/iso8583
What this package is like to depend on
Last release 10 days ago
13 Aug 2026
Ships fairly regularly
a new release about every 3 weeks
Rarely documented
notes for 10 of 91 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
205 releases · first in 2020
16 releases in the last 12 months
see the full history below
Release timeline
205 releases · Jul 2020 to Aug 2026Releases
latest 60 of 205-
v0.26.2-0.20260813235143-17f15162ffff13 Aug 2026 pre-releaseNothing published for this version
-
v0.26.113 Aug 2026Release 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-38361d20b31d07 Aug 2026 pre-releaseNothing published for this version
-
v0.26.1-0.20260708231246-0683146d967b08 Jul 2026 pre-releaseNothing published for this version
-
v0.26.1-0.20260608220115-45c6b37cb75d08 Jun 2026 pre-releaseNothing published for this version
-
v0.26.010 Apr 2026Release 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 2026 pre-releaseNothing published for this version
-
v0.25.304 Mar 2026 -
v0.25.3-0.20260220120310-69c7ef14559120 Feb 2026 pre-releaseNothing published for this version
-
v0.25.226 Jan 2026 -
v0.25.115 Dec 2025 -
v0.25.006 Dec 2025Release 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-bdf5ff34601d02 Dec 2025 pre-releaseNothing published for this version
-
v0.24.002 Dec 2025Release 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 2025Release notes
Open source → -
v0.23.5-0.20251021152053-eb817e9d75ea21 Oct 2025 pre-releaseNothing published for this version
-
v0.23.5-0.20250807203721-706777ebe52307 Aug 2025 pre-releaseNothing published for this version
-
v0.23.5-0.20250710025246-9bafc8578d4910 Jul 2025 pre-releaseNothing published for this version
-
v0.23.430 Jun 2025Release 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-42c34d8a393807 Jun 2025 pre-releaseNothing published for this version
-
v0.23.306 Jun 2025Release 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-a63c5d71bede05 Jun 2025 pre-releaseNothing published for this version
-
v0.23.3-0.20250605154242-e529380be41a05 Jun 2025 pre-releaseNothing published for this version
-
v0.23.229 Jan 2025Nothing published for this version
-
v0.23.127 Jan 2025Nothing published for this version
-
v0.23.027 Jan 2025Nothing published for this version
-
v0.22.4-0.20241123164333-9183e0ca4e9b23 Nov 2024 pre-releaseNothing published for this version
-
v0.22.312 Nov 2024Nothing published for this version
-
v0.22.3-0.20241112200227-60f53999184812 Nov 2024 pre-releaseNothing published for this version
-
v0.22.3-0.20241108042605-1f2f3afe37f408 Nov 2024 pre-releaseNothing published for this version
-
v0.22.228 Oct 2024Nothing published for this version
-
v0.22.2-0.20241028154340-c352ad7741f728 Oct 2024 pre-releaseNothing published for this version
-
v0.22.2-0.20241027145108-8c09e8283ff827 Oct 2024 pre-releaseNothing published for this version
-
v0.22.2-0.20241002165148-b2065f8b881902 Oct 2024 pre-releaseNothing published for this version
-
v0.22.109 Sep 2024Nothing published for this version
-
v0.22.1-0.20240909193955-55330b06510409 Sep 2024 pre-releaseNothing published for this version
-
v0.22.1-0.20240819140728-159e2941ab4119 Aug 2024 pre-releaseNothing published for this version
-
v0.22.015 Jul 2024Nothing published for this version
-
v0.21.4-0.20240715160329-dfac6bdd86a015 Jul 2024 pre-releaseNothing published for this version
-
v0.21.4-0.20240712211002-edc9020f339812 Jul 2024 pre-releaseNothing published for this version
-
v0.21.4-0.20240704073057-85239638962d04 Jul 2024 pre-releaseNothing published for this version
-
v0.21.4-0.20240611091119-0e5c8d4c921b11 Jun 2024 pre-releaseNothing published for this version
-
v0.21.311 Jun 2024Nothing published for this version
-
v0.21.3-0.20240607210908-77c1c9cbef1407 Jun 2024 pre-releaseNothing published for this version
-
v0.21.3-0.20240506140531-a234a4a4118c06 May 2024 pre-releaseNothing published for this version
-
v0.21.3-0.20240304150911-cd615f39672404 Mar 2024 pre-releaseNothing published for this version
-
v0.21.3-0.20240216180924-0813da9c062116 Feb 2024 pre-releaseNothing published for this version
-
v0.21.3-0.20240116134112-e656fa30fe5316 Jan 2024 pre-releaseNothing published for this version
-
v0.21.212 Jan 2024Nothing published for this version
-
v0.21.2-0.20240112225916-27feb74ecf2b12 Jan 2024 pre-releaseNothing published for this version
-
v0.21.130 Nov 2023Nothing published for this version
-
v0.21.030 Oct 2023Nothing published for this version
-
v0.20.2-0.20231030175603-8f4cb18cf46e30 Oct 2023 pre-releaseNothing published for this version
-
v0.20.2-0.20231010194914-add4df165bc510 Oct 2023 pre-releaseNothing published for this version
-
v0.20.2-0.20231006185658-f42243f8389406 Oct 2023 pre-releaseNothing published for this version
-
v0.20.126 Sep 2023Nothing published for this version
-
v0.20.026 Sep 2023Nothing published for this version
-
v0.19.326 Sep 2023Nothing published for this version
-
v0.19.3-0.20230925174208-a0dcd00569a725 Sep 2023 pre-releaseNothing published for this version
-
v0.19.3-0.20230922192946-2f27b3c8b7b022 Sep 2023 pre-releaseNothing published for this version