Simple, persistent key-value store implemented in Haskell to prototype a verified version
Find a file
2019-01-31 10:08:08 -05:00
.github Fix mailbot config 2018-12-11 14:39:15 -05:00
app Add project template 2018-12-11 09:03:15 -05:00
src Support a parametric environment type 2019-01-03 10:38:03 -05:00
test Support a parametric environment type 2019-01-03 10:38:03 -05:00
.gitignore Add project template 2018-12-11 09:03:15 -05:00
.travis.yml Add generic stack Travis config 2018-12-11 09:32:41 -05:00
ChangeLog.md Add project template 2018-12-11 09:03:15 -05:00
LICENSE Add project template 2018-12-11 09:03:15 -05:00
package.yaml Support a parametric environment type 2019-01-03 10:38:03 -05:00
README.md Write down some TODOs to record next steps 2018-12-11 16:06:42 -05:00
Setup.hs Add project template 2018-12-11 09:03:15 -05:00
stack.yaml Update to latest LTS release 2019-01-31 10:08:08 -05:00

Heedless DB

Build Status

A simple, persistent key-value store implemented in Haskell. This is a prototype for a verified version, along the same lines as specious-db, but implemented in Haskell to more closely resemble our shallow embedding and extraction approach for getting runnable code.

The goal is to implement the same functionality as specious-db and benchmark to identify whether Haskell performance is acceptable and what we need to do to ensure that.

TODO

  • Figure out how to handle available operations from data structures. This resembles the problem we have in Coq of keeping track of references to data structures and the filesystem. The current solution for the filesystem involves writing the implementation in a typeclass that has MonadIO + all the operations we want; this is pretty good because it looks like a layer, but it's awkward when there are lots of operations.
  • First test: get just a write-ahead log working (meaning port wal.go) and run the database only enough to fill the log, compare performance of that.
  • Need to figure out how efficient array access in Haskell is using mutable arrays from the array package.