개요
Rust그리고 PM,... 어떻게 사용해야 할 것인가.
- Contribution
- NVM에 대한 Programming model을 Rust로 최초로 구현함
- Rust를 통해서 NVM라이브러리 구현시 부족할 수 있는 부분을 지적함 (Fn trait의 부재등...)
문제점
- P즉 dynmaic하게 open될수 있는 pool의 개수가 한번에 하나이다.
- 모든 Corundum pool의 modification은 반드시 transaction이 있어야 한다. 과연 ""모든 transaction""에 필요할까?
- 너무 type system이 강하게 적용되어서 programmer가 유도리있게 작성할 부분이 없다.
- 불필요한 인자 제공이 필요하다. 예를 들어서 모든 as_ref_mut은 journal object을 받아야 하는데 너무 redundant하다.
- 서로 다른 Pool끼리 reference, pointer를 저장하지 못한다. ???
- 모든 mutable연산이 P::transaction()안에서 이루어져야 한다.
- 굳이 Transaction 구문안에서 existing volatile state를 바꾸지 못하게 한 이유가 있는가?
- Overall하게는 corundum은 performance를 고려하지 않고 디자인 되었다는 것이다.
- 또한 Function pointer와 closure의 isolation을 못하였다.