{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T04:24:29Z","timestamp":1750220669978,"version":"3.41.0"},"reference-count":18,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA","license":[{"start":{"date-parts":[[2020,11,13]],"date-time":"2020-11-13T00:00:00Z","timestamp":1605225600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"DOI":"10.13039\/100007297","name":"Office of Naval Research","doi-asserted-by":"publisher","award":["503353"],"award-info":[{"award-number":["503353"]}],"id":[{"id":"10.13039\/100007297","id-type":"DOI","asserted-by":"publisher"}]},{"name":"National Science Foundation","award":["1759736,1925644,1618732"],"award-info":[{"award-number":["1759736,1925644,1618732"]}]},{"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":"Czech Operational Programme Research, Development, and Education","award":["CZ.02.1.01\/0.0\/0.0\/15_003\/0000421"],"award-info":[{"award-number":["CZ.02.1.01\/0.0\/0.0\/15_003\/0000421"]}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2020,11,13]]},"abstract":"<jats:p>Dynamic programming languages face semantic and performance challenges in the presence of features, such as eval, that can inject new code into a running program. The Julia programming language introduces the novel concept of world age to insulate optimized code from one of the most disruptive side-effects of eval: changes to the definition of an existing function. This paper provides the first formal semantics of world age in a core calculus named juliette, and shows how world age enables compiler optimizations, such as inlining, in the presence of eval. While Julia also provides programmers with the means to bypass world age, we found that this mechanism is not used extensively: a static analysis of over 4,000 registered Julia packages shows that only 4-9% of packages bypass world age. This suggests that Julia's semantics aligns with programmer expectations.<\/jats:p>","DOI":"10.1145\/3428275","type":"journal-article","created":{"date-parts":[[2020,11,24]],"date-time":"2020-11-24T23:36:06Z","timestamp":1606260966000},"page":"1-26","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":5,"title":["World age in Julia: optimizing method dispatch in the presence of eval"],"prefix":"10.1145","volume":"4","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-7490-8500","authenticated-orcid":false,"given":"Julia","family":"Belyakova","sequence":"first","affiliation":[{"name":"Northeastern University, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Benjamin","family":"Chung","sequence":"additional","affiliation":[{"name":"Northeastern University, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Jack","family":"Gelinas","sequence":"additional","affiliation":[{"name":"Northeastern University, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Jameson","family":"Nash","sequence":"additional","affiliation":[{"name":"Julia Computing, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Ross","family":"Tate","sequence":"additional","affiliation":[{"name":"Cornell University, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-4052-3458","authenticated-orcid":false,"given":"Jan","family":"Vitek","sequence":"additional","affiliation":[{"name":"Northeastern University, USA \/ Czech Technical University, Czechia"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2020,11,13]]},"reference":[{"doi-asserted-by":"crossref","unstructured":"Julia Belyakova Benjamin Chung Jack Gelinas Jameson Nash Ross Tate and Jan Vitek. 2020. World Age in Julia: Optimizing Method Dispatch in the Presence of Eval (Extended Version). arXiv:2010.07516  Julia Belyakova Benjamin Chung Jack Gelinas Jameson Nash Ross Tate and Jan Vitek. 2020. World Age in Julia: Optimizing Method Dispatch in the Presence of Eval (Extended Version). arXiv:2010.07516","key":"e_1_2_2_1_1","DOI":"10.1145\/3428275"},{"doi-asserted-by":"publisher","key":"e_1_2_2_2_1","DOI":"10.1145\/3276490"},{"doi-asserted-by":"publisher","key":"e_1_2_2_3_1","DOI":"10.1137\/141000671"},{"doi-asserted-by":"publisher","key":"e_1_2_2_4_1","DOI":"10.1145\/28697.28700"},{"doi-asserted-by":"publisher","key":"e_1_2_2_5_1","DOI":"10.1145\/1006147.1006188"},{"doi-asserted-by":"publisher","key":"e_1_2_2_6_1","DOI":"10.5555\/646156.679839"},{"key":"e_1_2_2_7_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. MIT Press . http:\/\/mitpress.mit.edu\/catalog\/item\/default.asp? ttype=2&tid=11885 Matthias Felleisen, Robert Bruce Findler, and Matthew Flatt. 2009. Semantics Engineering with PLT Redex. MIT Press. http:\/\/mitpress.mit.edu\/catalog\/item\/default.asp? ttype=2&tid=11885"},{"doi-asserted-by":"publisher","key":"e_1_2_2_8_1","DOI":"10.1145\/3158137"},{"doi-asserted-by":"publisher","key":"e_1_2_2_9_1","DOI":"10.5381\/jot.2005.4.8.a2"},{"doi-asserted-by":"publisher","key":"e_1_2_2_10_1","DOI":"10.1145\/143103.143114"},{"doi-asserted-by":"publisher","key":"e_1_2_2_11_1","DOI":"10.1145\/286936.286945"},{"doi-asserted-by":"publisher","key":"e_1_2_2_12_1","DOI":"10.1017\/S0956796807006478"},{"doi-asserted-by":"publisher","key":"e_1_2_2_13_1","DOI":"10.1145\/960118.808387"},{"doi-asserted-by":"publisher","key":"e_1_2_2_14_1","DOI":"10.5555\/1082161.1082163"},{"doi-asserted-by":"publisher","key":"e_1_2_2_15_1","DOI":"10.1145\/2384577.2384579"},{"doi-asserted-by":"publisher","key":"e_1_2_2_16_1","DOI":"10.1145\/1255450.1255455"},{"unstructured":"Julia Language Manual v1. 2020. Redefining Methods. https:\/\/docs.julialang.org\/en\/v1\/manual\/methods\/#RedefiningMethods-1  Julia Language Manual v1. 2020. Redefining Methods. https:\/\/docs.julialang.org\/en\/v1\/manual\/methods\/#RedefiningMethods-1","key":"e_1_2_2_17_1"},{"doi-asserted-by":"publisher","key":"e_1_2_2_18_1","DOI":"10.1145\/3276483"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3428275","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3428275","content-type":"application\/pdf","content-version":"vor","intended-application":"syndication"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3428275","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T22:02:57Z","timestamp":1750197777000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3428275"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2020,11,13]]},"references-count":18,"journal-issue":{"issue":"OOPSLA","published-print":{"date-parts":[[2020,11,13]]}},"alternative-id":["10.1145\/3428275"],"URL":"https:\/\/doi.org\/10.1145\/3428275","relation":{},"ISSN":["2475-1421"],"issn-type":[{"type":"electronic","value":"2475-1421"}],"subject":[],"published":{"date-parts":[[2020,11,13]]},"assertion":[{"value":"2020-11-13","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}