{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,2,4]],"date-time":"2026-02-04T21:08:51Z","timestamp":1770239331288,"version":"3.49.0"},"reference-count":27,"publisher":"Association for Computing Machinery (ACM)","issue":"ICFP","license":[{"start":{"date-parts":[[2024,8,15]],"date-time":"2024-08-15T00:00:00Z","timestamp":1723680000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by-nd\/4.0\/"}],"funder":[{"name":"FWO","award":["1187122N"],"award-info":[{"award-number":["1187122N"]}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2024,8,15]]},"abstract":"<jats:p>Actor languages model concurrency as processes that communicate through asynchronous message sends. Unfortunately, as the complexity of these systems increases, it becomes more difficult to compose and integrate their components. This is because of assumptions made by components about their communication partners which may not be upheld when they remain implicit. In this paper, we bring design-by-contract programming to actor programs through a contract system that enables expressing constraints on receiver-related properties. Expressing properties about the expected receiver of a message, and about this receiver\u2019s communication behavior, requires two novel types of contracts. Through their recursive structure, these contracts can govern entire communication chains. We implement the contract system for an actor extension of Scheme, describe it formally, and show how to assign blame in case of a contract violation. Finally, we prove our contract system and its blame assignment correct by formulating and proving a blame correctness theorem.<\/jats:p>","DOI":"10.1145\/3674643","type":"journal-article","created":{"date-parts":[[2024,8,15]],"date-time":"2024-08-15T12:49:04Z","timestamp":1723726144000},"page":"515-543","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":1,"title":["Blame-Correct Support for Receiver Properties in Recursively-Structured Actor Contracts"],"prefix":"10.1145","volume":"8","author":[{"ORCID":"https:\/\/orcid.org\/0000-0003-2924-3420","authenticated-orcid":false,"given":"Bram","family":"Vandenbogaerde","sequence":"first","affiliation":[{"name":"Vrije Universiteit Brussel, Brussels, Belgium"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-9985-9808","authenticated-orcid":false,"given":"Quentin","family":"Sti\u00e9venart","sequence":"additional","affiliation":[{"name":"Universit\u00e9 du Qu\u00e9bec \u00e0 Montr\u00e9al, Montr\u00e9al, Canada"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-1710-1268","authenticated-orcid":false,"given":"Coen","family":"De Roover","sequence":"additional","affiliation":[{"name":"Vrije Universiteit Brussel, Brussels, Belgium"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2024,8,15]]},"reference":[{"key":"e_1_3_1_2_1","doi-asserted-by":"publisher","DOI":"10.7551\/mitpress\/1086.001.0001"},{"key":"e_1_3_1_3_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-15375-4_12"},{"key":"e_1_3_1_4_1","doi-asserted-by":"publisher","DOI":"10.1016\/J.CL.2014.05.002"},{"key":"e_1_3_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/1926385.1926410"},{"key":"e_1_3_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/2951913.2951930"},{"key":"e_1_3_1_7_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-28869-2_11"},{"key":"e_1_3_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/2034773.2034800"},{"key":"e_1_3_1_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/581478.581484"},{"key":"e_1_3_1_10_1","doi-asserted-by":"publisher","DOI":"10.4230\/LIPICS.ECOOP.2017.11"},{"key":"e_1_3_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/3486602.3486767"},{"key":"e_1_3_1_12_1","doi-asserted-by":"publisher","DOI":"10.1016\/J.JLAMP.2021.100731"},{"key":"e_1_3_1_13_1","doi-asserted-by":"publisher","DOI":"10.14279\/TUJ.ECEASST.28.397"},{"key":"e_1_3_1_14_1","doi-asserted-by":"publisher","unstructured":"Paul Harvey Simon Fowler Ornela Dardha and Simon J. Gay. 2021. Multiparty Session Types for Safe Runtime Adaptation in an Actor Language. In 35th European Conference on Object-Oriented Programming ECOOP 2021 July 11-17 2021) (LIPIcs Vol. 194) Anders M\u00f8ller and Manu Sridharan (Eds.). 10:1\u201310:30. https:\/\/doi.org\/10.4230\/LIPICS.ECOOP.2021.10 10.4230\/LIPICS.ECOOP.2021.10","DOI":"10.4230\/LIPICS.ECOOP.2021.10"},{"key":"e_1_3_1_15_1","doi-asserted-by":"publisher","unstructured":"Kohei Honda Nobuko Yoshida and Marco Carbone. 2008. Multiparty asynchronous session types. In Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages. 273\u2013284. https:\/\/doi.org\/10.1145\/1328438.1328472 10.1145\/1328438.1328472","DOI":"10.1145\/1328438.1328472"},{"key":"e_1_3_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/1328438.1328472"},{"key":"e_1_3_1_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/2837614.2837662"},{"key":"e_1_3_1_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/2103656.2103691"},{"key":"e_1_3_1_19_1","doi-asserted-by":"publisher","DOI":"10.5555\/3153584"},{"key":"e_1_3_1_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/2872362.2872374"},{"key":"e_1_3_1_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/2384616.2384685"},{"key":"e_1_3_1_22_1","doi-asserted-by":"publisher","DOI":"10.1109\/TOOLS.1998.711043"},{"key":"e_1_3_1_23_1","volume-title":"Communicating and mobile systems - the Pi-calculus","author":"Milner Robin","year":"1999","unstructured":"Robin Milner. 1999. Communicating and mobile systems - the Pi-calculus. Cambridge university press."},{"key":"e_1_3_1_24_1","doi-asserted-by":"publisher","DOI":"10.23638\/LMCS-13(1:17)2017"},{"key":"e_1_3_1_25_1","doi-asserted-by":"publisher","DOI":"10.1016\/J.SCICO.2013.09.005"},{"key":"e_1_3_1_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/2384616.2384685"},{"key":"e_1_3_1_27_1","doi-asserted-by":"publisher","unstructured":"Bram Vandenbogaerde Quentin Sti\u00e9venart and Coen De Roover. 2024. Blame-Correct Support for Receiver Properties in Recursively-Structured Actor Contracts (Artifact). https:\/\/doi.org\/10.5281\/zenodo.12659179 10.5281\/zenodo.12659179","DOI":"10.5281\/zenodo.12659179"},{"key":"e_1_3_1_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/3110280"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3674643","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3674643","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,2,4]],"date-time":"2026-02-04T07:48:59Z","timestamp":1770191339000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3674643"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2024,8,15]]},"references-count":27,"journal-issue":{"issue":"ICFP","published-print":{"date-parts":[[2024,8,15]]}},"alternative-id":["10.1145\/3674643"],"URL":"https:\/\/doi.org\/10.1145\/3674643","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2024,8,15]]},"assertion":[{"value":"2024-02-28","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2024-06-18","order":2,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2024-08-15","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}