RevMiGo: Reversible Channel-Based Communication in Go Language
摘要
We introduce RevMiGo, a reversible version of MiGo, a process calculus based on Go’s asynchronous message-passing. In RevMiGo, send and receive actions can be reversed: a receive can enqueue a message, and a send can dequeue it in the backward direction. Communication keys are used to link actions in send and receive and maintain consistency. To prevent deadlocks in the backward direction, we derive an order from the history of send actions, ensuring correct message flow and causality.