A Pairwise Abstraction for Round-Based Protocols
Distributed systems are hard to program, for a number of reasons. Some of these reasons are inherent. System state is scattered across multiple nodes, and is not random access. Bandwidth is an ever-present concern. Fault tolerance is much more complicated in a partial-failure model. This presents both a challenge and an opportunity for the programming languages community: What should languages for distributed systems look like? What are the shortcomings of conventional languages for describing systems that extend beyond a single machine? Prior work in this area has produced diverse solutions.