Persistence by Reachability in Rust
Abstract#
As NVRAM (non-volatile random access memory) emerges in the memory hierachy, the overhead of persisting program data to survive power loss or system restart can be greatly reduced thanks to NVRAM’s byte addressability and high speed. Recent work on persistent programming in Rust introduces persistent counterpart of Rust’s existing smart pointers, which restricts volatile data from being persisted and hinders the usability of existing libraries. So in this talk, I will present the idea of a more orthogonal approach. We can bulid on a reachability-based garbage collection smart pointer and add persistence semantics to achieve persistence by reachability in Rust. By doing so, data can orthogonally be allocated on volatile memory and upgraded to be persistent by copying to persistent memory if found reachable by a persistent root. Existing libraries can also be used by simply wrapping inside the smart pointer.