Y CRDT
这是一个Rust库集合,旨在实现Yjs算法和协议,并考虑到跨语言和跨平台支持。它的目标是保持与Yjs的行为和二进制协议兼容性,因此使用Yjs/Yrs的项目应该能够相互操作。
项目组织:
- lib0是一个用于高效(且相当快速)数据交换的序列化库。
- yrs(读作"wires")是一个核心Rust库,是其他项目的基石。
- yffi(读作"wifi")是yrs的包装器,用于提供原生C语言外部函数接口。另请参阅:C头文件。
- ywasm是yrs的包装器,面向WebAssembly和JavaScript API。
使用yrs的其他项目:
项目间的功能对等性
yjs (13.6) | yrs (0.18) | ywasm (0.18) | yffi (0.18) | y-rb (0.5) | y-py (0.6) | ydotnet (0.4) | yswift (0.2) | |
---|---|---|---|---|---|---|---|---|
YText: 插入/删除 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
YText: 格式化属性和增量 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
YText: 嵌入元素 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
YMap: 更新/删除 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
YMap: 弱链接 | ✅ (weak-links 分支) | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
YArray: 插入/删除 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
YArray 和 YText 引用 | ✅ (weak links 分支) | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
YArray: 移动 | ✅ (move 分支) | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ |
XML 元素、片段和文本 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
子文档 | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ |
共享集合:观察者 | ✅ | ✅ | ✅ (与 yjs 不兼容) | ✅ | ✅ | ✅ | ✅ | ✅ |
共享集合:递归嵌套 | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
文档观察者 | ✅ | ✅ | ✅ (与 yjs 不兼容) | ✅ | ✅ | ✅ | ✅ | |
事务: 起源 | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ |
快照 | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
粘性索引 | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ |
撤销管理器 | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ |
感知功能 | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ |
网络提供者: WebSockets | ✅ (y-websocket) | ✅ (yrs-warp) | ❌ | ❌ | ✅ (y-rb_actioncable) | ✅ (ypy-websocket) | ✅ | ❌ |
网络提供者: WebRTC | ✅ (y-webrtc) | ✅ (yrs-webrtc) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |