Framework for implementing & testing tiny distributed systems
- Concurrency (via
await
) - RPC (via
commute
) - Filesystem
- Persistent KV storage
- Wall / monotonic time
- Randomness
- Logging (via
timber
andfmtlib
)
Engine | Status | Description |
---|---|---|
matrix |
✓ | Deterministic simulator |
process |
✗ | Standalone node process |
- Testing Distributed Systems w/ Deterministic Simulation
- FoundationDB or: How I Learned to Stop Worrying and Trust the Database
- Dissecting the Performance of Strongly-Consistent Replication Protocols
- https://github.com/ailidani/paxi
- Teaching Rigorous Distributed Systems With Efficient Model Checking
- https://github.com/emichael/dslabs
- x86-64
- Clang++ (>= 8)
- Await – concurrency: fibers + futures with customizable runtime
- Commute – net transport + RPC
- Timber – logging frontend (via fmtlib)
- Muesli – serialization (via cereal)
- Wheels - core utilities
# Clone repo with matrix engine
git clone https://gitlab.com/whirl-framework/whirl-matrix.git
cd whirl-matrix
# Generate build files
mkdir build && cd build
cmake -DWHIRL_MATRIX_EXAMPLES=ON ..
# Build kv example
make whirl_example_kv
# Run kv example
# --det - run determinism check
# --sims - number of simulations to run
./examples/kv/whirl_example_kv --det --sims 12345