La convergencia no es suficiente

Convergence Is Not Enough

La convergencia no es suficiente

En el proyecto Livelymerge, el heap de un sistema vivo es un documento Automerge, pero fusionar el estado de un programa en ejecución puede violar invariantes. Un ejemplo con una lista enlazada muestra cómo dos intercambios concurrentes producen una lista truncada o un ciclo, porque Automerge reproduce escrituras, no intenciones. Aunque los tipos integrados de Automerge (arrays, mapas) se fusionan bien, la composición de estos tipos rompe invariantes como listas doblemente enlazadas o árboles. El autor explora la idea de tipos conscientes de la fusión, que registren operaciones de alto nivel en lugar de escrituras de bajo nivel, citando el trabajo de Kleppmann y Coln.

La fusión reproduce efectos, no intenciones, y los invariantes del programador —que cada nodo aparezca exactamente una vez, que no haya ciclos, que la lista termine— nunca se escribieron en ningún lugar que Automerge pudiera ver.

Más de este día

2026-08-03