A collection of Rust libraries oriented around implementing Yjs algorithm and protocol with cross-language and cross-platform support in mind. It aims to maintain behavior and binary protocol compatibility with Yjs, therefore projects using Yjs/Yrs should be able to interoperate with each other.
Project organization:
- lib0 is a serialization library used for efficient (and fairly fast) data exchange.
- yrs (read: wires) is a core Rust library, a foundation stone for other projects.
- yffi (read: wifi) is a wrapper around yrs used to provide a native C foreign function interface. See also: C header file.
- ywasm is a wrapper around yrs that targets WebAssembly and JavaScript API.
Other projects using yrs:
| yjs (13.6) |
yrs (0.21) |
ywasm (0.18) |
yffi (0.21) |
y-rb (0.5) |
y-py (0.6) |
ydotnet (0.4) |
yswift (0.2) |
y_ex (0.6) |
|
|---|---|---|---|---|---|---|---|---|---|
| YText: insert/delete | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| YText: formatting attributes and deltas | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| YText: embeded elements | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| YMap: update/delete | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| YMap: weak links | ✅ (weak-links branch) |
✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| YArray: insert/delete | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| YArray & YText quotations | ✅ (weak links branch) |
✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ |
| YArray: move | ✅ (move branch) |
✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ | ✅ |
| XML Element, Fragment and Text | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
| Sub-documents | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ |
| Shared collections: observers | ✅ | ✅ | ✅ (incompatible with yjs) |
✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| Shared collections: recursive nesting | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Document observers | ✅ | ✅ | ✅ (incompatible with yjs) |
✅ | ✅ | ✅ | ✅ | ✅ | |
| Transaction: origins | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ |
| Snapshots | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Sticky indexes | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ |
| Undo Manager | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ❌ |
| Awareness | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ |
| Network provider: WebSockets | ✅ (y-websocket) |
✅ (yrs-warp) |
❌ | ❌ | ✅ (y-rb_actioncable) |
✅ (ypy-websocket) |
✅ | ❌ | ❌ |
| Network provider: WebRTC | ✅ (y-webrtc) |
✅ (yrs-webrtc) |
❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |