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 a new library written in C# called PM.NET. This library uses Intel's own libraries under the hood, however it comes with a simpler interface, in which the developer only needs to identify root objects for the system to perform all persistent tasks automaticaly. Moreover, PM.NET provides a means to envelop - using proxies - regular volatile objects making them transparently persistent, thus reducing drastically the amount of code needed to make a regular application aware of the persistent memory.