Libpmemobj Cpp Versions Save

C++ bindings & containers for libpmemobj

1.11.1

1 year ago

This release fixes minor bugs.

Notable changes:

  • radix_tree: fix assing_val
  • radix_tree: fix internal find
  • radix_tree: fix try_emplace implementation
  • radix_tree: fix use after free
  • string_view: add assert for operator[]
  • self_relative_ptr: fix UB when adding non-zero offset to possibly null pointer
  • tests: fix radix_tx_abort test
  • tests: link atomic to all tests

1.10.1

1 year ago

This release fixes minor bugs.

This is the last patch release for libpmemobj-cpp 1.10 version. Maintenance of this version is no longer supported. It contains all bugfixes and updates from previous patch releases (1.9.1, 1.8.2, 1.7.1, 1.6.1, 1.5.2).

1.9.1

1 year ago

This release fixes minor bugs.

Notable changes:

  • concurrent_hash_map: fix free_data()
  • concurrent_hash_map: make double to size_t cast explicit in defragment()
  • peristent_ptr: add missing offset calculation

1.8.2

1 year ago

This release fixes minor bugs.

This is the last patch release for libpmemobj-cpp 1.8 version. Maintenance of this version is no longer supported.

Notable changes:

  • vector: fix referencing empty array
  • vector: Fix undefined behaviour on realloc

1.7.1

1 year ago

This release fixes minor bugs.

This is the last patch release for libpmemobj-cpp 1.7 version. Maintenance of this version is no longer supported.

Notable changes:

  • Properly install pkg-config file for all configurations
  • Fix void_t declaration and API usage for concurrent hashmap test

1.13.0

2 years ago

This release introduces new concurrent data structure - MPSC queue and implements limited concurrency support for radix tree.

New features:

  • Introduce experimental MPSC queue (pmem::obj::experimental::mpsc_queue)
  • Implement support for multi-reader single-writer concurrency in pmem::obj::experimental::radix_tree
  • Introduce basic_dram_inline_string which can be kept both on pmem and dram

Bug fixes:

  • Fix radix_tree leaf layout to ensure proper key/value alignment

Other changes:

  • Switch default CMake's build type from "Debug" to "RelWithDebInfo" it's relevant for a GitHub users (who may e.g. run some benchmarks)
  • Add std::initializer_list constructor to pmem::obj::array to mimic aggregate initialization post C++20

1.6.1

2 years ago

This release fixes minor bugs.

This is the last patch release for libpmemobj-cpp 1.6 version. Maintenance of this version is no longer supported.

Notable changes:

  • string: fix max_size() return value
  • allocation_flag: mark constructor as explicit
  • peristent_ptr: change ptr_offset_magic to be properly aligned
  • fix few headers' includes

1.5.2

2 years ago

This release fixes minor bugs.

This is the last patch release for libpmemobj-cpp 1.5 version. Maintenance of this version is no longer supported.

Notable changes:

  • operator[] for contiguous_iterator takes signed integral instead of unsigned
  • throw an exception when pmemobj_mutex_unlock fail
  • fix crash when a previous transaction failed to start because of already taken lock.

1.12

3 years ago

This release introduces new transaction handler type (flat_transaction) which solves https://github.com/pmem/libpmemobj-cpp/issues/516 (more information can be found in README).

It also introduces several improvements and bugfixes for radix_tree as well as additional methods for pmem::obj::string_view.

New features:

  • pmem::obj::flat_transaction
  • extend API for pmem::obj::string_view (relational operators, find, substr, copy, compare)

Bug fixes:

  • make default bytes_view implementation in radix_tree work for wide characters
  • fix assign_val function in radix tree which incorrectly handled inline_string<CharT> for CharT != char
  • fix use after free in radix_tree::erase method

Other changes:

  • allow using any iterator which supports operator[], operator-() and operator--() in pmem::obj::slice

1.11

3 years ago

This release introduces a new experimental container - persistent radix_tree along with inline_string and string_view classes.

It also introduces a new pointer type: self_relative_ptr with std::atomic specialization.

New features:

  • experimental radix_tree container (single-threaded sorted map)
  • experimental inline_string class (class serves similar purpose to pmem::obj::string, but keeps the data within the same allocation as inline_string itself)
  • string_view class (support for compilers older than C++17)
  • experimental self_relative_ptr and std::atomic<self_relative_ptr> specialization (persistent smart ptr which encapsulates the self offseted pointer and provides member access, dereference and array access operators - for some workloads it could be faster alternative for persistent_ptr)

Optimizations:

  • optimizations for concurrent_map with self_relative_ptr

Other changes:

  • missing constructors for basic_string class
  • conversion operator for basic_string class
  • ported libcxx's sorted map tests
  • lower and lower_eq methods for concurrent_map
  • missing constructor for concurrent_map (comparator as an argument)