{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,3,28]],"date-time":"2026-03-28T21:07:37Z","timestamp":1774732057677,"version":"3.50.1"},"reference-count":63,"publisher":"Association for Computing Machinery (ACM)","issue":"2","license":[{"start":{"date-parts":[[2018,5,28]],"date-time":"2018-05-28T00:00:00Z","timestamp":1527465600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Program. Lang. Syst."],"published-print":{"date-parts":[[2018,6,30]]},"abstract":"<jats:p>In large-scale software applications, programmers often combine different programming languages because this allows them to use the most suitable language for a given problem, to gradually migrate existing projects from one language to another, or to reuse existing source code. However, different programming languages have fundamentally different implementations, which are hard to combine. The composition of language implementations often results in complex interfaces between languages, insufficient flexibility, or poor performance.<\/jats:p>\n          <jats:p>\n            We propose TruffleVM, a virtual machine (VM) that can execute different programming languages and is able to compose them in a seamless way. TruffleVM supports dynamically-typed languages (e.g., JavaScript and Ruby) as well as statically typed low-level languages (e.g., C). It consists of individual language implementations, which translate source code to an intermediate representation that is executed by a shared VM. TruffleVM composes these different language implementations via\n            <jats:italic>generic access<\/jats:italic>\n            .\n            <jats:italic>Generic access<\/jats:italic>\n            is a language-agnostic mechanism that language implementations use to access foreign data or call foreign functions. It features language-agnostic messages that the TruffleVM resolves to efficient foreign-language-specific operations at runtime.\n            <jats:italic>Generic access<\/jats:italic>\n            supports multiple languages, enables an efficient multi-language development, and ensures high performance.\n          <\/jats:p>\n          <jats:p>\n            We evaluate\n            <jats:italic>generic access<\/jats:italic>\n            with two case studies. The first one explains the transparent composition of JavaScript, Ruby, and C. The second one shows an implementation of the C extensions application programming interface (API) for Ruby. We show that\n            <jats:italic>generic access<\/jats:italic>\n            guarantees good runtime performance. It avoids conversion or marshalling of foreign objects at the language boundary and allows the dynamic compiler to perform its optimizations across language boundaries.\n          <\/jats:p>","DOI":"10.1145\/3201898","type":"journal-article","created":{"date-parts":[[2018,5,29]],"date-time":"2018-05-29T12:24:26Z","timestamp":1527596666000},"page":"1-43","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":28,"title":["Cross-Language Interoperability in a Multi-Language Runtime"],"prefix":"10.1145","volume":"40","author":[{"given":"Matthias","family":"Grimmer","sequence":"first","affiliation":[{"name":"Oracle Labs, Austria"}]},{"given":"Roland","family":"Schatz","sequence":"additional","affiliation":[{"name":"Oracle Labs, Austria"}]},{"given":"Chris","family":"Seaton","sequence":"additional","affiliation":[{"name":"Oracle Labs, United Kingdom"}]},{"given":"Thomas","family":"W\u00fcrthinger","sequence":"additional","affiliation":[{"name":"Oracle Labs, Switzerland"}]},{"given":"Mikel","family":"Luj\u00e1n","sequence":"additional","affiliation":[{"name":"University of Manchester, United Kingdom"}]},{"given":"Hanspeter","family":"M\u00f6ssenb\u00f6ck","sequence":"additional","affiliation":[{"name":"Johannes Kepler University"}]}],"member":"320","published-online":{"date-parts":[[2018,5,28]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/75277.75296"},{"key":"e_1_2_2_2_1","doi-asserted-by":"publisher","DOI":"10.1109\/JPROC.2004.840305"},{"key":"e_1_2_2_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/2542142.2542146"},{"key":"e_1_2_2_4_1","volume-title":"Carl Friedrich Bolz, and Laurence Tratt","author":"Barrett Edd","year":"2014","unstructured":"Edd Barrett, Carl Friedrich Bolz, and Laurence Tratt. 2014. Approaches to interpreter composition. CoRR abs\/1409.0757. Retrieved from http:\/\/arxiv.org\/abs\/1409.0757."},{"key":"e_1_2_2_5_1","unstructured":"Edd Barrett Lukas Diekmann and Laurence Tratt. 2015. Fine-grained language composition. CoRR abs\/1503.08623. Retrieved from http:\/\/arxiv.org\/abs\/1503.08623."},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.5555\/1267498.1267513"},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/77648.77650"},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.1016\/S1571-0661(05)80452-9"},{"key":"e_1_2_2_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/1565824.1565827"},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.5555\/572615"},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/2534706.2534719"},{"key":"e_1_2_2_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/2983990.2984001"},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/2647508.2647521"},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/2542142.2542143"},{"key":"e_1_2_2_15_1","unstructured":"ECMA-International. 2012. Standard ECMA-335. Common Language Infrastructure (CLI). Retrieved from http:\/\/www.ecma-international.org\/publications\/standards\/Ecma-335.htm."},{"key":"e_1_2_2_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/317636.317790"},{"key":"e_1_2_2_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/5666.5673"},{"key":"e_1_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.1023\/A:1010095604496"},{"key":"e_1_2_2_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/1094811.1094830"},{"key":"e_1_2_2_20_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-70592-5_4"},{"key":"e_1_2_2_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/3132190.3132202"},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/2647508.2647528"},{"key":"e_1_2_2_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/2500828.2500832"},{"key":"e_1_2_2_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/2786558.2786565"},{"key":"e_1_2_2_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/2816707.2816714"},{"key":"e_1_2_2_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/2724525.2728790"},{"key":"e_1_2_2_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/2633301.2633302"},{"key":"e_1_2_2_28_1","volume-title":"The Architecture of Open Source Applications","author":"Hardy Jeff","year":"2008","unstructured":"Jeff Hardy. 2008. The dynamic language runtime and the iron languages. In The Architecture of Open Source Applications, Volume II, Amy Brown and Greg Wilson (Eds.). Retrieved from http:\/\/aosabook.org\/en\/index.html."},{"key":"e_1_2_2_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/1297027.1297030"},{"key":"e_1_2_2_30_1","doi-asserted-by":"publisher","DOI":"10.5555\/646149.679193"},{"key":"e_1_2_2_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/143095.143114"},{"key":"e_1_2_2_32_1","unstructured":"International Organization for Standardization. 2007. C99 Standard: ISO\/IEX 9899:TC3. Retrieved from www.open-std.org\/jtc1\/sc22\/wg14\/www\/docs\/n1256.pdf."},{"key":"e_1_2_2_33_1","volume-title":"Proc. Haskell Workshop.","author":"Jones Simon Peyton","year":"1997","unstructured":"Simon Peyton Jones, Thomas Nordin, and Alastair Reid. 1997. GreenCard: A foreign-language interface for Haskell. In Proc. Haskell Workshop."},{"key":"e_1_2_2_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/2491894.2464160"},{"key":"e_1_2_2_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/2095050.2095099"},{"key":"e_1_2_2_36_1","volume-title":"Scheme and Functional Programming Workshop. Citeseer.","author":"F. Klock","year":"2007","unstructured":"F. Klock II. 2007. The layers of Larceny\u2019s foreign function interface. In Scheme and Functional Programming Workshop. Citeseer."},{"key":"e_1_2_2_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/1639949.1640105"},{"key":"e_1_2_2_38_1","doi-asserted-by":"publisher","DOI":"10.5555\/520155"},{"key":"e_1_2_2_39_1","doi-asserted-by":"publisher","DOI":"10.5555\/520155"},{"key":"e_1_2_2_40_1","doi-asserted-by":"publisher","DOI":"10.1145\/2814270.2814275"},{"key":"e_1_2_2_41_1","doi-asserted-by":"publisher","DOI":"10.1145\/1190216.1190220"},{"key":"e_1_2_2_42_1","first-page":"7","article-title":"Technical overview of the common language runtime","volume":"29","author":"Meijer Erik","year":"2001","unstructured":"Erik Meijer and John Gough. 2001. Technical overview of the common language runtime. Language 29 (2001), 7.","journal-title":"Language"},{"key":"e_1_2_2_43_1","unstructured":"Mozilla Developer Network. 2014. XPCOM Specification. Retrieved from https:\/\/developer.mozilla.org\/en-US\/docs\/Mozilla\/XPCOM."},{"key":"e_1_2_2_44_1","unstructured":"Object Management Group. 2014. Common Object Request Brooker Architecture (CORBA) Specification. Retrievced from http:\/\/www.omg.org\/spec\/CORBA\/3.3\/."},{"key":"e_1_2_2_45_1","doi-asserted-by":"publisher","DOI":"10.1145\/1173706.1173714"},{"key":"e_1_2_2_46_1","doi-asserted-by":"publisher","DOI":"10.1145\/141471.141559"},{"key":"e_1_2_2_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/2617548.2617550"},{"key":"e_1_2_2_48_1","volume-title":"Thrift: Scalable cross-language services implementation. Facebook White Paper 5","author":"Slee Mark","year":"2007","unstructured":"Mark Slee, Aditya Agarwal, and Marc Kwiatkowski. 2007. Thrift: Scalable cross-language services implementation. Facebook White Paper 5 (2007)."},{"key":"e_1_2_2_49_1","doi-asserted-by":"publisher","DOI":"10.1145\/2414740.2414750"},{"key":"e_1_2_2_50_1","doi-asserted-by":"publisher","DOI":"10.1145\/2489837.2489846"},{"key":"e_1_2_2_51_1","doi-asserted-by":"publisher","DOI":"10.1145\/2544137.2544157"},{"key":"e_1_2_2_52_1","doi-asserted-by":"publisher","DOI":"10.1145\/1064979.1064997"},{"key":"e_1_2_2_53_1","unstructured":"TC39. 2016. Official ECMAScript Conformance Test Suite. Retrieved from https:\/\/github.com\/tc39\/test262."},{"key":"e_1_2_2_54_1","volume-title":"Safe and Principled Language Interoperation","author":"Trifonov Valery","unstructured":"Valery Trifonov and Zhong Shao. 1999. Safe and Principled Language Interoperation. Springer."},{"key":"e_1_2_2_55_1","doi-asserted-by":"publisher","DOI":"10.5555\/379381.379581"},{"key":"e_1_2_2_56_1","doi-asserted-by":"publisher","DOI":"10.1145\/1869459.1869479"},{"key":"e_1_2_2_57_1","doi-asserted-by":"publisher","DOI":"10.1145\/2508075.2514572"},{"key":"e_1_2_2_58_1","doi-asserted-by":"publisher","DOI":"10.1145\/2647508.2647517"},{"key":"e_1_2_2_59_1","doi-asserted-by":"publisher","DOI":"10.1145\/1706299.1706343"},{"key":"e_1_2_2_60_1","doi-asserted-by":"publisher","DOI":"10.1145\/3062341.3062381"},{"key":"e_1_2_2_61_1","doi-asserted-by":"publisher","DOI":"10.1145\/2509578.2509581"},{"key":"e_1_2_2_62_1","doi-asserted-by":"publisher","DOI":"10.1145\/2384577.2384587"},{"key":"e_1_2_2_63_1","doi-asserted-by":"publisher","DOI":"10.1145\/2660193.2660223"}],"container-title":["ACM Transactions on Programming Languages and Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3201898","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3201898","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T01:08:53Z","timestamp":1750208933000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3201898"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2018,5,28]]},"references-count":63,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2018,6,30]]}},"alternative-id":["10.1145\/3201898"],"URL":"https:\/\/doi.org\/10.1145\/3201898","relation":{},"ISSN":["0164-0925","1558-4593"],"issn-type":[{"value":"0164-0925","type":"print"},{"value":"1558-4593","type":"electronic"}],"subject":[],"published":{"date-parts":[[2018,5,28]]},"assertion":[{"value":"2016-03-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2018-02-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2018-05-28","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}