License: Creative Commons Attribution 3.0 Unported license (CC-BY 3.0)
When quoting this document, please refer to the following
DOI: 10.4230/LIPIcs.ECOOP.2020.19
URN: urn:nbn:de:0030-drops-131768
URL: https://drops.dagstuhl.de/opus/volltexte/2020/13176/
Go to the corresponding LIPIcs Volume Portal


Van den Vonder, Sam ; Renaux, Thierry ; Oeyen, Bjarno ; De Koster, Joeri ; De Meuter, Wolfgang

Tackling the Awkward Squad for Reactive Programming: The Actor-Reactor Model

pdf-format:
LIPIcs-ECOOP-2020-19.pdf (0.7 MB)


Abstract

Reactive programming is a programming paradigm whereby programs are internally represented by a dependency graph, which is used to automatically (re)compute parts of a program whenever its input changes. In practice reactive programming can only be used for some parts of an application: a reactive program is usually embedded in an application that is still written in ordinary imperative languages such as JavaScript or Scala. In this paper we investigate this embedding and we distill "the awkward squad for reactive programming" as 3 concerns that are essential for real-world software development, but that do not fit within reactive programming. They are related to long lasting computations, side-effects, and the coordination between imperative and reactive code. To solve these issues we design a new programming model called the Actor-Reactor Model in which programs are split up in a number of actors and reactors. Actors and reactors enforce a strict separation of imperative and reactive code, and they can be composed via a number of composition operators that make use of data streams. We demonstrate the model via our own implementation in a language called Stella.

BibTeX - Entry

@InProceedings{vandenvonder_et_al:LIPIcs:2020:13176,
  author =	{Sam Van den Vonder and Thierry Renaux and Bjarno Oeyen and Joeri De Koster and Wolfgang De Meuter},
  title =	{{Tackling the Awkward Squad for Reactive Programming: The Actor-Reactor Model}},
  booktitle =	{34th European Conference on Object-Oriented Programming (ECOOP 2020)},
  pages =	{19:1--19:29},
  series =	{Leibniz International Proceedings in Informatics (LIPIcs)},
  ISBN =	{978-3-95977-154-2},
  ISSN =	{1868-8969},
  year =	{2020},
  volume =	{166},
  editor =	{Robert Hirschfeld and Tobias Pape},
  publisher =	{Schloss Dagstuhl--Leibniz-Zentrum f{\"u}r Informatik},
  address =	{Dagstuhl, Germany},
  URL =		{https://drops.dagstuhl.de/opus/volltexte/2020/13176},
  URN =		{urn:nbn:de:0030-drops-131768},
  doi =		{10.4230/LIPIcs.ECOOP.2020.19},
  annote =	{Keywords: functional reactive programming, reactive programming, reactive streams, actors, reactors}
}

Keywords: functional reactive programming, reactive programming, reactive streams, actors, reactors
Collection: 34th European Conference on Object-Oriented Programming (ECOOP 2020)
Issue Date: 2020
Date of publication: 06.11.2020
Supplementary Material: ECOOP 2020 Artifact Evaluation approved artifact available at https://doi.org/10.4230/DARTS.6.2.7 and https://doi.org/10.5281/zenodo.3862954.


DROPS-Home | Fulltext Search | Imprint | Privacy Published by LZI