Releases: dehesa/CodableCSV
Releases · dehesa/CodableCSV
Xcode 13 support and `standard` row delimiter
- Xcode 13 has been supported by raising the iOS requirements to iOS 11.
The library still supports iOS 7+, but the SPM now defines iOS 11+. If you want to support older OSes, modify the SPM manifest. - Support for more than one row delimiter (e.g. for the standard
\r\nand\n) at the same time.
CSVReaderwill end a row when one of the row delimiters is encountered. Use just one row delimiter for better performance.
Stricter parsing
CSVReaderandCSVDecoderare now "stricter" while parsing CSV data.
Now errors are thrown when encountering ill-formed rows, instead of just finishing the parsing process (#34).CSVReaderandCSVDecoderignore empty lines.
Usually encountered at the end of a file.- Minor enhancements on documentation.
Second batch of performance enhancements
CSVWriterencoder is faster for UTF8 encodings.- Shift-JIS encoding is now supported (#29).
CSVEncoderandCSVDecoderhave experienced major speed ups, due to drops on unnecessary retains/releases.
Optimizations & decodeIfPresent
- The first batch of optimizations have landed.
- Fix for floating-point encoding/decoding (#20)
- Change
decodeNil()behavior to more closely follow the documentation. decodeIfPresentcan now be safely used.
Lazy Row Encoding
- Both
CSVEncoderandCSVDecodernow support lazy functionality. - The lazy API has been renamed to be as similar as possible in the encoder/decoder.
READMEhas been expanded with more examples.
Top Level Codecs & InputStream Support
CSVEncoder/CSVDecoderadoptsTopLevelEncoder/TopLevelDecoderwhen Combine is present.CSVReaderandCSVDecodernow also acceptInputStreams.
The introduction of this feature allows easier usage ofCodableCSVby Command-line applications reading information from the.standardInput(i.e.stdin).- Most errors thrown by
CodableCSVfunctions are nowCSVErrors.
AllCSVErrors include the failure reason and provide help cues to avoid said problem. - Documentation has been expanded to cover all public and internal functionality.
Lazy Row Decoding
CSVDecodernow supports on demand (lazy) decoding.- New encoding/decoding configuration strategies have been added.
CSVEncoder, Buffer Strategies & API Refining
- A full-fledge
CSVEncoderhas finally been implemented.
Full support forCodablehas been achieved. You can now use keyed, unkeyed and single value containers when neeeded. CSVEncoderandCSVDecodersupport for different buffering strategies.
This translates in less memory usage for sequential or assembled runs.CSVReader/CSVWriterAPI have been renamed to matchCSVEncoder/CSVDecoderAPI.
Linux Support & Custom Escaping Scalars
- Custom escaping scalars are supported thanks to @josh (#13).
This includes the ability to disable escaping functionality on parsing or serializing CSVs. - Linux is officially supported.
All tests now also run on Linux (Ubuntu 18.04) through Github actions. - Trim strategy now throws an error at initialization when it contains delimiter characters or escaping scalars.
- The repo now provides not only a high-level roadmap, but also a detailed plan on which features are being worked next.
Greater Performance & Easier Debugging
- Expand input/output support to
Data,String, and files (throughURLs). - Reimplemented
CSVReaderandCSVWriterfor greater performance. - Introduction of
CSVErroradopting SE-112 protocols for easier debugging. - Make
Decoderfully immutable. - Expand tests on
CSVReader,CSVWriter, andCSVDecoder. - OS requirements reduced to macOS 10.10, iOS 8, tvOS 9, watchOS 2.
- First trials on Linux.
- Fixed bug on trim character strategy.