Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/y-crdt/y-crdt
Rust port of Yjs
https://github.com/y-crdt/y-crdt
crdt rust yjs
Last synced: 3 days ago
JSON representation
Rust port of Yjs
- Host: GitHub
- URL: https://github.com/y-crdt/y-crdt
- Owner: y-crdt
- License: other
- Created: 2020-09-29T14:48:17.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2024-10-25T10:04:11.000Z (about 2 months ago)
- Last Synced: 2024-10-29T15:38:26.684Z (about 1 month ago)
- Topics: crdt, rust, yjs
- Language: Rust
- Homepage: https://docs.rs/yrs/
- Size: 15 MB
- Stars: 1,502
- Watchers: 24
- Forks: 87
- Open Issues: 81
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-starred - y-crdt/y-crdt - Rust port of Yjs (rust)
README
# Y CRDT
A collection of Rust libraries oriented around implementing [Yjs](https://yjs.dev/) 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](https://github.com/y-crdt/y-crdt/blob/main/tests-ffi/include/libyrs.h).
- **ywasm** is a wrapper around *yrs* that targets WebAssembly and JavaScript API.Other projects using *yrs*:
- [ypy](https://github.com/y-crdt/ypy) - Python bindings.
- [yrb](https://github.com/y-crdt/yrb) - Ruby bindings.## Feature parity among projects
| | 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) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |## Maintainers
- [Bartosz Sypytkowski](https://github.com/Horusiath)
- [Kevin Jahns](https://github.com/dmonad)
- [John Waidhofer](https://github.com/Waidhoferj)## Sponsors
[![NLNET](https://nlnet.nl/image/logo_nlnet.svg)](https://nlnet.nl/)
[![Ably](https://voltaire.ably.com/static/ably-logo-46433d9937b94509fc62ef6dd6d94ff1.png)](https://ably.com/)