Skip to content
RON2.1 C++ implementation
C++ CMake Ragel Shell
Branch: master
Clone or download
Latest commit c1ea447 Jul 9, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin ParseUtf8() May 27, 2019
db don't mix test and current databases up Jun 9, 2019
doc vim syntax file tweaks May 7, 2019
ragel
rdt TextFrame: spans and string spreads Jun 5, 2019
ron libron readme Jul 9, 2019
test lighten the bb test syntax May 9, 2019
.clang-tidy C arrays are OK Jun 21, 2019
.gitignore ignore all build* dirs Apr 9, 2019
CMakeLists.txt fix a MacOS build oopsie Jun 7, 2019
LICENSE
README.md use gtest for test03-hash Apr 28, 2019
TODO.md txt mapper - initial outline May 22, 2019

README.md

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
    • Java
    • Rust
    • node.js
    • Python
    • Go
    • ?Haskell
  • WebAssembly (in-memory) lib,
  • other backends.

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:

  • zlib,
  • libbz2.

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.

You can’t perform that action at this time.