Changelog
Dates are the tag dates. Anything not listed did not change.
2.4.1 — 12 June 2026
- Fixed a reader stall when
BufferSizewas set below one record length. The value is now rounded up rather than accepted, and a warning is no longer the only symptom. PositionError.Offsetwas one record too high whenOnErrorreturnedSkip. Skipped records no longer shift the reported position.
2.4.0 — 4 May 2026
- Added
Record.IsBlank, so an optional field can be distinguished from a field that happens to decode to the zero value. - Added
Packedfield type: packed decimal, two digits per byte, sign in the low nibble. - The writer now reports
ErrFieldOverflowwith the offending value's length instead of only the declared width.
2.3.1 — 19 February 2026
- Latin-1 decoding no longer allocates for records that contain only ASCII, which is most of them. Throughput on mixed archives improved by roughly a fifth.
- Documentation: the guide said
Closewas optional on a writer. It is not.
2.3.0 — 30 October 2025
- Added
Terminator: Auto, which decides betweenNone,LFandCRLFfrom the first record and then holds that decision for the rest of the file rather than re-deciding per record. Layout.Validatenow rejects aScaleon a non-decimal field. Previously it was ignored, which made a typo invisible.
2.2.0 — 6 June 2025
- Added the overpunched sign convention to
Integer, for files produced by systems that never left the mainframe. - Readers no longer keep the whole first block alive after
Clone.
Support policy
The 2.x line receives fixes for correctness and for data loss. It does not receive new field types; those go to the next minor release. A release is supported until two minor releases have followed it, and no release has ever been withdrawn.
| 2.4.x | Current. Fixes and new features. |
|---|---|
| 2.3.x | Supported. Correctness fixes only. |
| 2.2.x | Supported until 2.5.0. |
| 2.1.x and earlier | End of life. No further releases planned. |