Reversible Communicating Processes

Geoffrey Brown
(Indiana University School of Informatics and Computing)
Amr Sabry
(Indiana University School of Informatics and Computing)

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 distributed language can be efficiently implemented in a fully distributed manner.

We discuss such a language, supporting CSP-style synchronous communication, embedded in Scala. While this language provided the motivation for the work described in this paper, our focus is upon the distributed implementation. In particular, we demonstrate that a "high-level" semantic model can be implemented using a simple point-to-point protocol.

In Simon Gay and Jade Alglave: Proceedings Eighth International Workshop on Programming Language Approaches to Concurrency- and Communication-cEntric Software (PLACES 2015), London, UK, 18th April 2015, Electronic Proceedings in Theoretical Computer Science 203, pp. 45–59.
Published: 10th February 2016.

ArXived at: https://dx.doi.org/10.4204/EPTCS.203.4 bibtex PDF
References in reconstructed bibtex, XML and HTML format (approximated).
Comments and questions to: eptcs@eptcs.org
For website issues: webmaster@eptcs.org