{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T04:34:50Z","timestamp":1750221290494,"version":"3.41.0"},"reference-count":92,"publisher":"Association for Computing Machinery (ACM)","issue":"POPL","license":[{"start":{"date-parts":[[2017,12,27]],"date-time":"2017-12-27T00:00:00Z","timestamp":1514332800000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"DOI":"10.13039\/100000005","name":"U.S. Department of Defense","doi-asserted-by":"publisher","award":["DE-SC001805"],"award-info":[{"award-number":["DE-SC001805"]}],"id":[{"id":"10.13039\/100000005","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/501100000781","name":"European Research Council","doi-asserted-by":"publisher","award":["321217"],"award-info":[{"award-number":["321217"]}],"id":[{"id":"10.13039\/501100000781","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/100000001","name":"National Science Foundation","doi-asserted-by":"publisher","award":["1553471 1564207"],"award-info":[{"award-number":["1553471 1564207"]}],"id":[{"id":"10.13039\/100000001","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,1]]},"abstract":"<jats:p>Given a tower of interpreters, i.e., a sequence of multiple interpreters interpreting one another as input programs, we aim to collapse this tower into a compiler that removes all interpretive overhead and runs in a single pass. In the real world, a use case might be Python code executed by an x86 runtime, on a CPU emulated in a JavaScript VM, running on an ARM CPU. Collapsing such a tower can not only exponentially improve runtime performance, but also enable the use of base-language tools for interpreted programs, e.g., for analysis and verification. In this paper, we lay the foundations in an idealized but realistic setting.<\/jats:p>\n          <jats:p>We present a multi-level lambda calculus that features staging constructs and stage polymorphism: based on runtime parameters, an evaluator either executes source code (thereby acting as an interpreter) or generates code (thereby acting as a compiler). We identify stage polymorphism, a programming model from the domain of high-performance program generators, as the key mechanism to make such interpreters compose in a collapsible way.<\/jats:p>\n          <jats:p>We present Pink, a meta-circular Lisp-like evaluator on top of this calculus, and demonstrate that we can collapse arbitrarily many levels of self-interpretation, including levels with semantic modifications. We discuss several examples: compiling regular expressions through an interpreter to base code, building program transformers from modi ed interpreters, and others. We develop these ideas further to include reflection and reification, culminating in Purple, a reflective language inspired by Brown, Blond, and Black, which realizes a conceptually infinite tower, where every aspect of the semantics can change dynamically. Addressing an open challenge, we show how user programs can be compiled and recompiled under user-modified semantics.<\/jats:p>","DOI":"10.1145\/3158140","type":"journal-article","created":{"date-parts":[[2017,12,29]],"date-time":"2017-12-29T14:21:49Z","timestamp":1514557309000},"page":"1-33","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":12,"title":["Collapsing towers of interpreters"],"prefix":"10.1145","volume":"2","author":[{"given":"Nada","family":"Amin","sequence":"first","affiliation":[{"name":"University of Cambridge, UK"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Tiark","family":"Rompf","sequence":"additional","affiliation":[{"name":"Purdue University, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2017,12,27]]},"reference":[{"key":"e_1_2_2_1_1","volume-title":"Jet: An Embedded DSL for High Performance Big Data Processing (BigData).","author":"Ackermann Stefan","year":"2012","unstructured":"Stefan Ackermann , Vojin Jovanovic , Tiark Rompf , and Martin Odersky . 2012 . Jet: An Embedded DSL for High Performance Big Data Processing (BigData). Stefan Ackermann, Vojin Jovanovic, Tiark Rompf, and Martin Odersky. 2012. Jet: An Embedded DSL for High Performance Big Data Processing (BigData)."},{"key":"e_1_2_2_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/888251.888254"},{"key":"e_1_2_2_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/1542476.1542481"},{"key":"e_1_2_2_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/2658761.2658775"},{"key":"e_1_2_2_5_1","doi-asserted-by":"crossref","unstructured":"Kenichi Asai Satoshi Matsuoka and Akinori Yonezawa. 1996. Duplication and Partial Evaluation: For a Better Understanding of Reflective Languages. Lisp and Symbolic Computation - Special issue on computational reflection 203\u2013241. code at github.com\/readevalprintlove\/black .  Kenichi Asai Satoshi Matsuoka and Akinori Yonezawa. 1996. Duplication and Partial Evaluation: For a Better Understanding of Reflective Languages. Lisp and Symbolic Computation - Special issue on computational reflection 203\u2013241. code at github.com\/readevalprintlove\/black .","DOI":"10.1007\/BF01806113"},{"key":"e_1_2_2_6_1","unstructured":"Alan Bawden. 1999. Quasiquotation in Lisp. In PEPM.  Alan Bawden. 1999. Quasiquotation in Lisp. In PEPM."},{"key":"e_1_2_2_7_1","volume-title":"Kelly","author":"Beckmann Olav","year":"2003","unstructured":"Olav Beckmann , Alastair Houghton , Michael R. Mellor , and Paul H. J . Kelly . 2003 . Runtime Code Generation in C++ as a Foundation for Domain-Specific Optimisation. In Domain-Specific Program Generation . Olav Beckmann, Alastair Houghton, Michael R. Mellor, and Paul H. J. Kelly. 2003. Runtime Code Generation in C++ as a Foundation for Domain-Specific Optimisation. In Domain-Specific Program Generation."},{"key":"e_1_2_2_8_1","unstructured":"Fabrice Bellard. 2011\u20132017. JSLinux. bellard.org\/jslinux .  Fabrice Bellard. 2011\u20132017. JSLinux. bellard.org\/jslinux ."},{"key":"e_1_2_2_9_1","unstructured":"Martin Berger Laurence Tratt and Christian Urban. 2017. Modelling Homogeneous Generative Meta-Programming. In ECOOP.  Martin Berger Laurence Tratt and Christian Urban. 2017. Modelling Homogeneous Generative Meta-Programming. In ECOOP."},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-49254-2_4"},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-58402-1_15"},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.1016\/0167-6423(91)90002-F"},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/2837614.2837623"},{"key":"e_1_2_2_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/3009837.3009853"},{"key":"e_1_2_2_16_1","unstructured":"William E. Byrd Michael Ballantyne Gregory Rosenblatt and Matthew Might. 2017. A Unified Approach to Solving Seven Programming Problems (Functional Pearl). In ICFP.  William E. Byrd Michael Ballantyne Gregory Rosenblatt and Matthew Might. 2017. A Unified Approach to Solving Seven Programming Problems (Functional Pearl). In ICFP."},{"key":"e_1_2_2_17_1","doi-asserted-by":"crossref","unstructured":"Cristiano Calcagno Walid Taha Liwen Huang and Xavier Leroy. 2003. Implementing Multi-stage Languages Using ASTs Gensym and Reflection. In GPCE.  Cristiano Calcagno Walid Taha Liwen Huang and Xavier Leroy. 2003. Implementing Multi-stage Languages Using ASTs Gensym and Reflection. In GPCE.","DOI":"10.1007\/978-3-540-39815-8_4"},{"key":"e_1_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796809007205"},{"key":"e_1_2_2_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/201059.201061"},{"key":"e_1_2_2_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/169683.174155"},{"key":"e_1_2_2_21_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-61580-6_5"},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/237721.237784"},{"key":"e_1_2_2_23_1","volume-title":"Online Type-Directed Partial Evaluation. In Fuji International Symposium on Functional and Logic Programming.","author":"Danvy Olivier","year":"1998","unstructured":"Olivier Danvy . 1998 a. Online Type-Directed Partial Evaluation. In Fuji International Symposium on Functional and Logic Programming. Olivier Danvy. 1998a. Online Type-Directed Partial Evaluation. In Fuji International Symposium on Functional and Logic Programming."},{"key":"e_1_2_2_24_1","volume-title":"Type-Directed Partial Evaluation. In DIKU 1998 International Summer School, John Hatcliff, Torben \u00c6. Mogensen, and Peter Thiemann (Eds.).","author":"Danvy Olivier","year":"1998","unstructured":"Olivier Danvy . 1998 b. Type-Directed Partial Evaluation. In DIKU 1998 International Summer School, John Hatcliff, Torben \u00c6. Mogensen, and Peter Thiemann (Eds.). Olivier Danvy. 1998b. Type-Directed Partial Evaluation. In DIKU 1998 International Summer School, John Hatcliff, Torben \u00c6. Mogensen, and Peter Thiemann (Eds.)."},{"key":"e_1_2_2_25_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-36579-6_6"},{"volume-title":"An Analytical Approach to Programs as Data Objects. DSc thesis. Department of Computer Science","author":"Danvy Olivier","key":"e_1_2_2_26_1","unstructured":"Olivier Danvy . 2006. An Analytical Approach to Programs as Data Objects. DSc thesis. Department of Computer Science , Aarhus University , Aarhus, Denmark . ebooks.au.dk\/index.php\/aul\/catalog\/book\/214 . Olivier Danvy. 2006. An Analytical Approach to Programs as Data Objects. DSc thesis. Department of Computer Science, Aarhus University, Aarhus, Denmark. ebooks.au.dk\/index.php\/aul\/catalog\/book\/214 ."},{"key":"e_1_2_2_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/91556.91622"},{"key":"e_1_2_2_29_1","doi-asserted-by":"publisher","DOI":"10.7146\/brics.v12i3.21869"},{"key":"e_1_2_2_30_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.jcss.2009.10.004"},{"key":"e_1_2_2_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/62678.62725"},{"key":"e_1_2_2_32_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.tcs.2012.02.023"},{"key":"e_1_2_2_33_1","doi-asserted-by":"publisher","DOI":"10.7146\/brics.v11i26.21851"},{"key":"e_1_2_2_34_1","doi-asserted-by":"crossref","unstructured":"David Darais Nicholas Labich Ph\u00fac C. Nguyen and David Van Horn. 2017. Abstracting Definitional Interpreters (Functional Pearl). In ICFP.  David Darais Nicholas Labich Ph\u00fac C. Nguyen and David Van Horn. 2017. Abstracting Definitional Interpreters (Functional Pearl). In ICFP.","DOI":"10.1145\/3110256"},{"key":"e_1_2_2_35_1","unstructured":"Andrei P. Ershov. 1978. On the essence of compilation. Formal Description of Programming Concepts 391\u2013420.  Andrei P. Ershov. 1978. On the essence of compilation. Formal Description of Programming Concepts 391\u2013420."},{"key":"e_1_2_2_36_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 . Matthias Felleisen, Robert Bruce Findler, and Matthew Flatt. 2009. Semantics Engineering with PLT Redex. MIT Press."},{"key":"e_1_2_2_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/174675.178047"},{"key":"e_1_2_2_38_1","doi-asserted-by":"publisher","DOI":"10.1007\/10704567_23"},{"key":"e_1_2_2_39_1","doi-asserted-by":"publisher","DOI":"10.1145\/155090.155113"},{"key":"e_1_2_2_40_1","volume-title":"Friedman and Mitchell Wand","author":"Daniel","year":"1984","unstructured":"Daniel P. Friedman and Mitchell Wand . 1984 . Reification : Reflection without Metaphysics. In Lisp and Functional Programming . Daniel P. Friedman and Mitchell Wand. 1984. Reification: Reflection without Metaphysics. In Lisp and Functional Programming."},{"key":"e_1_2_2_41_1","doi-asserted-by":"publisher","DOI":"10.1145\/301618.301661"},{"key":"e_1_2_2_42_1","first-page":"721","article-title":"Partial Evaluation of Computation Process \u2014 An approach to a Compiler-Compiler","volume":"8","author":"Futamura Yoshihiko","year":"1971","unstructured":"Yoshihiko Futamura . 1971 . Partial Evaluation of Computation Process \u2014 An approach to a Compiler-Compiler . Transactions of the Institute of Electronics and Communication Engineers of Japan 54-C , 8 , 721 \u2013 728 . Yoshihiko Futamura. 1971. Partial Evaluation of Computation Process \u2014 An approach to a Compiler-Compiler. Transactions of the Institute of Electronics and Communication Engineers of Japan 54-C, 8, 721\u2013728.","journal-title":"Transactions of the Institute of Electronics and Communication Engineers of Japan 54-C"},{"key":"e_1_2_2_43_1","doi-asserted-by":"publisher","DOI":"10.1023\/A:1010043619517"},{"key":"e_1_2_2_44_1","doi-asserted-by":"publisher","DOI":"10.1145\/3136040.3136047"},{"key":"e_1_2_2_45_1","doi-asserted-by":"crossref","unstructured":"Robert Gl\u00fcck. 2002. Jones Optimality Binding-time Improvements and the Strength of Program Specializers. In PEPM.  Robert Gl\u00fcck. 2002. Jones Optimality Binding-time Improvements and the Strength of Program Specializers. In PEPM.","DOI":"10.1145\/568173.568175"},{"key":"e_1_2_2_46_1","doi-asserted-by":"publisher","DOI":"10.1007\/BFb0026825"},{"key":"e_1_2_2_47_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-62064-8_22"},{"key":"e_1_2_2_48_1","doi-asserted-by":"crossref","unstructured":"Robert Gl\u00fcck and Jesper J\u00f8rgensen. 1998. Multi-Level Specialization (Extended Abstract). In Partial Evaluation.  Robert Gl\u00fcck and Jesper J\u00f8rgensen. 1998. Multi-Level Specialization (Extended Abstract). In Partial Evaluation.","DOI":"10.1007\/3-540-47018-2_13"},{"key":"e_1_2_2_49_1","volume-title":"Klimov","author":"Gl\u00fcck Robert","year":"1999","unstructured":"Robert Gl\u00fcck and Andrei V . Klimov . 1999 . Reduction of language hierarchies by metacomputation. In The Evolution of Complexity . Robert Gl\u00fcck and Andrei V. Klimov. 1999. Reduction of language hierarchies by metacomputation. In The Evolution of Complexity."},{"key":"e_1_2_2_50_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0304-3975(00)00051-7"},{"key":"e_1_2_2_51_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICCA.2011.6137940"},{"key":"e_1_2_2_52_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0960129597002405"},{"key":"e_1_2_2_53_1","unstructured":"Fabian Hemmer. 2014\u20132017. x86 virtualization in JavaScript running in your browser and NodeJS. copy.sh\/v86 .  Fabian Hemmer. 2014\u20132017. x86 virtualization in JavaScript running in your browser and NodeJS. copy.sh\/v86 ."},{"key":"e_1_2_2_54_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-57880-3_19"},{"key":"e_1_2_2_55_1","doi-asserted-by":"publisher","DOI":"10.1145\/1995376.1995400"},{"key":"e_1_2_2_56_1","doi-asserted-by":"publisher","DOI":"10.1007\/BF01806112"},{"key":"e_1_2_2_57_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.scico.2004.03.010"},{"volume-title":"Partial evaluation and automatic program generation","author":"Jones Neil D.","key":"e_1_2_2_58_1","unstructured":"Neil D. Jones , Carsten K. Gomard , and Peter Sestoft . 1993. Partial evaluation and automatic program generation . Prentice-Hall, Inc. , Upper Saddle River, NJ, USA. www.itu.dk\/people\/sestoft\/pebook . Neil D. Jones, Carsten K. Gomard, and Peter Sestoft. 1993. Partial evaluation and automatic program generation. Prentice-Hall, Inc., Upper Saddle River, NJ, USA. www.itu.dk\/people\/sestoft\/pebook ."},{"key":"e_1_2_2_59_1","doi-asserted-by":"publisher","DOI":"10.1007\/BF01806312"},{"volume-title":"A Regular Expression Matcher","author":"Kernighan Brian","key":"e_1_2_2_60_1","unstructured":"Brian Kernighan and Rob Pike . 2007. A Regular Expression Matcher . In Beautiful Code, Greg Wilson and Andy Oram (Eds.). O\u2019Reilly , Chapter 1. www.cs.princeton.edu\/courses\/archive\/spr09\/cos333\/beautiful.html . Brian Kernighan and Rob Pike. 2007. A Regular Expression Matcher. In Beautiful Code, Greg Wilson and Andy Oram (Eds.). O\u2019Reilly, Chapter 1. www.cs.princeton.edu\/courses\/archive\/spr09\/cos333\/beautiful.html ."},{"key":"e_1_2_2_61_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-07151-0_6"},{"key":"e_1_2_2_62_1","doi-asserted-by":"publisher","DOI":"10.1145\/1017753.1017794"},{"key":"e_1_2_2_63_1","volume-title":"Ershov Memorial Conference, PSI.","author":"Klimov Andrei V.","year":"2009","unstructured":"Andrei V. Klimov . 2009 . A Java Supercompiler and Its Application to Verification of Cache-Coherence Protocols . In Ershov Memorial Conference, PSI. Andrei V. Klimov. 2009. A Java Supercompiler and Its Application to Verification of Cache-Coherence Protocols. In Ershov Memorial Conference, PSI."},{"key":"e_1_2_2_64_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-31057-7_19"},{"key":"e_1_2_2_65_1","doi-asserted-by":"publisher","DOI":"10.1007\/BFb0014551"},{"key":"e_1_2_2_66_1","doi-asserted-by":"crossref","unstructured":"Hidehiko Masuhara Gregor Kiczales and Christopher Dutchyn. 2003. A Compilation and Optimization Model for AspectOriented Programs. In Compiler Construction.  Hidehiko Masuhara Gregor Kiczales and Christopher Dutchyn. 2003. A Compilation and Optimization Model for AspectOriented Programs. In Compiler Construction.","DOI":"10.1007\/3-540-36579-6_4"},{"key":"e_1_2_2_67_1","unstructured":"Torben \u00c6. Mogensen. 1988. Partially static structures in a self-applicable partial evaluator. In Partial Evaluation and Mixed Computation: IFIP TC2 Workshop Dines Bj\u00f8rner Andrei P. Ershov and Neil D. Jones (Eds.).  Torben \u00c6. Mogensen. 1988. Partially static structures in a self-applicable partial evaluator. In Partial Evaluation and Mixed Computation: IFIP TC2 Workshop Dines Bj\u00f8rner Andrei P. Ershov and Neil D. Jones (Eds.)."},{"key":"e_1_2_2_68_1","doi-asserted-by":"publisher","DOI":"10.1016\/0890-5401(91)90052-4"},{"key":"e_1_2_2_69_1","doi-asserted-by":"crossref","unstructured":"Flemming Nielson and Hanne Riis Nielson. 1996. Multi-Level Lambda-Calculi: An Algebraic Description. In Partial Evaluation: Dagstuhl Selected Papers Olivier Danvy Robert Gl\u00fcck and Peter Thiemann (Eds.).  Flemming Nielson and Hanne Riis Nielson. 1996. Multi-Level Lambda-Calculi: An Algebraic Description. In Partial Evaluation: Dagstuhl Selected Papers Olivier Danvy Robert Gl\u00fcck and Peter Thiemann (Eds.).","DOI":"10.1007\/3-540-61580-6_17"},{"key":"e_1_2_2_70_1","doi-asserted-by":"publisher","DOI":"10.1145\/3136040.3136060"},{"key":"e_1_2_2_71_1","doi-asserted-by":"crossref","unstructured":"Georg Ofenbeck Tiark Rompf Alen Stojanov Martin Odersky and Markus P\u00fcschel. 2013. Spiral in Scala: Towards the Systematic Construction of Generators for Performance Libraries. In GPCE.  Georg Ofenbeck Tiark Rompf Alen Stojanov Martin Odersky and Markus P\u00fcschel. 2013. Spiral in Scala: Towards the Systematic Construction of Generators for Performance Libraries. In GPCE.","DOI":"10.1145\/2517208.2517228"},{"key":"e_1_2_2_72_1","doi-asserted-by":"publisher","DOI":"10.1177\/1094342004041291"},{"key":"e_1_2_2_73_1","doi-asserted-by":"publisher","DOI":"10.1145\/1542476.1542509"},{"key":"e_1_2_2_74_1","doi-asserted-by":"publisher","DOI":"10.1145\/800194.805852"},{"key":"e_1_2_2_76_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-30936-1_17"},{"key":"e_1_2_2_77_1","volume-title":"Functional Pearl: A SQL to C Compiler in 500 Lines of Code. In ICFP.","author":"Rompf Tiark","year":"2015","unstructured":"Tiark Rompf and Nada Amin . 2015 . Functional Pearl: A SQL to C Compiler in 500 Lines of Code. In ICFP. Tiark Rompf and Nada Amin. 2015. Functional Pearl: A SQL to C Compiler in 500 Lines of Code. In ICFP."},{"key":"e_1_2_2_78_1","doi-asserted-by":"publisher","DOI":"10.1145\/1868294.1868314"},{"key":"e_1_2_2_79_1","doi-asserted-by":"publisher","DOI":"10.1145\/2184319.2184345"},{"key":"e_1_2_2_80_1","doi-asserted-by":"crossref","unstructured":"Tiark Rompf Arvind K. Sujeeth Nada Amin Kevin Brown Vojin Jovanovic HyoukJoong Lee Manohar Jonnalagedda Kunle Olukotun and Martin Odersky. 2013. Optimizing Data Structures in High-Level Programs. In POPL.  Tiark Rompf Arvind K. Sujeeth Nada Amin Kevin Brown Vojin Jovanovic HyoukJoong Lee Manohar Jonnalagedda Kunle Olukotun and Martin Odersky. 2013. Optimizing Data Structures in High-Level Programs. In POPL.","DOI":"10.1145\/2429069.2429128"},{"key":"e_1_2_2_81_1","doi-asserted-by":"publisher","DOI":"10.4204\/EPTCS.66.5"},{"key":"e_1_2_2_82_1","doi-asserted-by":"publisher","DOI":"10.1145\/778559.778561"},{"key":"e_1_2_2_83_1","doi-asserted-by":"publisher","DOI":"10.1145\/2048066.2048098"},{"key":"e_1_2_2_85_1","doi-asserted-by":"publisher","DOI":"10.1145\/800017.800513"},{"key":"e_1_2_2_86_1","volume-title":"Proceedings of reflection.","author":"Sobel Jonathan M","year":"1996","unstructured":"Jonathan M Sobel and Daniel P Friedman . 1996 . An introduction to reflection-oriented programming . In Proceedings of reflection. Jonathan M Sobel and Daniel P Friedman. 1996. An introduction to reflection-oriented programming. In Proceedings of reflection."},{"key":"e_1_2_2_87_1","doi-asserted-by":"publisher","DOI":"10.1145\/231379.231419"},{"key":"e_1_2_2_88_1","unstructured":"Arvind K. Sujeeth HyoukJoong. Lee Kevin J. Brown Tiark Rompf Michael Wu Anand R. Atreya Martin Odersky and Kunle Olukotun. 2011. OptiML: an Implicitly Parallel Domain-Specific Language for Machine Learning. In ICML.  Arvind K. Sujeeth HyoukJoong. Lee Kevin J. Brown Tiark Rompf Michael Wu Anand R. Atreya Martin Odersky and Kunle Olukotun. 2011. OptiML: an Implicitly Parallel Domain-Specific Language for Machine Learning. In ICML."},{"key":"e_1_2_2_89_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0304-3975(00)00053-0"},{"key":"e_1_2_2_90_1","doi-asserted-by":"publisher","DOI":"10.1145\/232627.232647"},{"key":"e_1_2_2_91_1","doi-asserted-by":"publisher","DOI":"10.1145\/2426890.2426906"},{"key":"e_1_2_2_93_1","volume-title":"Berger","author":"Vilk John","year":"2014","unstructured":"John Vilk and Emery D . Berger . 2014 . Doppio : Breaking the Browser Language Barrier. In PLDI. John Vilk and Emery D. Berger. 2014. Doppio: Breaking the Browser Language Barrier. In PLDI."},{"key":"e_1_2_2_94_1","doi-asserted-by":"publisher","DOI":"10.1145\/75277.75283"},{"key":"e_1_2_2_95_1","doi-asserted-by":"publisher","DOI":"10.1145\/319838.319871"},{"key":"e_1_2_2_96_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0167-8191(00)00086-7"},{"key":"e_1_2_2_97_1","doi-asserted-by":"crossref","unstructured":"Alon Zakai. 2011. Emscripten: an LLVM-to-JavaScript compiler. In OOPSLA.  Alon Zakai. 2011. Emscripten: an LLVM-to-JavaScript compiler. In OOPSLA.","DOI":"10.1145\/2048147.2048224"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3158140","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3158140","content-type":"application\/pdf","content-version":"vor","intended-application":"syndication"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3158140","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T02:11:30Z","timestamp":1750212690000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3158140"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2017,12,27]]},"references-count":92,"journal-issue":{"issue":"POPL","published-print":{"date-parts":[[2018,1]]}},"alternative-id":["10.1145\/3158140"],"URL":"https:\/\/doi.org\/10.1145\/3158140","relation":{},"ISSN":["2475-1421"],"issn-type":[{"type":"electronic","value":"2475-1421"}],"subject":[],"published":{"date-parts":[[2017,12,27]]},"assertion":[{"value":"2017-12-27","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}