Implementation of a causal tree replicated data type (RDT) in Go.
We use Go 1.18 for its fuzzing capabilities.
crdt/
: replicated data type implementationdiff/
: string diff implementationdebug/
: web viewer of CRDT structurecmd/demo/
: demo serverbench/
: benchmark results and analysis
The demo server allows you to play around with concurrent text CRDTs. To run the demo server, execute the following from the repo root:
$ go run cmd/demo/demo.go --debug_dir debug/ --static_dir cmd/demo/static/ --debug
Serving in :8009
The web interface at http://localhost:8009 allows you to edit multiple structures in the same page, by forking lists into separate sites, and sync'ing them to test the automatic merge capabilities. One can also change which sites are used to sync from.
If run in --debug
mode, the demo server keeps a log of all operations in JSONL format. This log
can be visualized at http://localhost:8009/debug. Tests also write a log in the testdata/
directory.
This webpage can be served independently of a demo server, for example, by running python -m http.server
from the debug/
directory.
To run all the test packages of the project, execute the following command from the repo root:
$ go test ./...