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 lambda-ch for typed asynchronous channels, and a calculus lambda-act for typed actors. We define translations from lambda-act into lambda-ch and lambda-ch into lambda-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.
@InProceedings{fowler_et_al:LIPIcs.ECOOP.2017.11, author = {Fowler, Simon and Lindley, Sam and Wadler, Philip}, title = {{Mixing Metaphors: Actors as Channels and Channels as Actors}}, booktitle = {31st European Conference on Object-Oriented Programming (ECOOP 2017)}, pages = {11:1--11:28}, series = {Leibniz International Proceedings in Informatics (LIPIcs)}, ISBN = {978-3-95977-035-4}, ISSN = {1868-8969}, year = {2017}, volume = {74}, editor = {M\"{u}ller, Peter}, publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik}, address = {Dagstuhl, Germany}, URL = {https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2017.11}, URN = {urn:nbn:de:0030-drops-72536}, doi = {10.4230/LIPIcs.ECOOP.2017.11}, annote = {Keywords: Actors, Channels, Communication centric Programming Languages} }
Feedback for Dagstuhl Publishing