/whirl-frontend

whirl-framework/whirl-frontend mirror

Primary LanguageC++

Whirl

Framework for implementing & testing tiny distributed systems

Frontend

  • Concurrency (via await)
  • RPC (via commute)
  • Filesystem
  • Persistent KV storage
  • Wall / monotonic time
  • Randomness
  • Logging (via timber and fmtlib)

Engines

Engine Status Description
matrix Deterministic simulator
process Standalone node process

Inspiration

Simulation + Fault Injection

FoundationDB

AWS

Jepsen

Paxi

Model checking

Microsoft Coyote

DSLabs

StateRight

Fuzzing

Requirements

  • x86-64
  • Clang++ (>= 8)

Dependencies

Build

Whirl-Matrix

# 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