https://github.com/jclem/crdt
Some CRDTs implemented in Go
https://github.com/jclem/crdt
crdt distributed-systems
Last synced: 10 months ago
JSON representation
Some CRDTs implemented in Go
- Host: GitHub
- URL: https://github.com/jclem/crdt
- Owner: jclem
- License: mit
- Created: 2017-10-20T21:23:41.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2017-10-21T17:17:39.000Z (over 8 years ago)
- Last Synced: 2025-08-25T08:24:12.431Z (10 months ago)
- Topics: crdt, distributed-systems
- Language: Go
- Homepage:
- Size: 13.7 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# crdt
A [conflict-free replicated data type][crdt] (CRDT) is a data structure that can
be updated concurrently (and in different orders) at different replicas. As long
as all replicas receive all states or operations on the CRDT, the values of the
replicas converge.
This package implements several CRDTs in Go. The goal is not necessarily to
create production-ready CRDTs (for example, many of them do not support safe
atomic operations, nor are they thread-safe), but rather as an exercise for me
to get more comfortable with Go and to learn about CRDTs.
## Included CRDTs
- [gcounter](gcounter/) A grow-only counter
- [LWW Register](lwwregister/) A last-write wins register
- [pncounter](pncounter/) A counter which can increment or decrement
- [rgass](rgass/) A CRDT for efficient string-based collaborative editing
[crdt]: https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type