All Versions
20
Latest Version
Avg Release Cycle
214 days
Latest Release
24 days ago
Changelog History
Page 1
Changelog History
Page 1
-
v4.3.0 Changes
May 19, 2026 -
v4.2.0 Changes
April 04, 2026 -
v4.1.0 Changes
October 09, 2025🚀 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
-
v4.0.0 Changes
June 22, 2025⬆️ 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 - 0️⃣ 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
- 0️⃣ 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 Changes
May 11, 2025➕ Added
FieldModifiers.modify(Function<String, String>)to simply modify fields via functional interface
🗄 Deprecated
SimpleFieldModifierinterfaceFieldModifiers.lowerandFieldModifiers.uppermethods
-
v3.6.0 Changes
March 04, 2025➕ 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
-
v3.5.0 Changes
February 22, 2025➕ Added
- 👌 Support InputStream as an input source for CsvReader including BOM detection #130
- 👌 Support OutputStream as an output target for CsvWriter
-
v3.4.0 Changes
November 04, 2024➕ Added
- ➕ Add
skipLines(int)andskipLines(Predicate<String>, int)toCsvReaderto skip lines before the actual CSV data starts
- ➕ Add
-
v3.3.1 Changes
September 23, 2024🛠 Fixed
- 🛠 Fixed a bug in CsvReader where lines were mistakenly treated as empty and skipped when skipEmptyLines was set (default). These affected lines made up solely of field separators, solely empty quoted fields, or fields rendered empty after applying optional field modifiers.