PM.NET: A persistent memory development library in C#
More than a few emerging memory technologies for substituting DRAM have already been presented and are under development in the private sector. In particular, Intel developed a byte addressable memory which is persistent and has performance similar to traditional DRAM. This technology was named persistent memory. Alongside the hardware, Intel also provides a set of libraries written in C and C++ which is capable to abstract the underlying hardware and allows the development of applications that use this new memory. However, this new memory is hard to use, as it is easy to make mistakes during the development and inadiverantly add persistent bugs to the code base.
In this work we present PM.NET, a C# library for developing applications that use persistent memory. PM.NET offers a simple and object-oriented interface for persistent memory development, with automatic management of persistent memory (including garbage collection). Once the root objects to be persisted are identified, PM.NET automatically transforms all relevant objects into persistent objects. Additionally, PM.NET provides a way to wrap volatile objects in persistent objects with proxies, minimizing the code changes required to use persistent memory with performance comparable to relational databases.