Skip to content

v2.1.0

Choose a tag to compare

@LTLA LTLA released this 18 Mar 00:42
· 18 commits to master since this release
  • Use a more intuitive demand-driven interface for Reader::read(), where the caller requests a number of bytes and each implementation fills up a user-supplied buffer with that number of bytes (or less, if not enough bytes are available).
  • File-based Reader subclasses no longer use a byteme-level buffer, as read() just fills a user-supplied buffer. The buffer_size option now refers to the file handle's internal buffers, e.g., via std::setvbuf() or gzbuffer().
  • Renamed PerByte to BufferedReader as the latter is more appropriate. This now accepts a buffer size in the constructor, representing the trade-off between speed and memory usage. Also removed advance_and_extract() to encourage migration to extract().
  • Added the BufferedWriter class to buffer calls to Writer::write(), for improved efficiency with many small writes.
  • Added a dependency on sanisizer to protect against integer overflows.
  • Removed the Some*Reader classes as it is trivial for callers to switch between Writer instances. Also exported the is_gzip and is_zlib utilities to facilitate auto-detection of the compression mode.
  • Encode Zlib compression modes in an enum rather than requiring magical numbers.