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 a PM.NET, uma biblioteca em C# para desenvolvimento de aplicações que utilizam memória persistente. A biblioteca PM.NET oferece uma interface simples e orientada a objetos para o desenvolvimento em memória persistente, com gerenciamento automático da memória persistente (incluindo coleta de lixo). Uma vez identificados os objetos raiz a serem persistidos, a PM.NET transforma automaticamente todos os objetos relevantes em objetos persistentes. Adicionalmente, o PM.NET proporciona uma forma de envolver objetos voláteis em objetos persistentes com proxies, minimizando as alterações de código necessárias para o uso da memória persistente com desempenho comparável a banco de dados relacionais.