GithubHelp home page GithubHelp logo

streamich / ron-cxx Goto Github PK

View Code? Open in Web Editor NEW

This project forked from gritzko/ron-cxx

0.0 2.0 0.0 727 KB

RON2.1 C++ implementation

License: MIT License

CMake 3.06% Shell 1.21% Ragel 2.62% C++ 93.11%

ron-cxx's Introduction

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.

ron-cxx's People

Contributors

canadaduane avatar cblp avatar gritzko avatar tonsky avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.