On the coexistence of reactive code and imperative code in distributed applications: A language design approach

Research output: ThesisPhD Thesis

98 Downloads (Pure)


The continued increase in computing power and network resources has changed the landscape of software development. Nowadays, software is not confined to a single computer, and instead runs on many types of devices that interact on an open network, which is a network that various types of devices such as smartphones, smartwatches, and Internet of Things devices can spontaneously join and leave. Moreover, their software is continuously interacting with each other, e.g., a smartphone smart home application is updated in real-time based on the connected smart home sensors. In other words, the software that powers those devices has become reactive.

Existing reactive programming techniques exhibit 3 issues that make them difficult to apply to software for open networks. The first issue is related to responsiveness, where data received via a network can (accidentally) make the program no longer reactive. Second, we describe a paradigmatic mismatch between reactive code and imperative code, both of which are present in every reactive application. The final issue relates to the open network, where existing reactive programming techniques have little or no support to discover devices on the open network, and to manage their presence in the reactive program correctly and efficiently.

We propose a novel computational model, called the “Actor-Reactor Model”, that avoids the issues by using so-called “actors” and “reactors” to build distributed applications. First, reactive code is encapsulated by reactors which guarantee responsiveness. Second, imperative code and reactive code is strictly separated in actors and reactors respectively, thereby avoiding a paradigmatic mismatch. Finally, we design a mechanism to discover actors and reactors on an open network, and to maintain their presence correctly and efficiently throughout a distributed reactive program.

The Actor-Reactor Model was implemented in a new programming language called Stella, which serves as a linguistic vehicle to demonstrate the ideas of our approach. Compared to other reactive programming languages and frameworks, we found that actors and reactors are highly suitable to develop distributed applications. Furthermore, they demonstrate a correct and efficient approach to define distributed computations that involve multiple discovered devices (e.g., sensors). All Stella code presented in the dissertation is executable.

The Actor-Reactor Model leads to a better understanding of the coexistence of reactive code and imperative code in Stella and existing reactive programming languages and frameworks.
Original languageEnglish
QualificationDoctor of Sciences
Awarding Institution
  • Vrije Universiteit Brussel
  • De Meuter, Wolfgang, Supervisor
Award date21 Jun 2022
Place of PublicationBrussels
Print ISBNs978-94-6444-328-8
Publication statusPublished - 2022


Dive into the research topics of 'On the coexistence of reactive code and imperative code in distributed applications: A language design approach'. Together they form a unique fingerprint.

Cite this