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
Building
- ensure you have
- a C++ compiler (a recent clang is preferred),
- make,
- CMake (3.9.4 and up),
- git
-
mkdir build && cd build
-
cmake ..
-
make
(ninja and xcode builds are supported too, e.g. cmake -G Ninja .. && ninja
)
Static dependencies are fetched from the net and built by cmake:
- rocksdb,
- gflags,
- botan-2,
- snappy,
- myers-diff,
- cpp-btree.
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
Contents
- 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
- ...
Contributing
Code conventions as per Google Style Guide.
Preferably, use bin/commit.sh
for commits.
Open Source Agenda is not affiliated with "Ron Cxx" Project. README Source:
gritzko/ron-cxx