Project: jackson-datatypes-text
Modules:
  jackson-dataformat-csv
  jackson-dataformat-properties
  jackson-dataformat-yaml
Versions 3.x (for earlier see VERSION-2.x)

Contains streaming API format codec implementations for supported textual formats
(except for xml which is in separate repo)
as well as support for integration via `jackson-databind` (`ObjectMapper` subtype
implementations)
 
------------------------------------------------------------------------
=== Releases ===
------------------------------------------------------------------------

3.2.4 (18-Oct-2026)

#726: (toml) `TomlGenerator.writeString(char[], int, int)` writes wrong characters
  or throws `ArrayIndexOutOfBoundsException` when value needs escaping
 (fix by @pjfanning)
#746: (toml) Fix multiple `TomlGenerator` value-writing issues: `writeUTF8String()`
  writes an extra empty line; `writeRawValue()` writes no line feed after value;
  `writeBinary()` silently pads invalid ranges with zero bytes; `writeString()`,
  `writeRaw()` do not validate offset/length; String value with unsupported
  characters fails after key is written, with misleading "Key contains ..." message

3.2.3 (21-Sep-2026)

#723: (toml) `TomlGenerator.writeNumber(short)` writes an extra empty line
  after the value (calls `writeValueEnd()` twice)
#736: (toml) Support `StreamReadConstraints` maxNameLength/maxDocumentLength
  in TOML parser
 (fix by @pjfanning)
#737: (yaml) Support `StreamReadConstraints.maxDocumentLength()` for YAML parser
 (fix by @pjfanning)
#738: (properties) Support `StreamReadConstraints.maxDocumentLength()` for
  Properties parser
 (fix by @pjfanning)

3.2.2 (14-Aug-2026)

#701: (yaml) `ALWAYS_QUOTE_NUMBERS_AS_STRINGS` does not quote exponent (`1e5`)
  and non-finite (`.inf`, `.nan`) number forms
 (reported by @EverNife)
 (fix contributed by @seonwooj0810)
#702: (toml) Expand nesting depth checks for dotted keys [CVE-2026-85278]
 (contributed by @yawkat)
#707: (yaml) Should constraint deeply nested YAML merge keys in
  `YAMLAnchorReplayingParser` (GHSA-255r-36wv-4qpr)
 (reported by Michał M)

3.2.1 (10-Jul-2026)

No changes since 3.2.1

3.2.0 (08-Jun-2026)

#9: (csv) Incorrect detection of `hasNextValue()` for simple iteration with `String[]`
 (fix by @cowtowncoder, w/ Claude code)
#22: (yaml) YAML anchors don't seem to work with `@JsonCreator`
 (reported by Rye G)
 (fix by @cowtowncoder, w/ Claude code)
#25: (yaml) Yaml anchor error when `@JsonSubTypes` used
 (reported by @mopsop)
 (fix by @cowtowncoder, w/ Claude code)
#36 (yaml) Allow emitting YAML comments
 (requested by Daniel L)
 (fix by @cowtowncoder, w/ Claude code)
#109: (yaml) `YAMLMapper` doesn't close output file if an error occurs
 (reported by Martin W)
 (fix by @cowtowncoder, w/ Claude code)
#210: (csv) Quote strings with leading/trailing spaces in csv
  (`CsvWriteFeature.QUOTE_STRINGS_WITH_LEADING_TRAILING_WHITESPACE`)
 (requested by @sfzhi)
 (implemented by @cowtowncoder, w/ Claude code)
#214: (yaml) Expose custom tags via `YAMLParser.getRawTag()`
 (requested by Alexander T)
 (fix by @cowtowncoder, w/ Claude code)
#264: (csv) `CsvMapper` applies alphabetic Property Order  for Java Records
 (reported by @alexpartsch)
 (fix by @cowtowncoder)
#276: (yaml) Support opting out of octal number interpretation (like "0444");
  add `YAMLReadFeature.PARSE_OCTAL_NUMBERS`
 (requested by David X)
 (fix by @cowtowncoder, w/ Claude code)
#292: (yaml) YAML anchor `UnresolvedForwardReference` with builder
 (reported by Aleksandr D)
 (fix by @cowtowncoder, w/ Claude code)
#327: (csv) Catch and report duplicate column names in header line (add
  `CsvReadFeature.FAIL_ON_DUPLICATE_HEADER_COLUMNS`)
 (fix by @cowtowncoder, w/ Claude code)
#355: (csv) Allow mapping empty cells (columns) as "absent" properties (i.e. skip)
  by `CsvReadFeature.EMPTY_UNQUOTED_STRING_AS_MISSING`
 (requested by @hosswald)
 (fix by @cowtowncoder, w/ Claude code)
#368: (csv) Allow skipping csv rows with only empty values (line of commas)
 (requested by @GitXm123)
 (fix by @cowtowncoder, w/ Claude code)
#623: (yaml) Add support for YAML 1.2 non-finite (Infinite, -Infinite, NaN)
  numbers, Octal notation
 (contributed by Michael C)
#631: (csv) Add `CsvFactory.builder().maxQuoteCheckChars()` for configuring
  heuristic quoting check
 (fix by @cowtowncoder, w/ Claude code)
#634: (csv) Support for `StreamReadConstraints.maxNameLength` for CSV parsing
 (fix by @cowtowncoder, w/ Claude code)
#636: (yaml) Support for `StreamReadConstraints.maxNameLength` and
  `maxStringLength` for YAML parsing
 (fix by @cowtowncoder, w/ Claude code)
#638: (properties) Support for `StreamReadConstraints.maxNameLength` and
  `maxStringLength` for Properties parsing
 (fix by @cowtowncoder, w/ Claude code)
#643: (csv) `CsvParser` doesn't handle whitespace outside of quoted values correctly
 (reported by @tomdz)
 (fix by @cowtowncoder, w/ Claude code)
#657: (csv) CSV header validation ignores `ACCEPT_CASE_INSENSITIVE_PROPERTIES`:
  add `CsvReadFeature.CASE_INSENSITIVE_HEADERS`
 (reported by Tomas H)
 (fix by @cowtowncoder, w/ Claude code)
#663: (toml) TOML parser: int64 max value parsed as truncated long
 (reported by @rajulbhatnagar)
  (fix by @yawkat)
#664: (toml) TOML parser: space separator in offset/local datetime not accepted 
 (reported by @rajulbhatnagar)
 (fix by @yawkat)
#665: (toml) TOML parser: leading UTF-8 BOM rejected as 'Unknown token'
 (reported by @rajulbhatnagar)
 (fix by @yawkat)
#666: (toml) TOML parser: invalid UTF-8 byte sequences not rejected
 (reported by @rajulbhatnagar)
 (fix by @yawkat)
#667: (toml) TOML parser: out-of-range datetime/date/time field values not rejected
 (reported by @rajulbhatnagar)
 (fix by @yawkat)
#668: (toml) TOML parser: surrogate-half unicode escapes accepted in strings
 (reported by @rajulbhatnagar)
 (fix by @yawkat)
#669: (toml) TOML parser: invalid dotted-key extension of explicit
  tables / AOT not rejected
 (reported by @rajulbhatnagar)
 (fix by @yawkat)
#685: (toml) Improve TOML 1.1.0 compatibility (parsing)
 (fix by @yawkat)

3.1.8 (17-Oct-2026)

#726: (toml) `TomlGenerator.writeString(char[], int, int)` writes wrong characters
  or throws `ArrayIndexOutOfBoundsException` when value needs escaping
 (fix by @pjfanning)
#746: (toml) Fix multiple `TomlGenerator` value-writing issues: `writeUTF8String()`
  writes an extra empty line; `writeRawValue()` writes no line feed after value;
  `writeBinary()` silently pads invalid ranges with zero bytes; `writeString()`,
  `writeRaw()` do not validate offset/length; String value with unsupported
  characters fails after key is written, with misleading "Key contains ..." message

3.1.7 (21-Sep-2026)

#723: (toml) `TomlGenerator.writeNumber(short)` writes an extra empty line
  after the value (calls `writeValueEnd()` twice)
#736: (toml) Support `StreamReadConstraints` maxNameLength/maxDocumentLength
  in TOML parser
 (fix by @pjfanning)
#737: (yaml) Support `StreamReadConstraints.maxDocumentLength()` for YAML parser
 (fix by @pjfanning)
#738: (properties) Support `StreamReadConstraints.maxDocumentLength()` for
  Properties parser
 (fix by @pjfanning)

3.1.6 (14-Aug-2026)

#701: (yaml) `ALWAYS_QUOTE_NUMBERS_AS_STRINGS` does not quote exponent (`1e5`)
  and non-finite (`.inf`, `.nan`) number forms
 (reported by @EverNife)
 (fix contributed by @seonwooj0810)
#702: (toml) Expand nesting depth checks for dotted keys [CVE-2026-85278]
 (contributed by @yawkat)
#707: (yaml) Should constraint deeply nested YAML merge keys in
  `YAMLAnchorReplayingParser` (GHSA-255r-36wv-4qpr)
 (reported by Michał M)

3.1.5 (07-Jul-2026)

No changes since 3.1.4

3.1.4 (29-May-2026)

#679: (toml) Validate integer length for hex/octal/binary radix literals
 (fix by @tonghuaroot)
#680: (yaml) Restore `validateIntegerLength()` check in `_decodeBigInt`
 (fix by @tonghuaroot)

3.1.3 (01-May-2026)
3.1.2 (11-Apr-2026)

No changes since 3.1.1

3.1.1 (27-Mar-2026)

#615: (csv) Feature `CsvReadFeature.EMPTY_UNQUOTED_STRING_AS_NULL` ignored
 (reported by Henning L)
#624: (yaml) Fix YAML anchor replaying parser producing invalid sequence of events
  when using the merge operator inside an anchor
 (fix by Théo S)

3.1.0 (23-Feb-2026)

#479: (csv) `STRICT_CHECK_FOR_QUOTING` does not quote value that contains newline character
 (reported by @zhuhw)
#568: (yaml) YAML - ScannerException on block scalar "\n"
 (reported by @benken-parasoft)
 (fix by Andrey S)
#579: (csv): Incorrect detection of missed columns in header line if columns
  reordering is enabled
 (fix by Alexander F)
#581: (csv, toml, yaml) Add `isEnabled()` methods for format-specific
  features to mappers 
#590: (yaml) Upgrade to the latest version of SnakeYAML Engine (3.0.1)
 (contributed by Andrey S)
#596: (yaml) Port `YAMLAnchorReplayingFactory` from 2.x and improve it
  to handle nested anchors
 (contributed by Théo S)
#601: (csv) Reader should allow separating plain `nullValue` and quoted value `"nullValue"`
 (requested by Dmitry B)
#604: (csv) Remove `CsvParser.enable()`/`.disable()`/`.configure()` (reduce mutability)
#608: (csv, toml, yaml) Fix issue with UTF-8 surrogate pair decoding
 (fixed by @pjfanning)
#609: (yaml) Catch and rethrow yaml engine internal exception on generation
 (fixed by @pjfanning)
#613: (csv) Support `StreamReadConstraints.maxDocumentLength()` validation
  for CSV module

3.0.3 (28-Nov-2025)
3.0.2 (07-Nov-2025)
3.0.1 (21-Oct-2025)

No changes since 3.0.0

3.0.0 (03-Oct-2025)

#106: (yaml) Upgrade to `snakeyaml-engine` (from classic `snakeyaml`)
 (contributed by Andrey S)
#215: (yaml) .without(YAMLGenerator.Feature.WRITE_DOC_START_MARKER)
  seems to be ignored
 (reported by @jdimeo)
#320: Rename "com.fasterxml.jackson" -> "tools.jackson"
#374: (csv) Should verify that escape character set if enabling
  `CsvGenerator.Feature.ESCAPE_QUOTE_CHAR_WITH_ESCAPE_CHAR`
 (suggested by @SebastianSolidwork)
#510: (csv) JSTEP-8: rename `CsvParser.Feature` as `CsvReadFeature`,
  `CsvGenerator.Feature` as `CsvWriteFeature`
#512: (yaml) JSTEP-8: rename `YAMLParser.Feature` as `YAMLReadFeature`,
  `YAMLGenerator.Feature` as `YAMLWriteFeature`
#531: Change 3.0 to use `module-info.java` directly [JSTEP-11]
- (csv) Remove `CsvMappingException` (replaced by `CsvRead-/-WriteException`)
- Add `XxxMapper.shared()` methods for getting globally shared default instances
- Minimum Java baseline: Java 17
- Properties module name now: "tools.jackson.dataformat.properties" (not "...javaprop")
- (yaml) `snakeyaml-engine` to 2.10 (from 2.8)
- Branch rename "master" -> "3.x" [JSTEP-12]
