PM.NET: Uma biblioteca de desenvolvimento para memória persistente com C#
Alternativas de diferentes tecnologias para substituir a memória RAM estão sendo pesquisadas e ganhando mais espaço no setor privado. Em particular, a Intel desenvolveu um tipo de memória endereçável por bytes, mas com a característica de ser persistente e que se aproxima do desempenho da memória RAM; essa tecnologia foi nomeada memória persistente. Junto à memória persistente a Intel também fornece um conjunto de bibliotecas escritas em C e C++ que abstrai detalhes de hardware e permite o desenvolvimento de aplicações que utilizam a nova memória. Em contrapartida, a biblioteca fornecida é de difícil uso; é fácil cometer erros na sua utilização e adicionar bugs persistentes no código.
Neste trabalho apresentamos uma biblioteca desenvolvida em C# chamada PM.NET que integra com as bibliotecas escritas em C. O principal objetivo de nossa proposta é possibilitar uma maneira simples de utilizar a memória persistente onde o desenvolvedor precisa identificar os objetos raiz e o PM.NET o transforma em persistente. Além disso, o PM.NET também fornece uma maneira de envelopar - utilizando proxies - os objetos voláteis em objetos persistentes, dessa forma minimizando as alterações de código necessárias para o desenvolvedor utilizar a memória persistente.