Releases: osiegmar/FastCSV
Releases · osiegmar/FastCSV
Release list
v4.3.1
4.3.1 (2026-06-29)
Bug Fixes
- detect BOM correctly on short streams in BomInputStream (efc1633)
- prevent ArrayIndexOutOfBoundsException in NamedCsvRecord.findFields (0a05a0b)
- prevent data corruption after seek in IndexedCsvReader with multibyte charsets (c7d45ff)
- prevent skipLine from resurrecting an unterminated last line at EOF (be02dab)
- reject non-ASCII-compatible charsets in IndexedCsvReader (8cc6ea8)
v4.3.0
v4.2.0
v4.1.1
Release v4.1.0
Release v4.1.0
🚀 Features
- 960d8c8 ignore same comment character if comments are ignored
🧰 Tasks
🛠 Build
- 8a6759f disable configuration cache for jReleaser
- 4b582d0 deps: update jReleaser dependency
- b55eb75 updated gradle tasks
- ee41d8a OSS-Fuzz requires JDK 17
- 05c99fb add foojay-resolver to buildSrc
- 9e029e6 website: update dependencies
- ad76e78 update to JUnit 6
- eb5af63 use Java 25 to build
- 0c142d9 codeql does currently not support arm-based runners
- 1d141c0 website: update dependencies
- e844d06 update setup-java action
- 5b79b63 try arm-based runner
- 313e584 try arm-based runner
- 3dc1d4d update checkout action
- c4b0aa8 website: update dependencies
- b35ffc3 updated Gradle, enabled configuration cache
📝 Documentation
Release v4.0.0
See the upgrade guide on how to switch from version 3.x smoothly.
🚀 Features
- 18688cc add returnHeader to NamedCsvRecordHandler to allow early-access to the header #147, closes #147
- e006347 add
ofSingleCsvRecordmethods toCsvReaderfor convenience - 60774d3 🚨 enforce unique headers by default
- bd9991f introduce relaxed parsing mode for CsvReader
🐛 Fixes
- 76dff29 don't call peek line predicate with empty string if reached EOF
🔄️ Changes
- a565316 add missing finals
- 57da808 optimize performance of relaxed parser
- 77b986c change skipLine method to void and handle EOF exceptions
- c815d3e simplify BOM handling in CsvReader #149, closes #149
- 52fe46d add class retention to allow incremental builds
- cef4a2b later buffer expansion
- 47cca27 refactor EOF handling when peeking lines
- bba1412 introduce Nullable annotation
- 98aeaab 🚨 return Optional for throwable in status listener
- 1130197 use errorprone
- ef14cb7 change exception type from IllegalArgumentException to IllegalStateException for relaxed mode validation
- b1b5f23 simplify quoted parsing logic in RelaxedCsvParser
- 08194a4 remove dead code
- ced8dd3 introduce LookaheadReader to improve the performance of RelaxedCsvParser
- 1bc5f26 🚨 convert FieldModifiers class to enum and move modify method to FieldModifier interface
- d1e5943 remove unnecessary 'this' keyword in variable assignments
- cb5a999 🚨 rename quoteNonEmpty method to quoteValue and made quoteStrategy non-nullable
- 5fbfe91 update method name for allowing duplicate header fields in NamedCsvRecordHandler
- 5980793 simplify materializeField logic and adjust return flow
- 056c865 🚨 CSV callback handling and record type logic
- 85bbfdf 🚨 Refactor field count handling in CsvReader
- 4107892 simplify validation error messages and add a new test
- dd00979 extract csv parser interface to allow multiple implementations
- 3ac07d1 🚨 strict handling of characters after closing quote, by default
- 9d8511b seal AbstractInternalCsvCallbackHandler for internal use (as documented before)
- a33384e use unnamed variables (_) in lambdas to simplify tests
- 2babea6 🚨 disable automatic buffer flushing for writer use
- 403c2f6 use skipNBytes for skipping a detected BOM
- 0d05add 🚨 removed deprecated code (Limits and SimpleFieldModifier)
- 9e620a3 corrected method name in error message
- 006380c 🚨 remove the RecordWrapper
- 430adef add Serial annotation
- 724bc38 🚨 changed implementation of CsvIndex and CsvPage to Java records
- 3e11bfc use formatted Strings
- 01f5cb3 use switch expression
🧪 Tests
🧰 Tasks
- 3e3edcb update dependencies for test and build; refactor internal code to keep SpotBugs happy
- 0a0136c prepare (clean) upgrading.md for a new major release
- ba1a894 bump version to 4.0.0-SNAPSHOT
🛠 Build
- f990d39 update resolver plugin
- 03f4a49 bump version to 4.0.0
- f14dab0 updated Gradle
- 0d97d92 updated build/test dependencies
- 2cd4ac1 add SPDX-License-Identifier to MANIFEST.MF
- a3aafac update pitest version for Java 24 compatibility
- 541b39e include LICENSE file in META-INF directory for use in dependent libraries
- d14aef6 enable parameter names for tests with @ParameterizedTest
- 7584ab9 update PMD and remove unnecessary suppressions
- d8fadf0 🚨 require Java 17 / Android 34
- 280ab79 let JReleaser manage the CHANGELOG.md
📝 Documentation
v3.7.0
v3.6.0
Added
- Configuration of maximum fields, maximum field size, and maximum record size via record handler
- Fluent configuration for
CsvRecordHandler,NamedCsvRecordHandler, andStringArrayHandler maxBufferSize(int)inCsvReaderBuilderandIndexedCsvReaderBuilderto alter the maximum buffer size of the parser
Changed
- Use ReentrantLock in IndexedCsvReader instead of synchronized to prevent pinning of virtual threads
- More precise error messages when exceeding the maximum field or record size
- More precise error when parsing error occurs within
IndexedCsvReader - Apply length constraints (maximum field size and maximum record size) after applying field modifiers
Deprecated
- Setting the maximum field size (and maximum buffer size) via system property
fastcsv.max.field.size - Setting the maximum field count per record via system property
fastcsv.max.field.count - Constructor initialization of
CsvRecordHandler,NamedCsvRecordHandler, andStringArrayHandler