The markdown parsing is broken/disabled for release notes. Sorry about that, I'm chasing the source of a crash that's been bringing this website down for the last couple of days.
Xcode 13 support and `standard` row delimiter
2 years ago
- 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
3 years ago
- `CSVReader` and `CSVDecoder` 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` and `CSVDecoder` ignore empty lines.
Usually encountered at the end of a file.
- Minor enhancements on documentation.
Second batch of performance enhancements
3 years ago
- `CSVWriter` encoder is faster for UTF8 encodings.
- Shift-JIS encoding is now supported (#29).
- `CSVEncoder` and `CSVDecoder` have experienced major speed ups, due to drops on unnecessary retains/releases.
Optimizations & decodeIfPresent
3 years ago
- 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
3 years ago
- Both `CSVEncoder` and `CSVDecoder` 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
3 years ago
- `CSVEncoder`/`CSVDecoder` adopts `TopLevelEncoder`/`TopLevelDecoder` when Combine is present.
- `CSVReader` and `CSVDecoder` now also accept `InputStream`s.
The introduction of this feature allows easier usage of `CodableCSV` by Command-line applications reading information from the `.standardInput` (i.e. `stdin`).
- Most errors thrown by `CodableCSV` functions are now `CSVError`s.
All `CSVError`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
4 years ago
- `CSVDecoder` now supports *on demand* (lazy) decoding.
- New encoding/decoding configuration strategies have been added.
CSVEncoder, Buffer Strategies & API Refining
4 years ago
- A full-fledge `CSVEncoder` has finally been implemented.
Full support for `Codable` has been achieved. You can now use keyed, unkeyed and single value containers when neeeded.
- `CSVEncoder` and `CSVDecoder` support for different buffering strategies.
This translates in less memory usage for [sequential or *assembled*](https://github.com/dehesa/CodableCSV/blob/master/sources/Codable/Encodable/EncoderConfiguration.swift#L99) runs.
- `CSVReader`/`CSVWriter` API have been renamed to match `CSVEncoder`/`CSVDecoder` API.
Linux Support & Custom Escaping Scalars
4 years ago
- 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](https://github.com/dehesa/CodableCSV/projects), but also a [detailed plan](https://github.com/dehesa/CodableCSV/projects) on which features are being worked next.
Greater Performance & Easier Debugging
4 years ago
- Expand input/output support to `Data`, `String`, and files (through `URL`s).
- Reimplemented `CSVReader` and `CSVWriter` for greater performance.
- Introduction of `CSVError` adopting SE-112 protocols for easier debugging.
- Make `Decoder` fully immutable.
- Expand tests on `CSVReader`, `CSVWriter`, and `CSVDecoder`.
- OS requirements reduced to macOS 10.10, iOS 8, tvOS 9, watchOS 2.
- First trials on Linux.
- Fixed bug on trim character strategy.