crdt - A Golang implementation of CRDTs.

  •        593

This is an implementation of Convergent and Commutative Replicated Data Types in Go. The following state-based counters and sets have currently been implemented.

https://github.com/neurodrone/crdt

Tags
Implementation
License
Platform

   




Related Projects

Yjs - Modular building blocks for building collaborative applications like Google Docs and Figma

  •    Javascript

Yjs is a modular building blocks for building collaborative applications like Google Docs and Figma. Yjs is a high-performance CRDT for building collaborative applications that sync automatically. It exposes its internal CRDT model as shared data types that can be manipulated concurrently. Shared types are similar to common data types like Map and Array. They can be manipulated, fire events when changes happen, and automatically merge without merge conflicts.

teletype-crdt - String-wise sequence CRDT powering peer-to-peer collaborative editing in Teletype for Atom

  •    Javascript

The string-wise sequence CRDT powering peer-to-peer collaborative editing in Teletype for Atom.

yjs - A CRDT library with a powerful abstraction of shared data

  •    Javascript

Yjs is a framework for offline-first p2p shared editing on structured data like text, richtext, json, or XML. It is fairly easy to get started, as Yjs hides most of the complexity of concurrent editing. For additional information, demos, and tutorials visit y-js.org. Yjs only knows how to resolve conflicts on shared data. You have to choose a ..

crdt - Commutative Replicated Data Types for easy collaborative/distributed systems.

  •    Javascript

a CRDT is a data type designed so that operations on it commute - give the same result indepent of the order in which they are applied.CRDTs give you eventual consistency for free. it is not necessary to track concurrent changes and use complicated merge algorithms. this module is useful for collaborative/distributed/peer2peer (same things) applications.

roshi - Roshi is a large-scale CRDT set implementation for timestamped events.

  •    Go

Roshi implements a time-series event storage via a LWW-element-set CRDT with limited inline garbage collection. Roshi is a stateless, distributed layer on top of Redis and is implemented in Go. It is partition tolerant, highly available and eventually consistent. Roshi stores a sharded copy of your dataset in multiple independent Redis instances, called a cluster. Roshi provides fault tolerance by duplicating clusters; multiple identical clusters, normally at least 3, form a farm. Roshi leverages CRDT semantics to ensure consistency without explicit consensus.


automerge - A JSON-like data structure (a CRDT) that can be modified concurrently by different users, and merged again automatically

  •    Javascript

Automerge is a library of data structures for building collaborative applications in JavaScript. You can have a copy of the application state locally on several devices (which may belong to the same user, or to different users). Each user can independently update the application state on their local device, even while offline, and save the state to local disk.

antidote - A planet scale, highly available, transactional database built on CRDT technology

  •    Erlang

Welcome to the Antidote repository, the reference platform of the SyncFree European Project and the LightKone European Project. AntidoteDB is a highly available geo-replicated key-value database. AntidoteDB provides features that help programmers to write correct applications while having the same performance and horizontal scalability as AP/NoSQL databases. Furthermore, AntidoteDB operations are based on the principle of synchronization-free execution by using Conflict-free replicated datatypes (CRDTs).

orbit-db - Peer-to-Peer Databases for the Decentralized Web

  •    Javascript

OrbitDB is a serverless, distributed, peer-to-peer database. OrbitDB uses IPFS as its data storage and IPFS Pubsub to automatically sync databases with peers. It's an eventually consistent database that uses CRDTs for conflict-free database merges making OrbitDB an excellent choice for decentralized apps (dApps), blockchain applications and offline-first web applications.

riak_dt - Convergent replicated datatypes in Erlang

  •    Erlang

A set of state-based CRDTs implemented in Erlang, and based on the paper - [A Comprehensive study of Convergent and Commutative Replicated Data Types] (http://hal.inria.fr/docs/00/55/55/88/PDF/techreport.pdf) - which you may find an interesting read. Riak is getting CRDT support built in, so we've archived the old riak_dt in the branch prototype. No further work will be done on it. This repo is now a reusable library of QuickCheck tested implementations of CRDTs.

xray - An experimental next-generation Electron-based text editor

  •    Rust

The core of the application is written in Rust. The core is a pure Rust library that lives in xray_core. The core is then exposed to JavaScript as a native add-on for Node.js in xray_core_node.The buffer representation builds on what we learned with the Teletype CRDT, representing the document as a sequence of fragments in a persistent copy-on-write B+ tree. This should have a number of benefits.

lasp - Prototype implementation of Lasp in Erlang.

  •    Erlang

Lasp is a programming model for synchronization-free computations. Lasp requires Erlang 19 or greater. Once you have Erlang installed, do the following to install and build Lasp.

peer-pad - 📝 Online editor providing collaborative editing in really real-time using CRDTs and IPFS

  •    Javascript

PeerPad is a decentralized editor that allows concurrent writing of text. Besides making live changes to a given document, it allows read-only nodes to follow the changes in real-time. It also allows you to publish a self-contained snapshot of the document to IPFS. Clone the repo and install the dependencies from npm.

mesh - A tool for building distributed applications.

  •    Go

Mesh is a tool for building distributed applications. Mesh implements a gossip protocol that provide membership, unicast, and broadcast functionality with eventually-consistent semantics. In CAP terms, it is AP: highly-available and partition-tolerant.

C-Sharp-Algorithms - A C# plug-and-play class-library project of standard Data Structures and Algorithms

  •    CSharp

A C# plug-and-play class-library project of standard Data Structures and Algorithms. It contains 35+ Data Structures and 30+ Algorithms designed as Object-Oriented isolated components. Even though this project started for educational purposes, the implemented Data Structures and Algorithms are standard, efficient, stable and tested.This project originally started out as an interview preparation project. However, after receiving a great amount of positive responses on reddit, and noticing excitement from a few GitHubers to contribute furthermore to it, the project took on a different meaning. So, I decided to keep maintaining it as a reference for data structures and algorithm implementations in C# as well as my own research side-project under these topics.

scalacaster - Purely Functional Algorithms and Data Structures in Scala

  •    Scala

Since Fender Stratocaster is a classic guitar, Scalacaster is about classic algorithms and data structures in Scala. Scalacaster includes loads of widely used implementation techniques and approaches, which have been developed by best programmers and enthusiasts of functional programming. Studying purely functional data structures is always fun and challenge for researchers, since data structures in a functional setting are much elegant and smarter than in an imperative setting. Scalacaster is neither a library nor framework. Moreover, Scalacaster`s code is not supposed to be executed at all. Scalacaster's code is not for Scala compiler but for human beings, for enthusiasts and researchers of the Scala programming language and its application in the area of implementation of the purely functional data structures. So, the best way to use Scalacaster is to read through its source code and comments.

sdsl-lite - Succinct Data Structure Library 2.0

  •    C++

The Succinct Data Structure Library (SDSL) is a powerful and flexible C++11 library implementing succinct data structures. In total, the library contains the highlights of 40 research publications. Succinct data structures can represent an object (such as a bitvector or a tree) in space close to the information-theoretic lower bound of the object while supporting operations of the original object efficiently. The theoretical time complexity of an operation performed on the classical data structure and the equivalent succinct data structure are (most of the time) identical. Succinct data structures have very attractive theoretical properties. However, in practice implementing succinct data structures is non-trivial as they are often composed of complex operations on bitvectors. The SDSL Library provides high quality, open source implementations of many succinct data structures proposed in literature.

sirius - A distributed system library for managing application reference data

  •    Scala

Sirius is a library for distributing and coordinating data updates amongst a cluster of nodes. It handles building an absolute ordering for updates that arrive in the cluster, ensuring that cluster nodes eventually receive all updates, and persisting the updates on each node. These updates are generally used to build in-memory data structures on each node, allowing applications using Sirius to have direct access to native data structures representing up-to-date data. Sirius does not, however, build these data structures itself -- instead, the client application supplies a callback handler, which allows developers using Sirius to build whatever structures are most appropriate for their application. Said another way: Sirius enables a cluster of nodes to keep developer-controlled in-memory data structures eventually consistent, allowing I/O-free access to shared information.

rpds - Rust Persistent Data Structures

  •    Rust

Rust Persistent Data Structures provides fully persistent data structures with structural sharing. Your classic functional list.

Data-Structures-and-Algorithms - Data Structures and Algorithms implementation in Go

  •    Go

There are several data structures and algorithms implemented in this project. The list will be replenished with time. The library is not intended for direct use by importing. We strongly recommend copying the necessary implementations and adjusting to your case.






We have large collection of open source products. Follow the tags from Tag Cloud >>


Open source products are scattered around the web. Please provide information about the open source projects you own / you use. Add Projects.