- Présentation des fondements théoriques et de l’implémentation technique de
cola, un CRDT de texte (Conflict-free Replicated Data Type) pour l’édition collaborative en temps réel, écrit en Rust
- Un CRDT est une structure de données qui peut être répliquée et modifiée simultanément sur plusieurs sites, avec une convergence garantie sans coordination d’une autorité centrale
- L’article se divise entre la représentation de l’état du document et les éditions qui le transforment, la manière d’implémenter efficacement le framework dans le code, puis une comparaison par benchmarks entre
cola et d’autres bibliothèques CRDT basées sur Rust
- L’auteur présente dans le texte le concept d’
Anchors, utilisé pour spécifier à la fois les insertions et les suppressions d’une manière qui active la concurrence
- L’article explique aussi comment gérer les insertions en conflit à l’aide de
Lamport timestamps, en les triant par ordre décroissant selon leur Lamport timestamp
- L’auteur introduit le concept de
tombstones pour gérer les suppressions. Les caractères marqués comme tombstoned sont indiqués comme supprimés mais restent conservés dans le document
- L’article aborde également l’amélioration des performances du système grâce à l’utilisation de
G-trees (grow-only trees). Les G-trees peuvent être parcourus dans les deux sens, ce qui rend les éditions répétées à la même position du curseur très rapides
- L’auteur conclut l’article avec une comparaison de benchmarks entre
cola et trois autres CRDT implémentés en Rust : diamond-types, automerge et yrs. cola surpasse les trois autres, aussi bien en amont qu’en aval
- L’auteur souligne que
cola est actuellement l’implémentation de CRDT de texte la plus rapide connue, mais qu’il reste encore du travail avant qu’elle soit prête pour la production, notamment la prise en charge de l’undo/redo et d’autres fonctionnalités
1 commentaires
Avis Hacker News
slotmapafin de permettre la suppression sans avoir à craindre que les index se déplacent ou pointent vers d’autres valeurs