Convergence Is Not Enough:合并为何失效?

Convergence Is Not Enough:合并为何失效?

在 Livelymerge 项目中,Dan Ingalls、Peter Van Hardenberg 和我(Alex Warth)试图将 Automerge 用于合并运行中程序的堆内存。虽然 Automerge 能保证多客户端最终状态一致,但我们发现这种收敛并不足以维护程序不变量。通过一个链表合并的实例,我们看到并发修改可能导致链表截断或形成死循环。问题在于 Automerge 合并的是写操作而非用户意图,导致跨对象的约束(如双向链表、树结构)被破坏。我们正探索通过定义 merge-aware datatypes,让合并操作在更高层级的抽象上执行,以在保持收敛的同时尊重数据结构的完整性。

合并重现的是操作的效果,而非用户的意图。

同日更多故事

2026-08-03