Abstract
In the last few years, there have been a number of new programming languages which incorporate message-passing concurrency. Examples, such as Google's Go and Mozilla's Rust, have shown an increased industry and academic interest in the ideas of message-passing concurrency as a first order concern. These languages have joined existing ones such as occam-π, Erlang, and Ada with strong communication-based concurrency. It is therefore argued that the concurrent systems programmer has a number of options for exploiting message-based concurrency.
The Communicating Process Architectures (CPA) community, and others, have for a number of years developed libraries to support message-passing concurrency within existing programming languages and run-times. This support is normally built upon the thread support libraries of the host language. JCSP (for Java) and PyCSP (for Python) are commonly discussed, but support for CPA ideas has also been implemented in Haskell, C++, Lua, and other languages.
The languages and libraries supporting message-passing concurrency are normally inspired by one or more process algebras. Hoare's Communicating Sequential Processes (CSP) and Milner's π-calculus are the two main inspirations for message-passing work. It is questionable, however, how well these process algebras are supported in the languages and libraries they inspire.
Slides used introducing this workshop can be downloaded from [1].