Projects per year
Abstract
Programmers often combine different concurrency models in a single program, in each part of the program using the model that fits best. Many programming languages, such as Clojure, Scala, and Java, cater to this need by supporting different concurrency models. However, existing programming languages often combine concurrency models in an ad hoc way, and the semantics of the combinations are not always well defined.This article studies the combination of three concurrency models: futures, transactions, and actors. We show that a naive combination of these models invalidates the guarantees they normally provide, thereby breaking the assumptions of programmers. Hence, we present Chocola: a unified language of futures, transactions, and actors that maintains the guarantees of all three models wherever possible, even when they are combined.We describe and formalize the semantics of this language and prove the guarantees it provides. We also provide an implementation as an extension of Clojure and demonstrated that it can improve the performance of three benchmark applications for relatively little effort from the developer.
Original language | English |
---|---|
Article number | 17 |
Journal | ACM Trans. Program. Lang. Syst. |
Volume | 42 |
Issue number | 4 |
DOIs | |
Publication status | Published - Feb 2021 |
Keywords
- software transactional memory
- Futures
- actor model
Fingerprint
Dive into the research topics of 'Chocola: Composable Concurrency Language'. Together they form a unique fingerprint.Projects
- 1 Active
-
SRP52: SRP-Onderzoekszwaartepunt: Foundations for Reliable Multi-Paradigm Network-Centric Programming
De Meuter, W., De Roover, C. & Gonzalez Boix, E.
1/03/19 → 28/02/25
Project: Fundamental