{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,4,11]],"date-time":"2026-04-11T02:12:42Z","timestamp":1775873562117,"version":"3.50.1"},"reference-count":33,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA","license":[{"start":{"date-parts":[[2017,10,12]],"date-time":"2017-10-12T00:00:00Z","timestamp":1507766400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by-sa\/4.0\/"}],"funder":[{"DOI":"10.13039\/100000001","name":"NSF","doi-asserted-by":"publisher","award":["1544542"],"award-info":[{"award-number":["1544542"]}],"id":[{"id":"10.13039\/100000001","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/501100004359","name":"Swedish Research Council","doi-asserted-by":"crossref","award":["UPMARC Linneaus Centre of Excellence"],"award-info":[{"award-number":["UPMARC Linneaus Centre of Excellence"]}],"id":[{"id":"10.13039\/501100004359","id-type":"DOI","asserted-by":"crossref"}]},{"DOI":"10.13039\/100011273","name":"FP7-ICT","doi-asserted-by":"crossref","award":["612985"],"award-info":[{"award-number":["612985"]}],"id":[{"id":"10.13039\/100011273","id-type":"DOI","asserted-by":"crossref"}]},{"DOI":"10.13039\/501100001862","name":"Svenska Forskningsr\u00e5det Formas","doi-asserted-by":"publisher","award":["Structured Aliasing"],"award-info":[{"award-number":["Structured Aliasing"]}],"id":[{"id":"10.13039\/501100001862","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/501100000266","name":"EPSRC","doi-asserted-by":"crossref","award":["EP\/K011715\/1"],"award-info":[{"award-number":["EP\/K011715\/1"]}],"id":[{"id":"10.13039\/501100000266","id-type":"DOI","asserted-by":"crossref"}]},{"DOI":"10.13039\/501100007601","name":"Horizon 2020","doi-asserted-by":"publisher","award":["695412"],"award-info":[{"award-number":["695412"]}],"id":[{"id":"10.13039\/501100007601","id-type":"DOI","asserted-by":"publisher"}]},{"name":"ONR","award":["503353"],"award-info":[{"award-number":["503353"]}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2017,10,12]]},"abstract":"<jats:p>ORCA is a concurrent and parallel garbage collector for actor programs, which does not require any STW steps, or synchronization mechanisms, and that has been designed to support zero-copy message passing and sharing of mutable data. ORCA is part of a runtime for actor-based languages, which was co-designed with the Pony programming language, and in particular, with its data race free type system. By co-designing an actor language with its runtime, it was possible to exploit certain language properties in order to optimize performance of garbage collection. Namely, ORCA relies on the guarantees of absence of race conditions in order to avoid read\/write barriers, and it leverages the actor message passing, for synchronization among actors.<\/jats:p>\n          <jats:p>In this paper we briefly describe Pony and its type system. We use pseudo-code in order to introduce how ORCA allocates and deallocates objects, how it shares mutable data without requiring barriers upon data mutation, and how can immutability be used to further optimize garbage collection. Moreover, we discuss the advantages of co-designing an actor language with its runtime, and we demonstrate that ORCA can be implemented in a performant and scalable way through a set of micro-benchmarks, including a comparison with other well-known collectors.<\/jats:p>","DOI":"10.1145\/3133896","type":"journal-article","created":{"date-parts":[[2017,10,13]],"date-time":"2017-10-13T15:15:45Z","timestamp":1507907745000},"page":"1-28","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":17,"title":["Orca: GC and type system co-design for actor languages"],"prefix":"10.1145","volume":"1","author":[{"given":"Sylvan","family":"Clebsch","sequence":"first","affiliation":[{"name":"Microsoft Research, UK"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Juliana","family":"Franco","sequence":"additional","affiliation":[{"name":"Imperial College London, UK"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Sophia","family":"Drossopoulou","sequence":"additional","affiliation":[{"name":"Imperial College London, UK"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Albert Mingkun","family":"Yang","sequence":"additional","affiliation":[{"name":"Uppsala University, Sweden"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Tobias","family":"Wrigstad","sequence":"additional","affiliation":[{"name":"Uppsala University, Sweden"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Jan","family":"Vitek","sequence":"additional","affiliation":[{"name":"Northeastern University, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2017,10,12]]},"reference":[{"key":"e_1_2_1_1_1","volume-title":"http:\/\/osl.cs.illinois.edu\/software\/actor-foundry\/ . (Retrieved","author":"ActorFoundry","year":"2017","unstructured":"ActorFoundry 2017. http:\/\/osl.cs.illinois.edu\/software\/actor-foundry\/ . (Retrieved July 2017 ). ActorFoundry 2017. http:\/\/osl.cs.illinois.edu\/software\/actor-foundry\/ . (Retrieved July 2017)."},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.5555\/7929"},{"key":"e_1_2_1_3_1","unstructured":"Akka 2017. Akka \u2013 Scala actor library. http:\/\/akka.io . (Retrieved July 2017).  Akka 2017. Akka \u2013 Scala actor library. http:\/\/akka.io . (Retrieved July 2017)."},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/1238844.1238850"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/1375657.1375659"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/2502508.2502523"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/1012888.1005693"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-18941-3_1"},{"key":"e_1_2_1_9_1"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.4230\/LIPIcs.ECOOP.2016.5"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.4230\/LIPIcs.ECOOP.2017.6"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/2509136.2509557"},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/2824815.2824816"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/1064979.1064988"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/1029873.1029879"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/512429.512439"},{"key":"e_1_2_1_17_1","unstructured":"John Ellis Pete Kovac and Hans Boehm. 2017. GCBench. (Retrieved July 2017). Developed by first two authors modified by the third from http:\/\/www.hboehm.info\/gc\/gc_bench.html .  John Ellis Pete Kovac and Hans Boehm. 2017. GCBench. (Retrieved July 2017). Developed by first two authors modified by the third from http:\/\/www.hboehm.info\/gc\/gc_bench.html ."},{"key":"e_1_2_1_19_1","volume-title":"International Joint Conference on Artificial Intelligence (IJCAI). http:\/\/dl.acm.org\/citation.cfm?id=1624775","author":"Hewitt Carl","year":"1973","unstructured":"Carl Hewitt , Peter Bishop , and Richard Steiger . 1973 . A Universal Modular ACTOR Formalism for Artificial Intelligence . In International Joint Conference on Artificial Intelligence (IJCAI). http:\/\/dl.acm.org\/citation.cfm?id=1624775 .1624804 Carl Hewitt, Peter Bishop, and Richard Steiger. 1973. A Universal Modular ACTOR Formalism for Artificial Intelligence. In International Joint Conference on Artificial Intelligence (IJCAI). http:\/\/dl.acm.org\/citation.cfm?id=1624775.1624804"},{"key":"e_1_2_1_20_1","volume-title":"Objective-C Programming","author":"Hillegass Aaron","unstructured":"Aaron Hillegass . 2011. Objective-C Programming . Addison-Wesley . Aaron Hillegass. 2011. Objective-C Programming. Addison-Wesley."},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/2687357.2687368"},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/1809028.1806615"},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/1254766.1254784"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/1806651.1806669"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/1254810.1254837"},{"key":"e_1_2_1_26_1","volume-title":"A Principled Design of Capabilities in Pony. Master\u2019s thesis","author":"Steed George","unstructured":"George Steed . 2016. A Principled Design of Capabilities in Pony. Master\u2019s thesis . Imperial College London . George Steed. 2016. A Principled Design of Capabilities in Pony. Master\u2019s thesis. Imperial College London."},{"key":"e_1_2_1_27_1","volume-title":"SystemTap website. (Retrieved","author":"SystemTap","year":"2017","unstructured":"SystemTap 2017. SystemTap website. (Retrieved July 2017 ). https:\/\/sourceware.org\/systemtap\/ . SystemTap 2017. SystemTap website. (Retrieved July 2017). https:\/\/sourceware.org\/systemtap\/ ."},{"key":"e_1_2_1_28_1","volume-title":"https:\/\/github.com\/actor-framework\/benchmarks\/. (Retrieved","author":"The CAF","year":"2017","unstructured":"The CAF team. 2017. https:\/\/github.com\/actor-framework\/benchmarks\/. (Retrieved July 2017 ). https:\/\/github.com\/ actor-framework\/benchmarks\/ The CAF team. 2017. https:\/\/github.com\/actor-framework\/benchmarks\/. (Retrieved July 2017). https:\/\/github.com\/ actor-framework\/benchmarks\/"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/2076022.1993491"},{"key":"e_1_2_1_30_1","unstructured":"The Computer Language Benchmarks Game 2017. The Computer Language Benchmarks Game. http:\/\/benchmarksgame. alioth.debian.org . (Retrieved July 2017).  The Computer Language Benchmarks Game 2017. The Computer Language Benchmarks Game. http:\/\/benchmarksgame. alioth.debian.org . (Retrieved July 2017)."},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/512429.512443"},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1007\/s11235-011-9509-1"},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-03013-0_21"},{"key":"e_1_2_1_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/3092255.3092274"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3133896","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3133896","content-type":"application\/pdf","content-version":"vor","intended-application":"syndication"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3133896","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T02:13:25Z","timestamp":1750212805000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3133896"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2017,10,12]]},"references-count":33,"journal-issue":{"issue":"OOPSLA","published-print":{"date-parts":[[2017,10,12]]}},"alternative-id":["10.1145\/3133896"],"URL":"https:\/\/doi.org\/10.1145\/3133896","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2017,10,12]]},"assertion":[{"value":"2017-10-12","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}