Skip to content
This repository has been archived by the owner on Mar 22, 2023. It is now read-only.

pmemstream version 0.2.0

Compare
Choose a tag to compare
@lukaszstolarczuk lukaszstolarczuk released this 28 Jun 13:43
· 92 commits to master since this release

This is the second (still minor) release of pmemstream project.

It contains many functional updates, API changes, and reactors, along with new tests and examples.

New features:

  • Asynchronous API, which uses libminiasync (https://github.com/pmem/miniasync) for concurrently appending data to the stream; currently, multiple threads can append data concurrently to different regions, but no two threads can append to the same one.
    It includes new functions for appending and publishing data. It's exposing 2 stages of an append - committed and persisted with 2 functions pmemstream_async_wait_*(timestamp) to wait for the given entry to be available for reading and/or for persistency guarantee.
  • Changed region and entry iterators API. It now provides seek_first, next, and is_valid functions for both types of iterators. It offers higher flexibility.
  • Multiple regions. A simple region allocator, allowing creation of multiple regions; for now, only supports a single region size (within a given stream).
  • Timestamps for each entry to provide global entries' order (and easier recovery).
  • Exposed pmemstream_region_usable_size function to read the currently available size in a given region; it can be used with the combination of "entire region size" function (pmemstream_region_size) to, e.g., calculate the already used region's space.
  • Full documentation of public API in the form of manpages.

Other changes:

  • Rename pmemstream_entry_length to pmemstream_entry_size for consistent naming convention,
  • Add a simple "append" benchmark,
  • Enable integrity, consistency, and sanitizers tests,
  • Add 4 more examples.