,
Ayman Hussein
,
Hernán Melgratti
,
Alceste Scalas
,
Emilio Tuosto
Creative Commons Attribution 4.0 International license
Join patterns provide a promising approach to the development of concurrent and distributed message-passing applications. Several variations and implementations have been presented in the literature - but various aspects remain under-explored: in particular, how to specify a suitable notion of message matching, how to implement it correctly and efficiently, and how to systematically evaluate the implementation performance. In this work we focus on actor-based programming, and study the application of join patterns with conditional guards (i.e., the most expressive and challenging version of join patterns in literature). We formalise a novel specification of fair and deterministic join pattern matching, ensuring that older messages are always consumed if they can be matched. We present a stateful, tree-based join pattern matching algorithm and prove that it correctly implements our fair and deterministic matching specification. We present a novel Scala 3 actor library (called JoinActors) that implements our join pattern formalisation, leveraging macros to provide an intuitive API. Finally, we evaluate the performance of our implementation, by introducing a systematic benchmarking approach that takes into account the nuances of join pattern matching (in particular, its sensitivity to input traffic and complexity of patterns and guards).
@Article{haller_et_al:DARTS.10.2.8,
author = {Haller, Philipp and Hussein, Ayman and Melgratti, Hern\'{a}n and Scalas, Alceste and Tuosto, Emilio},
title = {{Fair Join Pattern Matching for Actors (Artifact)}},
pages = {8:1--8:3},
journal = {Dagstuhl Artifacts Series},
ISBN = {978-3-95977-342-3},
ISSN = {2509-8195},
year = {2024},
volume = {10},
number = {2},
editor = {Haller, Philipp and Hussein, Ayman and Melgratti, Hern\'{a}n and Scalas, Alceste and Tuosto, Emilio},
publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik},
address = {Dagstuhl, Germany},
URL = {https://drops.dagstuhl.de/entities/document/10.4230/DARTS.10.2.8},
URN = {urn:nbn:de:0030-drops-209062},
doi = {10.4230/DARTS.10.2.8},
annote = {Keywords: Concurrency, join patterns, join calculus, actor model}
}
5640c68ae6bba8633bc30d0f01cbb87d
(Get MD5 Sum)
The artifact has been evaluated as described in the ECOOP 2024 Call for Artifacts and the ACM Artifact Review and Badging Policy.