Mixing metaphors: Actors as channels and channels as actors

Simon Fowler*, Sam Lindley, Philip Wadler

*Corresponding author for this work

Research output: Chapter in Book/Report/Conference proceedingConference contribution

9 Citations (Scopus)

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 for typed asynchronous channels, and a calculus λact for typed actors. We define translations from λact into λch and λch into λact and prove that both are type- and semanticspreserving. 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.

Original languageEnglish
Title of host publication31st European Conference on Object-Oriented Programming (ECOOP 2017)
EditorsPeter Muller
PublisherSchloss Dagstuhl - Leibniz-Zentrum für Informatik
ISBN (Electronic)9783959770354
DOIs
Publication statusPublished - 16 Jun 2017
Event31st European Conference on Object-Oriented Programming 2017 - Barcelona, Spain
Duration: 18 Jun 201723 Jun 2017

Publication series

NameLeibniz International Proceedings in Informatics (LIPIcs)
Volume74
ISSN (Electronic)1868-8969

Conference

Conference31st European Conference on Object-Oriented Programming 2017
Abbreviated titleECOOP 2017
Country/TerritorySpain
CityBarcelona
Period18/06/1723/06/17

Keywords

  • Actors
  • Channels
  • Communication-centric Programming Languages

ASJC Scopus subject areas

  • Software

Fingerprint

Dive into the research topics of 'Mixing metaphors: Actors as channels and channels as actors'. Together they form a unique fingerprint.

Cite this