Towards Composable Concurrency Abstractions
Janwillem Swalens (Vrije Universiteit Brussel), Stefan Marr (Vrije, Universiteit Brussel), Joeri De Koster (Vrije Universiteit Brussel), Tom Van, Cutsem (Vrije Universiteit Brussel)

TL;DR
This paper investigates how different concurrency abstractions in programming languages, especially Clojure, interact and whether they can be combined safely to support complex, multi-faceted applications.
Contribution
It provides an in-depth analysis of the composability of concurrency models in Clojure and identifies properties that affect their integration.
Findings
Some concurrency abstractions compose without issues
Certain combinations lead to subtle bugs or inconsistencies
General properties influencing composability are identified
Abstract
In the past decades, many different programming models for managing concurrency in applications have been proposed, such as the actor model, Communicating Sequential Processes, and Software Transactional Memory. The ubiquity of multi-core processors has made harnessing concurrency even more important. We observe that modern languages, such as Scala, Clojure, or F#, provide not one, but multiple concurrency models that help developers manage concurrency. Large end-user applications are rarely built using just a single concurrency model. Programmers need to manage a responsive UI, deal with file or network I/O, asynchronous workflows, and shared resources. Different concurrency models facilitate different requirements. This raises the issue of how these concurrency models interact, and whether they are composable. After all, combining different concurrency models may lead to subtle bugs…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware System Performance and Reliability · Distributed systems and fault tolerance · Distributed and Parallel Computing Systems
