Chocola: Integrating Futures, Actors, and Transactions

Research output: Unpublished contribution to conferencePoster

3 Citations (Scopus)


Developers 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 Haskell, cater to this need by supporting different concurrency models. However, they are often combined in an ad hoc way and the semantics of the combination is not always well defined.

This paper studies the combination of three concurrency models: futures, actors, and transactions. We show that a naive combination of these models invalidates the guarantees they normally provide, thereby breaking the assumptions of developers. Hence, we present Chocola: a unified framework of futures, actors, and transactions that maintains the guarantees of all models wherever possible, even when they are combined. We present the semantics of this model and its implementation in Clojure, and have evaluated its performance and expressivity using three benchmark applications.
Original languageEnglish
Number of pages11
Publication statusPublished - 5 Nov 2018
EventSystems, Programming, Languages and Applications: Software for Humanity - Boston, United States
Duration: 4 Nov 20189 Nov 2018


ConferenceSystems, Programming, Languages and Applications: Software for Humanity
Abbreviated titleSPLASH 2018
CountryUnited States
Internet address


  • Actors
  • Concurrency
  • Futures
  • Parallelism
  • Software Transactional Memory
  • Transactions

Fingerprint Dive into the research topics of 'Chocola: Integrating Futures, Actors, and Transactions'. Together they form a unique fingerprint.

Cite this