Corundum: Statically-Enforced Persistent Memory Safety


개요

Rust그리고 PM,... 어떻게 사용해야 할 것인가.

Contribution
NVM에 대한 Programming model을 Rust로 최초로 구현함
Rust를 통해서 NVM라이브러리 구현시 부족할 수 있는 부분을 지적함 (Fn trait의 부재등...)

문제점

  1. P즉 dynmaic하게 open될수 있는 pool의 개수가 한번에 하나이다.
  2. 모든 Corundum pool의 modification은 반드시 transaction이 있어야 한다. 과연 ""모든 transaction""에 필요할까?
  3. 너무 type system이 강하게 적용되어서 programmer가 유도리있게 작성할 부분이 없다.
  4. 불필요한 인자 제공이 필요하다. 예를 들어서 모든 as_ref_mut은 journal object을 받아야 하는데 너무 redundant하다.
  5. 서로 다른 Pool끼리 reference, pointer를 저장하지 못한다. ???
  6. 모든 mutable연산이 P::transaction()안에서 이루어져야 한다.
  7. 굳이 Transaction 구문안에서 existing volatile state를 바꾸지 못하게 한 이유가 있는가?
  8. Overall하게는 corundum은 performance를 고려하지 않고 디자인 되었다는 것이다.
  9. 또한 Function pointer와 closure의 isolation을 못하였다.