{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,6,4]],"date-time":"2026-06-04T08:57:22Z","timestamp":1780563442906,"version":"3.54.1"},"reference-count":67,"publisher":"Association for Computing Machinery (ACM)","issue":"4","license":[{"start":{"date-parts":[[2020,12,31]],"date-time":"2020-12-31T00:00:00Z","timestamp":1609372800000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Program. Lang. Syst."],"published-print":{"date-parts":[[2020,12,31]]},"abstract":"<jats:p>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.<\/jats:p>\n          <jats:p>\n            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\n            <jats:bold>Chocola<\/jats:bold>\n            : a unified language of futures, transactions, and actors that maintains the guarantees of all three models wherever possible, even when they are combined.\n          <\/jats:p>\n          <jats:p>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.<\/jats:p>","DOI":"10.1145\/3427201","type":"journal-article","created":{"date-parts":[[2021,1,28]],"date-time":"2021-01-28T05:09:51Z","timestamp":1611810591000},"page":"1-56","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":3,"title":["Chocola"],"prefix":"10.1145","volume":"42","author":[{"given":"Janwillem","family":"Swalens","sequence":"first","affiliation":[{"name":"Vrije Universiteit Brussel, Pleinlaan, Brussels, Belgium"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Joeri De","family":"Koster","sequence":"additional","affiliation":[{"name":"Vrije Universiteit Brussel, Pleinlaan, Brussels, Belgium"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Wolfgang De","family":"Meuter","sequence":"additional","affiliation":[{"name":"Vrije Universiteit Brussel, Pleinlaan, Brussels, Belgium"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2021,1,27]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"crossref","unstructured":"Gul A. Agha. 1985. Actors: A Model of Concurrent Computation in Distributed Systems. Ph.D. Dissertation. Massachusetts Institute of Technology.","DOI":"10.7551\/mitpress\/1086.001.0001"},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1017\/S095679689700261X"},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/1345206.1345232"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/1810479.1810528"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/800228.806932"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/1693453.1693466"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/3133876"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/62044.62046"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/223784.223785"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/356842.356846"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/209936.209958"},{"key":"e_1_2_1_12_1","volume-title":"Proceedings of the 1st USENIX Conference on Hot Topics in Parallelism (HotPar\u201909)","author":"Bocchino Robert L.","year":"2009","unstructured":"Robert L. Bocchino, Vikram S. Adve, Sarita V. Adve, and Marc Snir. 2009. Parallel programming must be deterministic by default. In Proceedings of the 1st USENIX Conference on Hot Topics in Parallelism (HotPar\u201909)."},{"key":"e_1_2_1_13_1","volume-title":"Proceedings of the 15th International School on Formal Methods for the Design of Computer, Communication, and Software Systems (SFM\u201915)","author":"Brandauer Stephan","unstructured":"Stephan Brandauer, Elias Castegren, Dave Clarke, Kiko Fernandez-Reyes, Einar Broch Johnsen, Ka I. Pun, S. Lizeth Tapia Tarifa, Tobias Wrigstad, and Albert Mingkun Yang. 2015. Parallel objects for multicores: A glimpse at the parallel language encore. In Proceedings of the 15th International School on Formal Methods for the Design of Computer, Communication, and Software Systems (SFM\u201915). 1--56."},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1155\/2010"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/1869459.1869515"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-19718-5_7"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/2824815.2824816"},{"key":"e_1_2_1_18_1","unstructured":"Joeri De Koster. 2015. Domains: Language Abstractions for Controlling Shared Mutable State in Actor Systems. Ph.D. Dissertation. Vrije Universiteit Brussel."},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.cl.2016.01.003"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/3001886.3001890"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/1743546.1743560"},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/365559.365617"},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1109\/IPDPS.2003.1213511"},{"key":"e_1_2_1_24_1","volume-title":"Robert Bruce Findler, and Matthew Flatt","author":"Felleisen Matthias","year":"2009","unstructured":"Matthias Felleisen, Robert Bruce Findler, and Matthew Flatt. 2009. Semantics Engineering with PLT Redex. The MIT Press."},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/199448.199484"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/1297027.1297033"},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/1345206.1345233"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/197320.197346"},{"key":"e_1_2_1_30_1","volume-title":"Programming Clojure","author":"Halloway Stuart","unstructured":"Stuart Halloway. 2009. Programming Clojure (1st ed.). Pragmatic Bookshelf.","edition":"1"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/4472.4478"},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/949305.949340"},{"key":"e_1_2_1_33_1","volume-title":"Transactional Memory","author":"Harris Tim","unstructured":"Tim Harris, James R. Larus, and Ravi Rajwar. 2010. Transactional Memory (2nd ed.). Morgan 8 Claypool.","edition":"2"},{"key":"e_1_2_1_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/1065944.1065952"},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/165123.165164"},{"key":"e_1_2_1_36_1","unstructured":"Maurice Herlihy and Nir Shavit. 2011. The Art of Multiprocessor Programming. Morgan Kaufmann."},{"key":"e_1_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.5555\/1624775.1624804"},{"key":"e_1_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.1145\/359576.359585"},{"key":"e_1_2_1_39_1","volume-title":"Proceedings of the PODC Workshop on Concurrency and Synchronization in Java Programs. Retrieved from: https:\/\/www.cs.jhu.edu\/ daveho\/pubs\/csjp2004","author":"Hovemeyer David","year":"2004","unstructured":"David Hovemeyer and William Pugh. 2004. Finding concurrency bugs in Java. In Proceedings of the PODC Workshop on Concurrency and Synchronization in Java Programs. Retrieved from: https:\/\/www.cs.jhu.edu\/ daveho\/pubs\/csjp2004.pdf."},{"key":"e_1_2_1_40_1","doi-asserted-by":"publisher","DOI":"10.1145\/322217.322230"},{"key":"e_1_2_1_41_1","volume-title":"Proceedings of the ACM International Conference on Object-oriented Programming Systems Languages and Applications (OOPSLA\u201912)","author":"Shams","unstructured":"Shams M. Imam and Vivek Sarkar. 2012. Integrating task parallelism with actors. In Proceedings of the ACM International Conference on Object-oriented Programming Systems Languages and Applications (OOPSLA\u201912). 753--772."},{"key":"e_1_2_1_42_1","doi-asserted-by":"publisher","DOI":"10.1109\/MC.2006.180"},{"key":"e_1_2_1_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/1693453.1693459"},{"key":"e_1_2_1_44_1","volume-title":"Proceedings of the Workshop on Programming Based on Actors, Agents, and Decentralized Control (AGERE\u201913)","author":"Lesani M.","unstructured":"M. Lesani and A. Lain. 2013. Semantics-preserving sharing actors. In Proceedings of the Workshop on Programming Based on Actors, Agents, and Decentralized Control (AGERE\u201913). 69--80."},{"key":"e_1_2_1_45_1","volume-title":"Proceedings of the 16th ACM Symposium on Principles and Practice of Parallel Programming (PPoPP\u201911)","author":"Lesani M.","unstructured":"M. Lesani and J. Palsberg. 2011. Communicating memory transactions. In Proceedings of the 16th ACM Symposium on Principles and Practice of Parallel Programming (PPoPP\u201911). 157--168."},{"key":"e_1_2_1_46_1","doi-asserted-by":"publisher","DOI":"10.1145\/1346281.1346323"},{"key":"e_1_2_1_47_1","volume-title":"Proceedings of the 16th ACM Symposium on Principles and Practice of Parallel Programming (PPoPP\u201911)","author":"Luchangco V.","unstructured":"V. Luchangco and V. J. Marathe. 2011. Transaction communicators: Enabling cooperation among concurrent transactions. In Proceedings of the 16th ACM Symposium on Principles and Practice of Parallel Programming (PPoPP\u201911). 169--178."},{"key":"e_1_2_1_48_1","doi-asserted-by":"publisher","DOI":"10.1109\/IISWC.2008.4636089"},{"key":"e_1_2_1_49_1","volume-title":"Proceedings of the 16th International Conference on Coordination Models and Languages (COORDINATION\u201914)","author":"Morandi B.","unstructured":"B. Morandi, S. Nanz, and B. Meyer. 2014. Safe and efficient data sharing for message-passing concurrency. In Proceedings of the 16th International Conference on Coordination Models and Languages (COORDINATION\u201914). 99--114."},{"key":"e_1_2_1_50_1","unstructured":"J. Eliot B. Moss. 1981. Nested Transactions: An Approach to Reliable Distributed Computing. Ph.D. Dissertation. Massachusetts Institute of Technology."},{"key":"e_1_2_1_51_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.scico.2006.05.010"},{"key":"e_1_2_1_52_1","volume-title":"Applied Akka Patterns: A Hands-On Guide to Designing Distributed Applications","author":"Nash Michael","unstructured":"Michael Nash and Wade Waldron. 2016. Applied Akka Patterns: A Hands-On Guide to Designing Distributed Applications (1st ed.). O\u2019Reilly Media, Inc.","edition":"1"},{"key":"e_1_2_1_53_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-02053-7_3"},{"key":"e_1_2_1_54_1","doi-asserted-by":"publisher","DOI":"10.1007\/s004460050028"},{"key":"e_1_2_1_55_1","volume-title":"Proceedings of the 22nd ACM SIGPLAN Conference on Object-oriented Programming Systems and Applications (OOPSLA\u201907)","author":"Smaragdakis Y.","unstructured":"Y. Smaragdakis, A. Kay, R. Behrends, and M. Young. 2007. Transactions with isolation and cooperation. In Proceedings of the 22nd ACM SIGPLAN Conference on Object-oriented Programming Systems and Applications (OOPSLA\u201907). 191--210."},{"key":"e_1_2_1_56_1","doi-asserted-by":"publisher","DOI":"10.4230\/LIPIcs.ECOOP.2016.23"},{"key":"e_1_2_1_57_1","doi-asserted-by":"publisher","DOI":"10.1145\/3141865.3141866"},{"key":"e_1_2_1_58_1","doi-asserted-by":"publisher","DOI":"10.4204\/EPTCS.155.8"},{"key":"e_1_2_1_59_1","volume-title":"Tanenbaum and Herbert Bos","author":"Andrew","year":"2014","unstructured":"Andrew S. Tanenbaum and Herbert Bos. 2014. Modern Operating Systems (4th ed.). Prentice Hall Press."},{"key":"e_1_2_1_60_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-39038-8_13"},{"key":"e_1_2_1_61_1","volume-title":"Techniques, and Models of Computer Programming","author":"Roy Peter Van","unstructured":"Peter Van Roy and Seif Haridi. 2004. Concepts, Techniques, and Models of Computer Programming. The MIT Press."},{"key":"e_1_2_1_62_1","volume-title":"Proceedings of the 13th European Symposium on Programming (ESOP\u201904)","author":"Vitek Jan","unstructured":"Jan Vitek, Suresh Jagannathan, Adam Welc, and Antony L. Hosking. 2004. A semantic framework for designer transactions. In Proceedings of the 13th European Symposium on Programming (ESOP\u201904). 249--263."},{"key":"e_1_2_1_63_1","doi-asserted-by":"publisher","DOI":"10.1145\/1504176.1504220"},{"key":"e_1_2_1_64_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-22655-7_9"},{"key":"e_1_2_1_65_1","doi-asserted-by":"publisher","DOI":"10.1145\/1094811.1094845"},{"key":"e_1_2_1_66_1","doi-asserted-by":"publisher","DOI":"10.1145\/28697.28722"},{"key":"e_1_2_1_67_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICPP.2016.57"},{"key":"e_1_2_1_68_1","volume-title":"Proceedings of the Workshop on Heuristic Search, Memory-based Heuristics and Their Applications (AAAI\u201906)","author":"Zhang Yang","unstructured":"Yang Zhang and Eric A. Hansen. 2006. Parallel breadth-first heuristic search on a shared-memory architecture. In Proceedings of the Workshop on Heuristic Search, Memory-based Heuristics and Their Applications (AAAI\u201906)."}],"container-title":["ACM Transactions on Programming Languages and Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3427201","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3427201","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T22:02:24Z","timestamp":1750197744000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3427201"}},"subtitle":["Composable Concurrency Language"],"short-title":[],"issued":{"date-parts":[[2020,12,31]]},"references-count":67,"journal-issue":{"issue":"4","published-print":{"date-parts":[[2020,12,31]]}},"alternative-id":["10.1145\/3427201"],"URL":"https:\/\/doi.org\/10.1145\/3427201","relation":{},"ISSN":["0164-0925","1558-4593"],"issn-type":[{"value":"0164-0925","type":"print"},{"value":"1558-4593","type":"electronic"}],"subject":[],"published":{"date-parts":[[2020,12,31]]},"assertion":[{"value":"2020-01-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2020-09-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2021-01-27","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}