One of the most important features of the C++ bindings to libpmemobj is the
persistent_ptr
smart pointer template. While using it is fairly
straightforward, the allocation and object construction with the use of the C
API is hard to get right. So like it’s C++ standard’s counterparts, it …
One of the necessary steps in developing the C++ libpmemobj bindings was the
introduction of an abstraction of the C pool handle. We decided to do a very
simple hierarchy where the pool
template inherits from a generic pool_base
.
This was necessary to be able to have functions/methods which do not …
Our goal for the C pmemobj library was to make a fully featured implementation of persistent memory programming model without modifying the compiler. It’s meant for authors of very low-level system software and language creators. It’s not particularly pretty nor easy to use. The amount …
Read MoreOne of the biggest hurdles and error prone things about our C API is that the user has to manually keep track of modifications to the persistent memory resident variables while in a transaction. A special semi-transparent template property class has been implemented to automatically add variable …
Read MoreIn our C API the programmer has to deal with custom pointers represented by the PMEMoid structure. Thanks to some macro magic we made it so that those PMEMoids are somewhat usable. C++ allows us to evolve this concept.
pmem::obj::persistent_ptr
Almost everyone who ever touched a C++ code knows the …
Read More