Hi,
I think this is awesome, thanks for sharing.
Do you think Corundum could also be useful as a general-purpose embedded "database"? How would it perform if one were to use the BTree example on regular block storage when compared to, for example, sled [1]?
From the work on libpmemobj I know this probably isn't the ideal use case (tons of msyncs per operation), but Rust really lacks a native solution for storage (we need "arewestorageyet.rs"), and things that do exist (like sled) are not mature yet. I'm working on something in that direction, but the more the merrier ;)
On a related topic, do you think Buffered Durably Linearizability [2, 3] could be incorporated into your design? For some time now I've been thinking about how we could increase performance in libpmemobj by relaxing the persistence guarantees a little bit, and I've got some ideas, but they are difficult to implement in practice given the current API of the library.
Piotr