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

Releases: pmem/libpmemobj-cpp

Libpmemobj-cpp Version 1.10

28 May 09:25
Compare
Choose a tag to compare

This release introduces a new experimental container - persistent concurrent map (based on concurrent skiplist implementation).
It also introduces some optimizations for existing containers and minor bug fixes.

New features:

  • concurrent_map container
  • swap() method for basic_string

Optimizations:

  • optimized clear() and erase() for trivial types in segment_vector
  • optimized move constructor and assignement for basic_string

Bug Fixes:

  • fixed free_data() in concurrent_hash_map

Libpmemobj-cpp Version 1.9

31 Jan 14:06
Compare
Choose a tag to compare

This release moves segment_vector out of experimental namespace and directory. It means that abovementioned container is guaranteed to have stable API and on-media layout.

It also introduces defragmentation functionality with new defrag class in pmem::detail namespace and helper classes (which currently reside in "detail" directory): enumerable_thread_specific and volatile_state.

With this release, we also decreased restart time of concurrent_hash_map (with a usage of the enumerable_thread_specific feature).

New features:

  • new methods for pmem::obj::string (find() and its overloads)
  • defragmentation feature as a separate class in pmem::obj namespace and support for the defragmentation in containers: concurrent_hash_map, vector, string
  • removed template parameters from persistent_ptr_base class (make it type agnostic) and moved to the public API
  • new methods for pmem::obj::concurrent_hash_map (insert_or_assign and its overloads)

Optimizations:

  • bucket rehashing in concurrent_hash_map moved to transaction
  • faster concurrent_hash_map restart (with "persistent TLS")

Other changes:

  • added GitHub Actions as an additional CI
  • added documentation and doc snippets with some usage examples
  • added compatibility tests for different libpmemobj-cpp versions

Libpmemobj-cpp Version 1.8.1

24 Jan 22:22
Compare
Choose a tag to compare

This release fixes minor bugs.

Notable changes:

  • fix compilation error in concurrent_hash_map
  • fix possible deadlock in erase method in concurrent_hash_map

Libpmemobj-cpp Version 1.8

03 Oct 15:50
Compare
Choose a tag to compare

This release moves persistent array/vector/string/concurrent_hash_map out from experimental namespace and directory. It means that the abovementioned containers are guaranteed to have a stable API and on-media layout. They are placed now in include/libpmemobj++/container/ directory and pmem::obj namespace.

This release introduces also a new experimental container - persistent segment vector with templated segment policies.

New features:

  • experimental persistent segment vector container

Bug fixes:

  • fixed insert method in persistent vector
  • fixed move assignment operator in persistent array

Other changes:

  • extended error messages in exceptions
  • added examples with simplekv using persistent containers
  • added modifiers methods for persistent string
  • added template locks for concurrent_hash_map
  • added layout versioning for concurrent_hash_map

Optimizations:

  • concurrent_hash_map insert method implemented with tx
  • optimized snapshotting in persistent vector/string

Libpmemobj-cpp Version 1.7

26 Jun 17:52
Compare
Choose a tag to compare

This release introduces new experimental container - persistent concurrent hashmap and persistent string with limited functionality.

Experimental features:

  • persistent concurrent hashmap
  • persistent string (constructors and modifiers)

Bug fixes:

  • add option to force define IS_TRIVIALLY_COPYABLE
  • mark allocation_flag constructor as explicit
  • add missing include to v.hpp

Libpmemobj-cpp Version 1.6

15 Mar 10:57
Compare
Choose a tag to compare

This release introduces ctl support, allocation flags, snapshot
method and new experimental persistent container - vector.

New features:

  • add support for pmemobj_ctl_set/get/exec
  • expose allocation flags in make_persistent(_atomic)
  • transaction: add snapshot method

Experimental features:

  • persistent vector container

Other changes:

  • automatically start transaction inside pmem::obj::experimental::array
    modifier methods (assignment operators, swap and fill)
  • add const methods for pmem::obj::experimental::array
  • add Valgrind instrumentation support
  • remove experimental const_contiguous_iterator
  • add get with arguments method overload for v

Bug fixes:

  • throw an exception when dropping pmem lock failed
  • fix crash when previous transaction failed to start
  • fix forwarding parameters to constructor in make_persistent_atomic

Optimizations:

  • decrease number of persistent_ptr dereferences in
    make_persistent_array

Libpmemobj-cpp Version 1.5.1

08 Mar 20:55
Compare
Choose a tag to compare
This release fixes minor bugs and improves documentation.

Notable changes:
- Fix v swap, assignment operators and constructors
- Change conversion operator from T() to T&() in v<>
- Fix range_snapshotting initialization in array.hpp.
- Fix range_snapshotting_iterator bahaviour for snapshot_size == 0.

Libpmemobj-cpp Version 1.5

26 Oct 16:06
Compare
Choose a tag to compare

This is the first release of libpmemobj-cpp as a separate project.

It introduces one persistent container - array, which has std::array
like interface. Currently it is considered experimental and lives
in experimental namespace.

We have also cleaned up some function names that, in retrospect, were
chosen poorly. Functions with old names are still there but are
deprecated.

Experimental features:

  • volatile resides on pmem class
  • persistent array container