< Terug naar vorige pagina

Publicatie

Chocola: Composable Concurrency Language

Tijdschriftbijdrage - Tijdschriftartikel

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.
Tijdschrift: ACM Transactions on Programming Languages and Systems
ISSN: 0164-0925
Issue: 4
Volume: 42
Jaar van publicatie:2021
Trefwoorden:software transactional memory, Futures, actor model
BOF-keylabel:ja
IOF-keylabel:ja
BOF-publication weight:0.5
Auteurs:Regional
Authors from:Higher Education
Toegankelijkheid:Open