Persistent Memory Extensions to libstdc++/libc++
summary
An implementation of a C++ API on top of the Linux NVM library exposes a persistent_ptr template with constructor forwarding, transactional lambdas and scoped transactions, plus a custom std::allocator integration so many STL containers (notably vector) survive power loss on x86_64. Transactions originally used setjmp/longjmp and required explicit TX_ADD snapshots; C++ lambdas and C++17 uncaught_exceptions reduce errors. Remaining limits: no polymorphic types, ABI/hash_code portability issues, need explicit type/layout naming and persistent layout versioning; a dynamic-grind tool helps detect missing snapshots.
AI-written summary · about
chapters (23)
- 0:00Introduction
- 2:35Mandatory slide
- 4:41NVM Libraries
- 9:00VML
- 10:33Type Safety
- 22:43Limitations
- 25:44Transactions
- 26:03Persistence
- 28:30Macros
- 30:01Bad example
- 31:52How transactions work
- 32:14Lazy people
- 34:45Problems with C
- 34:59C Transactions
- 37:29STD Uncaught Exceptions
- 39:14Multistep Allocation
- 40:36Lambda Transactions
- 41:01Exception Handling
- 42:39STD
- 42:59STD Demo
- 45:05Pros
- 47:46Layered versioning
- 48:21x8664
related talks
14mArchTM: Architecture-Aware, High Performance Transaction for Persistent Memory
12mSPHT: Scalable Persistent Hardware Transactions
15mNomad: Non-Exclusive Memory Tiering via Transactional Page Migration
43mLive in a world with multiple memory types
22mRestartable Sequences: Scaling Per-Core Shared Memory Use in Containers
19mLLFree: Scalable and Optionally-Persistent Page-Frame Allocation
28mNVDIMM & Bcache: Support Non-Volatile Memory for Linux Block Layer...
29mHigh memory management API changes
