A conflict-free replicated data type (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.
- gcounter A grow-only counter
- LWW Register A last-write wins register
- pncounter A counter which can increment or decrement
- rgass A CRDT for efficient string-based collaborative editing