hyhac
shuttle
hyhac | shuttle | |
---|---|---|
1 | 4 | |
12 | 576 | |
- | 4.0% | |
10.0 | 6.9 | |
almost 9 years ago | about 1 month ago | |
Haskell | Rust | |
BSD 3-clause "New" or "Revised" License | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
hyhac
-
FoundationDB: A Distributed Key-Value Store
When I was writing a Haskell client library for Hyperdex, another distributed kv store, I found it incredibly helpful to implement a simulator for correctness. This helped me identify which behavior was unspecified (arithmetic overflow: should error) or where my simulator deviated.
https://github.com/AaronFriel/hyhac/blob/master/test/Test/Hy...
Alas, I think Hyperdex development paused a few years later. It's a shame that it stopped then.
shuttle
-
FoundationDB: A Distributed Key-Value Store
This is what we did for our KV store at S3: https://www.amazon.science/publications/using-lightweight-fo...
Using https://github.com/awslabs/shuttle which works on our real Rust code.
-
P Language
They've also developed a library that plugs into their actual Rust code to verify it (rather than writing a secondary model in TLA+ or P, it's easier to verify the actual system source code).
See https://github.com/awslabs/shuttle and a whitepaper at https://www.amazon.science/publications/using-lightweight-fo...
Disclaimer: used to work at AWS and had some involvement in this stuff
-
Best tool to find deadlocks (in async code)
loom and shuttle can help you narrow down the problem.
-
Eliminating Data Races in Firefox
Loom is really awesome, though it is focused on exhaustive testing, so not suitable for code that has a lot of possible interleavings (e.g. due to a ton of threads, or a large body of code).
There is a new project out of AWS called Shuttle [1] which is like Loom, but it does random exploration instead of exhaustive exploration, which enables massively distributed testing of really complicated stuff.
[1] https://github.com/awslabs/shuttle
What are some alternatives?
tigris - Tigris is an Open Source Serverless NoSQL Database and Search Platform.
loom - Concurrency permutation testing tool for Rust.
Permazen - Language-Natural Persistence Layer for Java
refound - a RethinkDB implementation backed by FoundationDB
foundationdb - FoundationDB - the open source, distributed, transactional key-value store
fdb-record-layer - A record-oriented store built on FoundationDB
relic - Functional relational programming for Clojure(Script).
Servo - Servo, the embeddable, independent, memory-safe, modular, parallel web rendering engine
datascript - Immutable database and Datalog query engine for Clojure, ClojureScript and JS
mvsqlite - Distributed, MVCC SQLite that runs on FoundationDB.