tablyinc / otto-test

Otto: a unified approach to CRDTs and OT
Apache License 2.0
16 stars 1 forks source link

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

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.