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\n
and\n
) at the same time.
CSVReader
will end a row when one of the row delimiters is encountered. Use just one row delimiter for better performance.
Stricter parsing
CSVReader
andCSVDecoder
are now "stricter" while parsing CSV data.
Now errors are thrown when encountering ill-formed rows, instead of just finishing the parsing process (#34).CSVReader
andCSVDecoder
ignore empty lines.
Usually encountered at the end of a file.- Minor enhancements on documentation.
Second batch of performance enhancements
CSVWriter
encoder is faster for UTF8 encodings.- Shift-JIS encoding is now supported (#29).
CSVEncoder
andCSVDecoder
have 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. decodeIfPresent
can now be safely used.
Lazy Row Encoding
- Both
CSVEncoder
andCSVDecoder
now support lazy functionality. - The lazy API has been renamed to be as similar as possible in the encoder/decoder.
README
has been expanded with more examples.
Top Level Codecs & InputStream Support
CSVEncoder
/CSVDecoder
adoptsTopLevelEncoder
/TopLevelDecoder
when Combine is present.CSVReader
andCSVDecoder
now also acceptInputStream
s.
The introduction of this feature allows easier usage ofCodableCSV
by Command-line applications reading information from the.standardInput
(i.e.stdin
).- Most errors thrown by
CodableCSV
functions are nowCSVError
s.
AllCSVError
s 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
CSVDecoder
now supports on demand (lazy) decoding.- New encoding/decoding configuration strategies have been added.
CSVEncoder, Buffer Strategies & API Refining
- A full-fledge
CSVEncoder
has finally been implemented.
Full support forCodable
has been achieved. You can now use keyed, unkeyed and single value containers when neeeded. CSVEncoder
andCSVDecoder
support for different buffering strategies.
This translates in less memory usage for sequential or assembled runs.CSVReader
/CSVWriter
API have been renamed to matchCSVEncoder
/CSVDecoder
API.
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 (throughURL
s). - Reimplemented
CSVReader
andCSVWriter
for greater performance. - Introduction of
CSVError
adopting SE-112 protocols for easier debugging. - Make
Decoder
fully 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.