Releases: osiegmar/FastCSV
Releases · osiegmar/FastCSV
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
v3.5.0
v3.4.0
v3.3.1
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.
v3.3.0
Added
- Implement
Flushableinterface forCsvWriterto allow flushing the underlying writer - Implement
autoFlushoption forCsvWriterto automatically flush the writer after writing a record - Implement
toConsolemethod forCsvWriterto write records to the console