loro-go: a pure-Go port of the Loro wire format #1016
Deln0r
started this conversation in
Show and tell
Replies: 1 comment
|
🦜 Thank you for your contributions to the Loro ecosystem! You can create an PR here, add your repository and provide a brief description note that it is a community implementation. |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Hey! I built a pure-Go library for the Loro Fast wire format and wanted to
show it: https://github.com/Deln0r/loro-go
It is an independent reimplementation, not a binding. To avoid confusion:
there is already a loro-go by aholstenson that wraps the Rust core through
UniFFI (cgo). Mine is a from-scratch port, no cgo, single Go toolchain build.
Same name, different approach.
What works in v0.1.0: full decode of FastUpdates and FastSnapshot, encode of
FastUpdates byte-identical to loro-crdt@1.12.5, plus state reconstruction with
CRDT merge for map, list, text, movable list and tree. The bytes are checked
two ways: against real loro-crdt exports, and against serde_columnar golden
vectors from a small Rust harness. A blob produced by the Go side imports back
into loro-crdt with matching toJSON.
Still early, plenty not covered yet (listed in the readme). Mostly posting to
share it, and to ask: is there interest in an independent Go port, and a place
you would want it listed separately from the UniFFI binding? I will keep it in
sync with the format as it moves.
Thanks for Loro. The wire format was a pleasure to read.
All reactions