Join-calculus

The join-calculus was developed to provide a formal basis for the design of distributed programming languages, and therefore intentionally avoids communications constructs found in other process calculi, such as rendezvous communications, which are difficult to implement in a distributed setting.

Encodings of the π-calculus in the join-calculus, and vice versa, have been demonstrated.

[2] The join-calculus is a member of the π-calculus family of process calculi, and can be considered, at its core, an asynchronous π-calculus with several strong restrictions:[3] However, as a language for programming, the join-calculus offers at least one convenience over the π-calculus — namely the use of multi-way join patterns, the ability to match against messages from multiple channels simultaneously.

It is implemented as an interpreter written in OCaml, and supports statically typed distributed programming, transparent remote communication, agent-based mobility, and some failure-detection.

[5] Many implementations of the join-calculus were made as extensions of existing programming languages: These implementations do not change the underlying programming language but introduce join calculus operations through a custom library or DSL: