Interest is growing in persistent memory technologies. Currently available products include nonvolatile dual in-line memory module (NVDIMM-N) and dynamic random-access memory (DRAM) with NAND flash-based storage. New technologies are emerging, such as Intel® 3D XPoint™ memory, which will ship with the Intel® Xeon® processor Scalable family refresh codenamed Cascade Lake.These new hardware types offer exciting new possibilities to developers, while at the same time introducing programming challenges.
Persistent memory programming is fundamentally different from traditional programming to volatile memory due to its requirement to ensure data retention after program completion, an application or system crash, or a power failure. Intel developed and open-sourced a set of libraries called the Persistent Memory Developer Kit (PMDK) to make it easier to convert an application to use persistent memory. This paper describes the C++ API for the libpmemobj library of the PMDK, along with other proposed changes to the C++ standard.
pmem.io - for programming with the Persistent Memory Developer Kit (PMDK)
GitHub site for persistent memory programming
Google Group for persistent memory programming
CppCon 2017: Tomasz Kapela's session C++ and Persistent Memory Technologies, Like Intel's 3D-XPoint