Giter VIP home page Giter VIP logo

otto-test's Introduction

Otto: a unified approach to CRDTs and OT

This repo contains tests for otto. otto enables any boring Rust data structure (without Rc, RefCell etc.) to be used as a replicated data type. It supports achieving convergence via multiple approaches, including:

It also supports combining these approaches to synchronise a mix of clients using both CRDT and OT techniques.

Project aims

  • Minimal bookkeeping (no timestamps, IDs or similar)
  • Rich set of data types (e.g. RichText) and operations (e.g. sort and group_by operations on List<T>)
  • Composability (support arbitrary nesting of types, e.g. List<(u64, List<u8>)>)
  • Differential dataflow support
  • Performance, sufficient for overhead to be negligible in real-world use (within ~1 OoM of Diamond types)
  • Achieve the strongest known useful properties (e.g. convergence and inverse properties)

Data types supported

Data type Operations supported
Map<K, V> insert(K, V), delete(K), map_at(K, V::Instr)
Set<T> insert(T), delete(T)
List<T> insert_at(usize, T), delete_at(usize), map_at(usize, T::Instr)
Register<T> set(T), map(T::Instr)
(A, B, ...) map_a(A::Instr), map_b(B::Instr), ...
#[derive(State)] for arbitrary structs and enums map_field_a(A::Instr), map_field_b(B::Instr), ...
bool u8 u16 u32 u64 u128 i8 i16 i32 i64 i128 f32 f64 char usize isize -

License

Licensed under either of

at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

otto-test's People

Contributors

amascolo avatar alecmocatta 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.