- Added support for cross-compilation for multiple platforms
- Fix occasional segfault when parsing with
result_type: :hash
- Fix bug with lossy not being respected when parsing headers
- Added
lossy
option tofor_each
that allows replacing invalid UTF-8 characters with a replacement character - Removed
flexible_default
option fromfor_each
- Fix bug where
ignore_null_bytes
was not being respected in enumerators.
- Added
ignore_null_bytes
option tofor_each
that allows ignoring null bytes in fields - The latter just removes an unneeded string copy when filtering out null bytes
- Fix handling of passing in explicit nil for optional arguments.
- Remove multi-threaded parsing. It was a bad idea. Performance is better without it. Code is simpler.
- Optimize hash construction by interning key strings
- Some internal refactoring to improve maintainability
- More optimizations for parsing IO-like objects without an underlying file handle
After quite a bit of profiling:
- When you give
OSV
a file handle IO object, we have an optimization to grab the underlying open file handle and do all reading directly in Rust. This release adds lots of optimizations for parsing objects that implementIO
'sread
method without having an underlying file handle available. - This release adds a lot of optimizations for parsing
StringIO
objects, as well as anything that doesn't implementIO
'sread
method, but does implementto_str
orto_s
methods. - Further optimizations to string allocations in Rust code.
- Turns out, gemspec descriptions cannot be markdown. Fixing that.
- Attempt at improving RubyGems page for the gem
- Set license to MIT in gemspec
- Added
trim
option tofor_each
that allows trimming of fields and headers
- Some optimizations, and a fix for a bug where file handles weren't being closed
- Added
flexible
option tofor_each
that allows flexible parsing of CSV files without a default value
- Added
flexible_default
option tofor_each
that allows flexible parsing of CSV files when set to a string. Defaults tonil
.
- Fix bug introduced in 0.3.5 where
nil_string
was not being parsed correctly
nil_string
no longer defaults to an empty string. It now defaults tonil
. Which means that empty strings are interpreted as empty strings.
- Added support for handling non-file backed IO objects in single threaded mode
- General refactoring to improve performance and reduce allocations
- Added support for gzip files
- Intern strings used as keys in hashes until no longer referenced by Ruby to get rid of extra allocations
- Got rid of
for_each_compat
. Now usefor_each(result_type: "array")
orfor_each(result_type: :array)
- Added
result_type
option toparse_csv
- Added
buffer_size
option toparse_csv