$\pi_{dist}$: Towards a Typed $\pi$-calculus for Distributed Programming Languages
Ignas Vyšniauskas
Abstract:
It is becoming increasingly clear that computing systems should not be viewed as isolated machines performing sequential steps, but instead as cooperating collections of such machines. The work of Milner and others shows that 'classical' models of computation (such as the λ-calculus) are encompassed by suitable distributed models of computation. However, while by now (sequential) computability is quite a rigid mathematical notion with many fruitful interpretations, an equivalent formal treatment of distributed computation, which would be universally accepted as being canonical, seems to be missing.
The goal of this thesis is not to resolve this problem, but rather to revisit the design choices of formal systems modelling distributed systems in attempt to evaluate their suitability for providing a formals basis for distributed programming languages. Our intention is to have a minimal process calculus which would be amenable to static analysis. More precisely, we wish to harmonize the assumptions of π-calculus with a linear typing discipline for process calculi called Session Types.
We begin by discussing and comparing various process calculi, both in purely theoretical and in pragmatic terms. In doing so, we discover an interesting misalignment between some folklore interpretations of results in the literature on process calculi, which stems from a lack of sufficient criteria for relating process languages.
The comparison leads us to a restricted subset of π-calculus which we call π_dist , reminiscent of Merro and Sangiorgi's Lπ-calculus in terms of semantics and of Fournet and Gonthier's Join-calculus in spirit. We describe the reduction and transition semantics of this calculus, develop some of its theory and discuss its relative expressiveness. In particular, we show that π_dist is more distributable than the asynchronous π-calculus.
We then describe a minimal programming language, TinyPi, in order to abstract away from the syntax of π-calculus and more faithfully expresses the intended semantics of π_dist. With the aim of providing formal guarantees about π_dist programs, we investigate the application of Session Types. In particular, we show that the type system πDILL of Caires and Pfenning's – with some small modifications – can be used to type process communication under asynchronous FIFO semantics, while preserving full type safety.