This release updates feather to depend on the arrow package,
which is where Feather format development has moved. This resolves many
bug reports and missing features from the previous implementation of
Feather in R, and it brings the R package in line with the Python
feather package, which has depended on pyarrow
since 2017.
For compatibility, feather::write_feather() uses V1 of
the Feather specification: it is a wrapper around
arrow::write_feather(version = 1). Feather V2 is just the
Arrow format on disk and has support for a much richer set of data
types. To switch to V2, we recommend just using
arrow::write_feather().
With these changes, most of feather’s APIs are preserved
in spirit, but there are some noteworthy changes:
The feather class, which allowed for accessing data
in a Feather file without reading it all into R, has been replaced by an
arrow::Table backed by the memory-mapped Feather file. This
should preserve the intent of the original implementation but with much
richer functionality. One behavior change that results though is that
slicing/extracting from the Table results in another arrow Table, so the
data aren’t pulled into a data.frame until you
as.data.frame() them.
feather_metadata also now does the same.
feather_metadata() now handles paths with
~ in them.
Fix warnings on CRAN due to (unused) GNU Makefiles.
Use tibble::tibble() in place of the deprecated
dplyr::data_frame().
Fixes for PROTECT error found by rchk.
Use native routine registration
Fix test failure due to UTF-8 encoded paths on Windows.
Feather files are now padded to 64-bit alignment. Feather 0.3 will read feather files created by the previous version, but this will not be true for future versions of feather.
Support for > 2 Gb files on 32-bit windows.
Now works with earlier version of C++.
Automatically close open file handles making it possible to read in hundreds of feather files in the same session (@krlmlr, #178)
Added a NEWS.md file to track changes to the
package.
Fixed protection bugs that lead to unpredictable crashes (#150, #204).
Time fields are now imported as class hms/difftime (#119).
Timestamp (POSIXct) fields now correctly restore missing values (#157).
UTF-8 field names are correctly imported (#198)