Powered by
9th ACM SIGPLAN International Workshop on Reactive and Event-Based Languages and Systems (REBLS 2022),
December 7, 2022,
Auckland, New Zealand
9th ACM SIGPLAN International Workshop on Reactive and Event-Based Languages and Systems (REBLS 2022)
Frontmatter
Welcome from the Chair
Welcome to the 9th ACM SIGPLAN International Workshop on Reactive and Event-based Languages & Systems (REBLS ’22), held in Auckland, New Zealand, on December 7th, 2022, co-located with the SPLASH ’22 conference.
This workshop gathers researchers working on reactive and event-based languages and systems. The objective of the workshop is to share research results, strengthen the community, discuss new solutions, enable the adoption by mainstream programming paradigms, and develop a clearer understanding of the key ideas that define the field, their interrelationships and limitations.
Papers
Towards Introducing Asynchronous Tasks to an FRP Language for Small-Scale Embedded Systems
Akihiko Yokoyama,
Sosuke Moriguchi, and
Takuo Watanabe
(Tokyo Institute of Technology, Japan)
Emfrp is a functional reactive programming language designed for small embedded systems. By imposing certain restrictions on the language mechanism, the language guarantees the termination of the update process for each time-varying value and enables static determination of the amount of memory required for execution. This allows Emfrp programs to run safely even in resource-constrained execution environments. However, the abovementioned restrictions make it difficult to write time-consuming operations (heavy tasks) such as graph structure construction and exploration based on external data. Moreover, since Emfrp updates time-varying values synchronously, a naive implementation of such heavy tasks using external function calls will result in a slow response time to input. Some existing programming languages provide asynchronous processing mechanisms to ensure descriptiveness and responsiveness for heavy tasks. In this study, we propose a method to introduce heavy tasks into reactive programs naturally by introducing language mechanisms equivalent to asynchronous processing mechanisms, such as future and promise, into Emfrp. In this paper, we first discuss the problems with a naive implementation of heavy tasks in Emfrp, then explain the proposed method based on an example, and discuss the language runtime implementation.
@InProceedings{REBLS22p1,
author = {Akihiko Yokoyama and Sosuke Moriguchi and Takuo Watanabe},
title = {Towards Introducing Asynchronous Tasks to an FRP Language for Small-Scale Embedded Systems},
booktitle = {Proc.\ REBLS},
publisher = {ACM},
pages = {1--12},
doi = {10.1145/3563837.3568338},
year = {2022},
}
Publisher's Version
Distributed Persistent Signals: Architecture and Implementation
Tetsuo Kamina and
Sota Ueno
(Oita University, Japan)
A signal in reactive programming (RP) is a function of time whose value is updated automatically without performing explicit re-assignments. SignalJ, a Java-based RP language, provides persistent signals, whose update histories constitute time-series data, i.e., a signal is a function of a specified (possibly past) time. These update histories are stored in a time-series database to facilitate the use of persistent signals in an open, distributed setting. However, currently SignalJ is only used in local systems, and there are several obstacles to making it applicable to distributed systems. In this study, we address this problem by proposing a distributed architecture for the SignalJ runtime platform. This architecture includes an ID resolver that makes persistent signals location-transparent and supports a distributed update propagation mechanism that makes distributed time-series data consistent. We realize this architecture by extending the SignalJ compiler and its runtime library as well as providing an add-on to the time-series database. The effectiveness of this architecture is demonstrated by implementing a simple IoT application using this extension.
@InProceedings{REBLS22p13,
author = {Tetsuo Kamina and Sota Ueno},
title = {Distributed Persistent Signals: Architecture and Implementation},
booktitle = {Proc.\ REBLS},
publisher = {ACM},
pages = {13--23},
doi = {10.1145/3563837.3568341},
year = {2022},
}
Publisher's Version
FLOREnce: A Hybrid Logic-Functional Reactive Programming Language
Louise Van Verre,
Humberto Rodriguez Avila,
Jens Nicolay, and
Wolfgang De Meuter
(Vrije Universiteit Brussel, Belgium)
Functional reactive programming (FRP) languages allow programmers to write declarative expressions to denote event-streams. They feature operators (e.g., map, filter, merge, ...) to build compositions of events. Among these operators we would expect to find the traditional Boolean operators to express complex events. To some extent this is true. However, a remarkable absent in existing FRP languages is the logical conjunction, i.e., the and operator. In this paper, we describe the difficulty of introducing logical conjunction in FRP. We then present a new experimental language called FLOREnce that reconciles functional reactive programming with ‘logic reactive programming’ abstractions. The latter emerge naturally when adding a reactive conjunction operator to an event-based FRP language. We present a prototypical implementation of FLOREnce and we study its expressiveness by conducting an experiment.
@InProceedings{REBLS22p24,
author = {Louise Van Verre and Humberto Rodriguez Avila and Jens Nicolay and Wolfgang De Meuter},
title = {FLOREnce: A Hybrid Logic-Functional Reactive Programming Language},
booktitle = {Proc.\ REBLS},
publisher = {ACM},
pages = {24--36},
doi = {10.1145/3563837.3568339},
year = {2022},
}
Publisher's Version
Archive submitted (360 kB)
Semantics of RxJS
Tian Zhao and
Yonglun Li
(University of Wisconsin-Milwaukee, USA)
RxJS is a popular JavaScript library for reactive programming in Web applications. It provides numerous operators to create, combine, transform, and filter discrete events and to handle errors. These operators may be stateful and have side effects, which makes it difficult to understand the precise meaning of the resulting computation. In this paper, we define a formal model for RxJS programs by formalizing a selected subset of RxJS operators using a small-step operational semantics. We present several debugging related applications using the semantics as a model. We also implemented a subset of RxJS based on this semantics, which provides convenient access to the runtime representation of the RxJS program to help debugging.
@InProceedings{REBLS22p37,
author = {Tian Zhao and Yonglun Li},
title = {Semantics of RxJS},
booktitle = {Proc.\ REBLS},
publisher = {ACM},
pages = {37--49},
doi = {10.1145/3563837.3568340},
year = {2022},
}
Publisher's Version
Info
Reactive Programming on the Bare Metal: A Formal Model for a Low-Level Reactive Virtual Machine
Bjarno Oeyen,
Joeri De Koster, and
Wolfgang De Meuter
(Vrije Universiteit Brussel, Belgium)
Reactive programming has many applications for embedded devices in IoT and other application domains.
For these constrained devices it is crucial to bound the overhead of the execution of non-functional concerns such as glitch freedom.
Reactive programming languages with static dependency graphs can implement glitch freedom by topologically sorting the dependency graph ahead of time.
However, for more traditional reactive programming languages that support a dependency graph that can dynamically change, glitch freedom is typically implemented using a priority queue in which signals are enqueued according to their location in the graph.
This is undesirable for embedded devices, as dynamically updating this priority queue has an undesirable, and sometimes unbounded, overhead.
In this paper, we present a small-step operational semantics of a virtual machine specialised for running reactive programs that combines static ahead-of-time compilation of reactive programs into topologically sorted dependancy graphs while maintaining support for dynamic modifications to those dependency graphs.
@InProceedings{REBLS22p50,
author = {Bjarno Oeyen and Joeri De Koster and Wolfgang De Meuter},
title = {Reactive Programming on the Bare Metal: A Formal Model for a Low-Level Reactive Virtual Machine},
booktitle = {Proc.\ REBLS},
publisher = {ACM},
pages = {50--62},
doi = {10.1145/3563837.3568342},
year = {2022},
}
Publisher's Version
proc time: 2.06