Skip to content

Add ygo (Go port of Yjs) to Ports to other languages#79

Open
bnimit wants to merge 1 commit into
yjs:mainfrom
bnimit:add-ygo-port
Open

Add ygo (Go port of Yjs) to Ports to other languages#79
bnimit wants to merge 1 commit into
yjs:mainfrom
bnimit:add-ygo-port

Conversation

@bnimit
Copy link
Copy Markdown

@bnimit bnimit commented May 20, 2026

Adds a Go port of Yjs to the Ports to other languages page.

About the port

Scope

  • Full CRDT engine: YText (with format markers, embeds, Quill ToDelta / ApplyDelta), YArray, YMap, YXmlFragment, YXmlElement, YXmlText. Arbitrarily nested types.
  • Wire formats: V1 and V2 codecs, plus MergeUpdates / DiffUpdate / state-vector helpers. Wire compatibility with yjs@13.x is verified by a TestCompat_* fixture suite that loads JS-generated .bin files and asserts byte-for-byte equivalence in both directions.
  • Sync protocol: y-protocols sync and awareness messages, with transports for WebSocket and HTTP.
  • Production hardening: UndoManager, structured logging via slog, context-aware methods, panic-safe transactions, DoS caps on awareness state and the pending-items queue, semaphore-backed connection limits, crypto/rand ClientID.

Changes

Single edit to ecosystem/ports-to-other-languages.md: one {% embed %} block following the existing format. No other files affected.

ygo is a pure-Go port of Yjs at https://github.com/reearth/ygo,
MIT-licensed, V1+V2 wire-compatible with yjs@13.x (verified by
the TestCompat fixture suite). Active development for 14 months,
currently at v1.11.1, in production use at re:earth.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant