• Home
  • Search
  • Cross-Language Interoperability in a Multi-Language Runtime
  • Cite Icon39
  • https://doi.org/10.1145/3201898Copy DOI Icon

Cross-Language Interoperability in a Multi-Language Runtime

Show More
  • Abstract
  • Literature Map
  • References
  • Citations
  • Similar Papers
Abstract

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. 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 generic access . Generic access 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. Generic access supports multiple languages, enables an efficient multi-language development, and ensures high performance. We evaluate generic access 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 generic access 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.

Similar Papers
  • Conference Article
  • Citations1

On the design of a functional programming framework

  • Oct 14, 1996
  • Z Budimac +2
  • Research Article
  • Citations10

Draining the Swamp: Micro Virtual Machines as Solid Foundation for Language Development

  • May 03, 2015
  • DROPS (Schloss Dagstuhl – Leibniz Center for Informatics)
  • Kunshan Wang +4
  • Research Article
  • Citations1

Input and Output Application Programming Interface for Plaid Standard Library

  • Jan 31, 2014
  • International Journal of Software Engineering and Its Applications
  • Nazri Kama
  • Research Article
  • Citations33

Modular language implementation in Rascal – experience report

  • Nov 10, 2015
  • Science of Computer Programming
  • Bas Basten +8
  • Research Article
  • Citations5

Examining preservice science teachers' implementation of language‐ and literacy‐integrated science through a cultural historical activity theory lens

  • Oct 19, 2022
  • Science Education
  • Alexis A Rutt +1
  • Book Chapter

Awale Game: Application Programming Interface and Augmented Reality Interface

  • Dec 14, 2018
  • Lecture notes of the Institute for Computer Sciences, Social Informatics and Telecommunications Engineering
  • Marie-Parisius Dorian Houessou +6
  • Research Article

Colloquy: Evidence-Based Method for Supporting the Design of Conversational APIs

  • Feb 18, 2025
  • Journal of Software Engineering Research and Development
  • João Antônio D M Bastos +2
  • Book Chapter
  • Citations1

API Misuse Detection Based on Stacked LSTM

  • Jan 01, 2021
  • Lecture notes of the Institute for Computer Sciences, Social Informatics and Telecommunications Engineering
  • Shuyin Ouyang +3
  • Research Article
  • Citations6

Flexible Language Interoperability.

  • Jan 01, 2007
  • The Journal of Object Technology
  • Torbjörn Ekman +2
  • Conference Instance
  • Citations1

Proceedings of the 6th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems

  • Jul 26, 2011
  • Conference Article
  • Citations27

Recommending Proper API Code Examples for Documentation Purpose

  • Dec 01, 2011
  • Lee Wei Mar +2
  • Research Article

Plugin architecture for creating algorithms for bioacoustic signal processing software

  • Oct 01, 2014
  • The Journal of the Acoustical Society of America
  • Christopher A Marsh +2
  • Conference Article
  • Citations9

Techniques and applications for guest-language safepoints

  • Jul 04, 2015
  • Benoit Daloze +3
  • Conference Article
  • Citations2

Colloquy

  • Oct 21, 2020
  • João Antonio D M Bastos +2
  • Research Article

Declarative Semantics in Object-Oriented Software Development - A Taxonomy and Survey

  • Jan 01, 2016
  • SHILAP Revista de lepidopterología
  • Hassan Rashidi
Cactus Communications logo

Copyright 2026 Cactus Communications. All rights reserved.