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

Releases: pmem/pmemstream

pmemstream version 0.2.1

05 Jan 14:57
Compare
Choose a tag to compare

This is, most likely, the last patch release of pmemstream project. It contains multiple fixes, documentation updates, refactors, minor CI/examples/CMake changes, along with new and updated tests.

The most relevant updates are listed below:

  • Add shadow value to pmemstream_persisted_timestamp
  • Fix and prune fences in atomic span ops
  • Fix races (e.g., in region.c) and issues reported by TSAN
  • Fix append benchmark for concurrent ops
  • Extend entry_iterator_is_valid with an additional check
  • Enable prefault at open/create time
  • tests: extend multiple existing tests and add missing TCs
  • tests: add check for recovery during recovery (a corner case for torn recovery process)
  • Extend CMake with new options (e.g., for Thread Sanitizer and increased fortification level)
  • Update manpages with detailed descriptions

pmemstream version 0.2.0

28 Jun 13:43
Compare
Choose a tag to compare

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.