Crates.io | jarl |
lib.rs | jarl |
version | 0.1.4 |
source | src |
created_at | 2024-09-14 16:54:25.832112 |
updated_at | 2024-09-15 19:50:22.700295 |
description | Jarl (Just another Raft library) |
homepage | |
repository | https://github.com/akesling/hubby/tree/main/jarl |
max_upload_size | |
id | 1374926 |
size | 9,731 |
Jarl may be Just Another Raft Library, but it makes a point to be literally just another Raft library. There's no I/O, no standard library, no dependencies, no internal allocations, no async... literally just a state machine for managing consensus of a "virtual" cell.
The library is a single Rust file. As simple as it gets.
All Raft log state is managed in-memory.
The goal is to eventually have wrapping libraries which implement various transport integrations for using "off-the-shelf" (e.g. gRPC, OpenAPI, etc.) in an actual networked context. If we're feeling cheeky, we might even implement some unexpected IPC mechanisms (Raft over SMS anyone? What about Raft over S3? Serverless Raft‽).