This repository has been archived by the owner on Mar 22, 2023. It is now read-only.
Libpmemobj-cpp Version 1.9
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