Formally Verifiable Persistent Memory Programming using Corundum
https://crates.io/crates/corundum ASPLOS 2021 Full Paper: http://cseweb.ucsd.edu/~mhoseinzadeh/hoseinzadeh-corundum-asplos21.pdf Fast, byte-addressable, persistent main memories (PM) make it possible to build complex data structures that can survive system failures. Programming for PM is challenging, not least because it combines well-known programming challenges like locking, memory management, and pointer safety with novel PM-specific bug types. It also requires logging updates to PM to facilitate recovery after a crash. A misstep in any of these areas can corrupt data, leak resources, prevent successful recovery after a crash. Existing PM libraries in a variety of languages – C, C++, Python, Java – simplify some of this area, but they still require the programmer to learn(and flawlessly apply) complex rules to ensure correctness. Opportunities for data-destroying bugs abound. This paper presents Corundum, a Rust-based library with an idiomatic PM programming interface, and leverages the Rust’stype system to statically avoid the most common PM programming bugs. Corundum lets programmers develop persistent data structures using familiar Rust constructs and have confidence that they are free of many types of bugs. We have implementedCorundum and found its performance to be as good or better than Intel’s widely-used PMDK library.
https://crates.io/crates/corundum ASPLOS 2021 Full Paper: http://cseweb.ucsd.edu/~mhoseinzadeh/hoseinzadeh-corundum-asplos21.pdf Fast, byte-addressable, persistent main memories (PM) make it possible to build complex data structures that can survive system failures. Programming for PM is challenging, not least because it combines well-known programming challenges like locking, memory management, and pointer safety with novel PM-specific bug types. It also requires logging updates to PM to facilitate recovery after a crash. A misstep in any of these areas can corrupt data, leak resources, prevent successful recovery after a crash. Existing PM libraries in a variety of languages – C, C++, Python, Java – simplify some of this area, but they still require the programmer to learn(and flawlessly apply) complex rules to ensure correctness. Opportunities for data-destroying bugs abound. This paper presents Corundum, a Rust-based library with an idiomatic PM programming interface, and leverages the Rust’stype system to statically avoid the most common PM programming bugs. Corundum lets programmers develop persistent data structures using familiar Rust constructs and have confidence that they are free of many types of bugs. We have implementedCorundum and found its performance to be as good or better than Intel’s widely-used PMDK library.