Mixing Metaphors: Actors as Channels and Channels as Actors (Extended Version)
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 for typed asynchronous channels, and a calculus for typed actors. We define translations from into and into 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