{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,2,5]],"date-time":"2026-02-05T13:04:31Z","timestamp":1770296671434,"version":"3.49.0"},"reference-count":29,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA","license":[{"start":{"date-parts":[[2018,10,24]],"date-time":"2018-10-24T00:00:00Z","timestamp":1540339200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"DOI":"10.13039\/100000001","name":"National Science Foundation","doi-asserted-by":"publisher","award":["1544542, 1518844"],"award-info":[{"award-number":["1544542, 1518844"]}],"id":[{"id":"10.13039\/100000001","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/100010663","name":"European Research Council","doi-asserted-by":"publisher","award":["695412"],"award-info":[{"award-number":["695412"]}],"id":[{"id":"10.13039\/100010663","id-type":"DOI","asserted-by":"publisher"}]},{"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"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2018,10,24]]},"abstract":"<jats:p>Programming languages that support multiple dispatch rely on an expressive notion of subtyping to specify method applicability. In these languages, type annotations on method declarations are used to select, out of a potentially large set of methods, the one that is most appropriate for a particular tuple of arguments. Julia is a language for scientific computing built around multiple dispatch and an expressive subtyping relation. This paper provides the first formal definition of Julia's subtype relation and motivates its design. We validate our specification empirically with an implementation of our definition that we compare against the existing Julia implementation on a collection of real-world programs. Our subtype implementation differs on 122 subtype tests out of 6,014,476. The first 120 differences are due to a bug in Julia that was fixed once reported; the remaining 2 are under discussion.<\/jats:p>","DOI":"10.1145\/3276483","type":"journal-article","created":{"date-parts":[[2018,10,24]],"date-time":"2018-10-24T11:57:18Z","timestamp":1540382238000},"page":"1-27","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":22,"title":["Julia subtyping: a rational reconstruction"],"prefix":"10.1145","volume":"2","author":[{"given":"Francesco","family":"Zappa Nardelli","sequence":"first","affiliation":[{"name":"Inria, France \/ Northeastern University, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Julia","family":"Belyakova","sequence":"additional","affiliation":[{"name":"Czech Technical University, Czechia"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Artem","family":"Pelenitsyn","sequence":"additional","affiliation":[{"name":"Czech Technical University, Czechia"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Benjamin","family":"Chung","sequence":"additional","affiliation":[{"name":"Northeastern University, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Jeff","family":"Bezanson","sequence":"additional","affiliation":[{"name":"Julia Computing, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"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":[[2018,10,24]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/2048066.2048140"},{"key":"e_1_2_2_3_1","doi-asserted-by":"publisher","DOI":"10.1137\/141000671"},{"key":"e_1_2_2_4_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-662-49498-1_4"},{"key":"e_1_2_2_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/263699.263743"},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-70592-5_2"},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/2676726.2676991"},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/2535838.2535840"},{"key":"e_1_2_2_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/174675.177844"},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/191080.191083"},{"key":"e_1_2_2_11_1","volume-title":"Object-Oriented Programming, Functional Programming and R. Statist. Sci. 2","author":"Chambers John","year":"2014","unstructured":"John Chambers . 2014. Object-Oriented Programming, Functional Programming and R. Statist. Sci. 2 ( 2014 ). Issue 29. John Chambers. 2014. Object-Oriented Programming, Functional Programming and R. Statist. Sci. 2 (2014). Issue 29."},{"key":"e_1_2_2_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/351240.351266"},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/353171.353181"},{"key":"e_1_2_2_14_1","volume-title":"The Common Lisp Object System: An Overview. In European Conference on Object-Oriented Programming (ECOOP).","author":"DeMichiel Linda","year":"1987","unstructured":"Linda DeMichiel and Richard Gabriel . 1987 . The Common Lisp Object System: An Overview. In European Conference on Object-Oriented Programming (ECOOP). Linda DeMichiel and Richard Gabriel. 1987. The Common Lisp Object System: An Overview. In European Conference on Object-Oriented Programming (ECOOP)."},{"key":"e_1_2_2_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/2364506.2364515"},{"key":"e_1_2_2_16_1","volume-title":"Semantic Subtyping. In Symposium on Logic in Computer Science (LICS).","author":"Frisch Alain","year":"2002","unstructured":"Alain Frisch , Giuseppe Castagna , and V\u00e9ronique Benzaken . 2002 . Semantic Subtyping. In Symposium on Logic in Computer Science (LICS). Alain Frisch, Giuseppe Castagna, and V\u00e9ronique Benzaken. 2002. Semantic Subtyping. In Symposium on Logic in Computer Science (LICS)."},{"key":"e_1_2_2_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/1391289.1391293"},{"key":"e_1_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/3009837.3009871"},{"key":"e_1_2_2_19_1","volume-title":"Pierce","author":"Kennedy Andrew","year":"2007","unstructured":"Andrew Kennedy and Benjamin C . Pierce . 2007 . On Decidability of Nominal Subtyping with Variance. In Workshop on Foundations and Developments of Object-Oriented Languages (FOOL\/WOOD) . https:\/\/www.microsoft.com\/en- us\/research\/ publication\/on- decidability- of- nominal- subtyping- with- variance\/ Andrew Kennedy and Benjamin C. Pierce. 2007. On Decidability of Nominal Subtyping with Variance. In Workshop on Foundations and Developments of Object-Oriented Languages (FOOL\/WOOD). https:\/\/www.microsoft.com\/en- us\/research\/ publication\/on- decidability- of- nominal- subtyping- with- variance\/"},{"key":"e_1_2_2_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/286936.286979"},{"key":"e_1_2_2_22_1","volume-title":"F-Bounds, and Undecidability.","author":"Mazurak Karl","year":"2005","unstructured":"Karl Mazurak and Steve Zdancewic . 2005. Type Inference for Java 5: Wildcards , F-Bounds, and Undecidability. ( 2005 ). https:\/\/pdfs.semanticscholar.org\/a73a\/aace3ecafb9f8f4f627705647115c29ef63e.pdf unpublished. Karl Mazurak and Steve Zdancewic. 2005. Type Inference for Java 5: Wildcards, F-Bounds, and Undecidability. (2005). https:\/\/pdfs.semanticscholar.org\/a73a\/aace3ecafb9f8f4f627705647115c29ef63e.pdf unpublished."},{"key":"e_1_2_2_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/143165.143228"},{"key":"e_1_2_2_24_1","unstructured":"Allison Randal Dan Sugalski and Leopold Toetsch. 2003. Perl 6 and Parrot Essentials. O\u2019Reilly.  Allison Randal Dan Sugalski and Leopold Toetsch. 2003. Perl 6 and Parrot Essentials. O\u2019Reilly."},{"key":"e_1_2_2_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/1449764.1449804"},{"key":"e_1_2_2_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/1993498.1993570"},{"key":"e_1_2_2_27_1","volume-title":"Manual: Diagonal Types. Retrieved 2018-07-24 from https:\/\/docs.julialang.org\/en\/v0.6.1\/devdocs\/ types\/#Diagonal- types- 1","author":"Language The Julia","year":"2018","unstructured":"The Julia Language . 2018 . Manual: Diagonal Types. Retrieved 2018-07-24 from https:\/\/docs.julialang.org\/en\/v0.6.1\/devdocs\/ types\/#Diagonal- types- 1 The Julia Language. 2018. Manual: Diagonal Types. Retrieved 2018-07-24 from https:\/\/docs.julialang.org\/en\/v0.6.1\/devdocs\/ types\/#Diagonal- types- 1"},{"key":"e_1_2_2_28_1","doi-asserted-by":"crossref","unstructured":"Jerome Vouillon. 2004. Subtyping Union Types. In Computer Science Logic (CSL).  Jerome Vouillon. 2004. Subtyping Union Types. In Computer Science Logic (CSL).","DOI":"10.1007\/978-3-540-30124-0_32"},{"key":"e_1_2_2_29_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-10672-9_10"},{"key":"e_1_2_2_30_1","unstructured":"Francesco Zappa Nardelli Julia Belyakova Artem Pelenitsyn Benjamin Chung Jeff Bezanson and Jan Vitek. 2018. Julia Subtyping: a Rational Reconstruction \u2014 Project Web-Page. Retrieved 2018-07-24 from https:\/\/www.di.ens.fr\/~zappa\/ projects\/lambdajulia\/  Francesco Zappa Nardelli Julia Belyakova Artem Pelenitsyn Benjamin Chung Jeff Bezanson and Jan Vitek. 2018. Julia Subtyping: a Rational Reconstruction \u2014 Project Web-Page. Retrieved 2018-07-24 from https:\/\/www.di.ens.fr\/~zappa\/ projects\/lambdajulia\/"},{"key":"e_1_2_2_31_1","unstructured":"Steve Zdancewic. 2006. A Note on \u201cType Inference for Java 5\u201d. https:\/\/web.archive.org\/web\/20060920024504\/http: \/\/www.cis.upenn.edu\/~stevez\/note.html  Steve Zdancewic. 2006. A Note on \u201cType Inference for Java 5\u201d. https:\/\/web.archive.org\/web\/20060920024504\/http: \/\/www.cis.upenn.edu\/~stevez\/note.html"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3276483","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3276483","content-type":"application\/pdf","content-version":"vor","intended-application":"syndication"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3276483","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T01:01:58Z","timestamp":1750208518000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3276483"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2018,10,24]]},"references-count":29,"journal-issue":{"issue":"OOPSLA","published-print":{"date-parts":[[2018,10,24]]}},"alternative-id":["10.1145\/3276483"],"URL":"https:\/\/doi.org\/10.1145\/3276483","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2018,10,24]]},"assertion":[{"value":"2018-10-24","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}