Version 0.27.2 (2024-09-27) * Use `STRING_PTR_RO` instead of `STRING_PTR` * Add `R::` namespace to `RApiSerialize` calls (https://github.com/eddelbuettel/rapiserialize/issues/8) Version 0.27.1 (2024-06-04) * Add function `set_trust_promises` to allow for serialization and deserialization of PROMSXP Version 0.26.3 (2024-05-15) * When serializing, eval promises immediately (https://github.com/qsbase/qs/issues/94) * Return NULL and issue a warning when unserializing a PROMSXP (see https://github.com/qsbase/qs/issues/93) Version 0.26.2 (2024-03-18) * Change check for requiring `-latomic` flag to use `AC_COMPILE_IFELSE` (https://github.com/qsbase/qs/issues/88, https://github.com/qsbase/qs/issues/91, https://github.com/qsbase/qs/issues/76) Version 0.26.1 (2024-03-07) * Add ALTREP serialization * Minor bug fix (strict aliasing rules) Version 0.25.7 (2023-12-05) * Minor fix for CRAN checks (see https://github.com/RcppCore/Rcpp/issues/1287) Version 0.25.6 (2023-11-27) * Fix tests to account for ALTREP serialization * Add filenames to error messages (https://github.com/qsbase/qs/issues/75) * Fix unit tests for big endian system (https://github.com/qsbase/qs/issues/77) * Check for GCC and add `-latomic` flag which is sometimes required (https://github.com/qsbase/qs/issues/76) Version 0.25.5 (2023-2-20) * Add function `qread_url`, a helper function that reads `qs` objects from the internet (https://github.com/qsbase/qs/issues/49) * Add `qattributes` function for extracting attributes of a saved object Version 0.25.4 (2022-8-9) * Brief hotfix due to changes in RApiSerialize: specify R serialization version = 2 * Add back `importFrom(Rcpp, evalCpp)` statement to NAMESPACE file Version 0.25.3 (2022-2-20) * Update zstd to 1.5.2 and single file library * Use of Rcpp strict headers; this and the above improve compilation speed considerably * Use more accurate language in configure script (request from CRAN) Version 0.25.2 (2021-12-6) * Update documentation and fix typos (thanks to @salim-b) * Update autoconf to version 2.6.9 (autoupdate; autoreconf --warnings=obsolete) * Include tests/ folder in build/check process * Add `encode_source` and `decode_source` -- helper functions for inlining files and documents Version 0.25.1 (2021-7-20) * Add `qcache` helper function * Remove immediate binding expansion, as it is not part of the R API (comments from CRAN/Luke Tierney). Instead, use the `findVarsInFrame` function to extract immediate bindings from environments. * Remove `R_restoreHashCount` function, as it is not part of the new R API Version 0.24.4 (2021-3-13) * Throw a proper error message for DBFS issues (https://github.com/qsbase/qs/issues/51) Version 0.24.3 (2021-3-8) * Add github actions to test compilation on different R versions Version 0.24.1 (2021-3-5) * Add additional error checks on failure to read or write data * Update xxhash version to 0.8.0 * Reduce R version requirement from R 3.5.0 to R 3.0.2 (https://github.com/qsbase/qs/pull/36) Version 0.23.6 (2020-2-7) * Add BNDCELLS (aka immediate bindings) support added in R 4.0 (https://github.com/qsbase/qs/issues/50) Version 0.23.5 (2020-12-9) * Correct issue in `qsavem` function (https://github.com/qsbase/qs/issues/46) Version 0.23.4 (2020-10-8) * Correct documentation of `qreadm` and `qsavem` functions (https://github.com/qsbase/qs/issues/44) Version 0.23.3 (2020-9-24) * Fix to https://github.com/qsbase/qs/issues/43 Version 0.23.1 (2020-7-14) * Fix to `qsavem` / `qload` functions (https://github.com/qsbase/qs/issues/39) * Update xxhash bundled library to v0.7.4 Version 0.22.1 (2020-5-31) * Added `qsavem` and `qload`/`qreadm` functions for saving and reading multiple objects at once. Thanks to Bryce Chamberlain (https://github.com/qsbase/qs/pull/36) * `qs` now depends on R 3.5 and later. For earlier versions of R, use `remotes::install_github("qbase/qs@legacy")` * Improved alt-rep string functionality using the stringfish package (https://cran.r-project.org/package=stringfish) Version 0.21.2 (2020-3-8) * Added implementations of base 85 and base 91 ASCII encoding. See `?base91_encoding` and `?base85_encoding` * Fixed a typo in the benchmarking code (https://github.com/qsbase/qs/issues/32) and updated the readme benchmark to the latest version * Added a more descriptive error when trying to read a non-existent file (https://github.com/qsbase/qs/pull/34) * Compile LZ4 library in C++ instead of C to avoid U.B. issue (https://github.com/lz4/lz4/issues/847) Version 0.21.1 (2020-2-6) * Fix for active bindings in R6/environments (https://github.com/qsbase/qs/issues/29) * Correct several documentation errors (https://github.com/qsbase/qs/issues/28) * Fix for incorrect serialization of "names" attribute in S4 Raster class (https://github.com/qsbase/qs/issues/27) Version 0.20.2 (2019-12-1) * Fix to minor bug involving serialization of locked environments Version 0.20.1 (2019-12-1) * More efficient serialization of S4 objects, environments and other complex types (DOTSXP, PROMSXP, CLOSXP) * Better support for S4 objects * S4 object flags are now correctly serialized and de-serialized (previously, the flag was ignored) * S4SXP (non-simple S4 objects with slots) are efficiently serialized, instead of previously relying on R serialization Version 0.19.1 (2019-9-2) * Exposed C++ API for use in other Rcpp packages and Rcpp scripts (https://github.com/qsbase/qs/issues/18) Version 0.18.4 (2019-8-22) * Fixed an rchk issue with a missing `PROTECT` call during serialization * Various code refactor and optimizations Version 0.18.3 (2019-8-20) * `qsave` now returns invisibly the number of bytes written to file * Fixed an issue with deserialization of large S4 objects (https://github.com/qsbase/qs/issues/14) * Additional serialization and deserialization functions for advanced usage: * `qserialize` and `qdeserialize` reads and writes objects in memory to raw vectors * `qsave_fd` and `qread_fd` reads and write objects to file descriptors * `qsave_handle` and `qread_handle` reads and writes objects to Windows HANDLE pointer (Windows only) * `qread_ptr` reads objects from a void pointer Version 0.18.2 (2019-7-19) * Changed license to GPL-3 (https://github.com/qsbase/qs/issues/13) Version 0.18.1 (2019-7-14) * Revised header format in order to include more information -- files created by 0.18.1 cannot by read by earlier versions * Remove R version restriction. Previously, `qs` required R >= 3.5.0. R alt-rep functionality will not be used in earlier versions. Version 0.17.3 (2019-7-8) * Fixed unprotected variable issue found by rchk (https://github.com/kalibera/rchk) Version 0.17.2 (2019-7-6) * Remove `restrict` keyword from R source files due to Solaris CRAN checks * Remove executable file permission from src/* files due to OSX CRAN detecting license files as executable Version 0.17.1 (2019-6-24) * Re-write of `qdump` function to output more information * Added regression unit testing for previous versions (tests/regression_testing.R") Version 0.16.3 (2019-6-21) * Use hash checksums for checking file integrity using the `xxhash` library * New parameter: `qsave` -- `check_hash`, computes a checksum on the serialized data * New parameter: `qread` -- `strict`, throws an error if checksum does not pre-computed value * `qdump` function reports checksums * Performance optimizations -- use C interface directly rather than Rcpp containers * About 180% serialization speed improvement for large lists (e.g., `as.list(runif(1e6))`) * Removed `qinspect` function as checks are now performed within serialization functiosn directly * Additional error checking for proper compression and serialization * The goal is R should not crash even if a file is corrupted Version 0.16.2 (2019-6-15) * Added `Set_elt` method for alt-rep string class (https://github.com/qsbase/qs/issues/9) * Code cleanup: * Additional error checking during compression and de-compression * Use of RAII for protection stack handling * Use of templates instead of function pointers for compression and decompression * Moved some functions to qs_common.h as templates to avoid code redundancy Version 0.16.1 (2019-5-15) * Support for zstd streaming interface. As opposed to block compression routines, streaming compression offers better compression ratio but is not as fast * Re-factor configure script to not be so messy * Changed file suffixes in examples from "q" to "qs" (https://github.com/qsbase/qs/issues/5) * (Not included) brotli compression library was evaluated, but did not offer better performance compared to zstd on average * Updated zstd to version 1.4.0 (from 1.3.8) and lz4 to 1.9.1 (from 1.8.2) * Updated benchmarks to include zstd streaming interface and newer versions of zstd and lz4 * C++ macro compiler warnings fixed in zstd; this needs to be done every time zstd is updated (https://github.com/facebook/zstd/issues/1538) Version 0.15.1 (2019-04-07) * Initial multi-threading support using C++11 concurrency * Added support for lz4HC (high compression lz4 variant, but slower compression) * Additional error check handling to verify file integrity; see `qinspect` function * Additional documentation and examples * Normalize file paths before attempting to write or read (https://github.com/qsbase/qs/issues/4) * Added star name database from the International Astronomical Union; see `?starnames` Version 0.14.1 (2019-03-03) * Support for LZ4 compression codec * Defined several compression presets: "fast", "balanced" and "high" which trade speed for compression ratio * Byte shuffling routines adapted from the BLOSC library, for higher compression ratios * Utility functions for compressing and decompressing raw data using zstd or lz4 Version 0.13.1 (2019-02-13) * Added configure file to detect system installation of zstd * Fixes to "undefined behavior" (C++ unaligned type casts) Version 0.12 (2019-02-08) * Initial CRAN release * This package provides serialization of R objects through block compression with zstd * Utilizes Alt-rep data to quickly de-serialize string data