- Rust में लिखे गए
cola नामक रीयल-टाइम collaborative editing के लिए टेक्स्ट CRDT (Conflict-free Replicated Data Type) की सैद्धांतिक पृष्ठभूमि और तकनीकी implementation की व्याख्या
- CRDT एक ऐसी data structure है जिसे कई साइटों पर एक साथ replicate और modify किया जा सकता है, और केंद्रीय authority के coordination के बिना भी convergence की गारंटी होती है
- लेख की सामग्री को document की state representation और उसे transform करने वाले edits, code में framework को efficiently implement करने के तरीके, और
cola तथा अन्य Rust-आधारित CRDT libraries के साथ benchmark comparison में बाँटा गया है
- लेखक टेक्स्ट में
Anchors नामक एक concept पेश करता है, जिसका उपयोग insertion और deletion दोनों को इस तरह निर्दिष्ट करने में किया जाता है कि concurrency सक्षम हो सके
- लेख में
Lamport timestamps का उपयोग करके conflicting insertions को Lamport timestamp के अनुसार descending order में sort कर handle करने के तरीके पर चर्चा की गई है
- लेखक deletion को handle करने के लिए
tombstones नामक concept प्रस्तुत करता है। tombstoned characters को deleted के रूप में mark किया जाता है, लेकिन वे document में बने रहते हैं
- लेख में
G-trees (grow-only trees) के उपयोग से system performance बेहतर करने के तरीकों पर चर्चा की गई है। G-trees को दोनों दिशाओं में traverse किया जा सकता है, इसलिए एक ही cursor position पर बार-बार होने वाले edits बहुत तेज़ होते हैं
- लेखक लेख का समापन
cola की तुलना Rust में implemented तीन अन्य CRDT — diamond-types, automerge, yrs — के साथ benchmark results से करता है। cola upstream और downstream दोनों दिशाओं में इन तीनों से बेहतर प्रदर्शन करता है
- लेखक बताता है कि
cola इस समय ज्ञात सबसे तेज़ टेक्स्ट CRDT implementation है, लेकिन production-ready होने के लिए अभी और काम बाकी है, जैसे undo/redo और अन्य features का समर्थन
1 टिप्पणियां
Hacker News राय
slotmapनाम के crate का उपयोग करने का सुझाव दिया गया ताकि indices के खिसकने या दूसरे values को point करने की चिंता के बिना deletion support किया जा सके