Reversible Communicating Processes
Geoffrey Brown (Indiana University School of Informatics and, Computing), Amr Sabry (Indiana University School of Informatics and, Computing)

TL;DR
This paper presents a practical approach to implementing reversible distributed programming languages that support backtracking and communication unwinding, using a distributed protocol embedded in Scala.
Contribution
It introduces a fully distributed implementation of a reversible language with CSP-style communication, moving beyond centralized control models.
Findings
Efficient distributed implementation demonstrated
Reversible communication protocols implemented with simple point-to-point messaging
Supports complex transactions with backtracking and unwinding capabilities
Abstract
Reversible distributed programs have the ability to abort unproductive computation paths and backtrack, while unwinding communication that occurred in the aborted paths. While it is natural to assume that reversibility implies full state recovery (as with traditional roll-back recovery protocols), an interesting alternative is to separate backtracking from local state recovery. For example, such a model could be used to create complex transactions out of nested compensable transactions where a programmer-supplied compensation defines the work required to "unwind" a transaction. Reversible distributed computing has received considerable theoretical attention, but little reduction to practice; the few published implementations of languages supporting reversibility depend upon a high degree of central control. The objective of this paper is to demonstrate that a practical reversible…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
