- Explicación del trasfondo teórico y la implementación técnica de un CRDT de texto (Conflict-free Replicated Data Type) para edición colaborativa en tiempo real llamado 'cola', escrito en Rust
- Un CRDT es una estructura de datos que puede replicarse y modificarse simultáneamente en múltiples sitios, con convergencia garantizada incluso sin coordinación de una autoridad central
- El contenido del artículo se divide en la representación del estado del documento y las ediciones que lo transforman, cómo implementar eficientemente el framework en código, y una comparación de benchmarks entre cola y otras bibliotecas CRDT basadas en Rust
- El autor presenta en el texto el concepto de 'Anchors', que se usa para especificar tanto inserciones como eliminaciones de una manera que habilita la concurrencia
- El artículo analiza cómo manejar inserciones en conflicto usando 'Lamport timestamps' y ordenándolas en orden descendente según la marca de tiempo de Lamport
- El autor introduce el concepto de 'tombstones' para manejar eliminaciones. Los caracteres marcados como tombstoned se consideran eliminados, pero siguen conservándose en el documento
- El artículo analiza cómo mejorar el rendimiento del sistema mediante el uso de 'G-trees' (grow-only trees). Las G-trees pueden recorrerse en ambos sentidos, por lo que las ediciones repetidas en la misma posición del cursor son muy rápidas
- El autor cierra el artículo con una comparación de benchmarks entre cola y otros tres CRDT implementados en Rust: diamond-types, automerge y yrs. Cola supera a los otros tres tanto en la dirección ascendente como descendente
- El autor señala que cola es actualmente la implementación de CRDT de texto más rápida conocida, aunque todavía hay trabajo pendiente para dejarla lista para producción, como agregar soporte para undo/redo y otras funciones
1 comentarios
Comentarios en Hacker News
slotmappara permitir eliminaciones sin preocuparse de que los índices se muevan o terminen apuntando a otros valores