English

Mixing Metaphors: Actors as Channels and Channels as Actors (Extended Version)

Programming Languages 2017-05-11 v3

Abstract

Channel- and actor-based programming languages are both used in practice, but the two are often confused. Languages such as Go provide anonymous processes which communicate using buffers or rendezvous points---known as channels---while languages such as Erlang provide addressable processes---known as actors---each with a single incoming message queue. The lack of a common representation makes it difficult to reason about translations that exist in the folklore. We define a calculus λch\lambda_{\textrm{ch}} for typed asynchronous channels, and a calculus λact\lambda_{\textrm{act}} for typed actors. We define translations from λact\lambda_{\textrm{act}} into λch\lambda_{\textrm{ch}} and λch\lambda_{\textrm{ch}} into λact\lambda_{\textrm{act}} and prove that both are type- and semantics-preserving. We show that our approach accounts for synchronisation and selective receive in actor systems and discuss future extensions to support guarded choice and behavioural types.

Keywords

Cite

@article{arxiv.1611.06276,
  title  = {Mixing Metaphors: Actors as Channels and Channels as Actors (Extended Version)},
  author = {Simon Fowler and Sam Lindley and Philip Wadler},
  journal= {arXiv preprint arXiv:1611.06276},
  year   = {2017}
}

Comments

Extended version of paper appearing at ECOOP'17