RON 2.1 reference implementation in C++
Replicated Object Notation (RON) is a format for distributed live data. See http://replicated.cc for the protocol spec.
This is a Ragel/C++ implementation of:
- Replicated Object Notation (parsers/builders),
- Replicated Data Types (RON based CRDTs),
- libswarmdb.so, an embedded syncable database (RocksDB-based),
- swarmdb, a standalone RON key-value db (a CLI to the lib).
Still in the works / planned / envisioned:
- libswarmdb bindings for higher-level languages
- WebAssembly (in-memory) lib,
- other backends.
- ensure you have
- a C++ compiler (a recent clang is preferred),
- CMake (3.9.4 and up),
mkdir build && cd build
(ninja and xcode builds are supported too, e.g.
cmake -G Ninja .. && ninja)
Static dependencies are fetched from the net and built by cmake:
Dymanic dependencies are taken from the system:
New 2.1 features
- RON-open two-UUID notation
- strict references (every object is a causal tree)
- merge/gc separation (thanks @archagon)
- multiple encodings (text, binary, JSON, CBOR)
- chain-based compression
- bin/ - utility scripts
- ragel/ - Ragel grammars, parsers
- ron/ - RON basic primitives, encodings
- rdt/ - replicated data types, merge, gc
- db/ - RocksDB based implementation
- deps/ - libs, dependencies
Code conventions as per Google Style Guide.
bin/commit.sh for commits.