- Explicação do contexto teórico e da implementação técnica do
cola, um CRDT de texto (Conflict-free Replicated Data Type) para edição colaborativa em tempo real, escrito em Rust
- CRDT é uma estrutura de dados que pode ser replicada e modificada simultaneamente em vários sites, garantindo convergência mesmo sem coordenação de uma autoridade central
- O conteúdo do texto se divide entre a representação do estado de um documento e as edições que o transformam, formas de implementar o framework de modo eficiente no código e uma comparação de benchmarks entre o cola e outras bibliotecas CRDT baseadas em Rust
- O autor apresenta no texto o conceito de
Anchors, usado para especificar tanto inserções quanto exclusões de uma forma que habilita concorrência
- O artigo discute como lidar com inserções conflitantes usando
Lamport timestamps, ordenando-as em ordem decrescente de acordo com o timestamp de Lamport
- O autor introduz o conceito de
tombstones para lidar com exclusões. Caracteres marcados como tombstoned são sinalizados como excluídos, mas continuam mantidos no documento
- O artigo discute como melhorar o desempenho do sistema com o uso de
G-trees (grow-only trees). Como as G-trees podem ser percorridas em ambas as direções, edições repetidas na mesma posição do cursor ficam muito rápidas
- O autor encerra o artigo com uma comparação de benchmarks entre o cola e outros três CRDTs implementados em Rust: diamond-types, automerge e yrs. O cola supera os outros três tanto no sentido upstream quanto downstream
- O autor aponta que o cola é atualmente a implementação de CRDT de texto mais rápida conhecida, mas ainda há trabalho a fazer para deixá-lo pronto para produção, como suporte a undo/redo e outros recursos
1 comentários
Comentários do Hacker News
slotmappara permitir exclusão sem preocupação com índices se moverem ou passarem a apontar para outros valores