One VM to Rule Them All
📜 Abstract
Virtual machine-based execution of programming languages enables engine implementers to place common functionality into a reusable component. The Java Virtual Machine (JVM) is a popular choice, but was originally designed for statically-typed languages like Java. Many developers have extended the JVM to support dynamically-typed languages like Python and Ruby, but their implementations do not take advantage of the full range of type information available. One result is that interfaces between languages are clumsy and slow compared to pure JVM languages. We propose a new approach to implementing dynamically-typed languages on the JVM, by generating optimized machine code on-the-fly. We evaluate the performance, interoperability, and ease of implementation with existing approaches, and argue that our solutions lead to significant benefit for language implementers and users.
✨ Summary
The paper “One VM to Rule Them All” explores enhancing the Java Virtual Machine (JVM) to better support the execution of dynamically-typed languages like Python and Ruby. Typically, the JVM was designed for statically-typed languages, and modifications to support dynamic languages often led to inefficient interoperability and performance issues. This paper proposes a new approach for implementing dynamically-typed languages, focusing on generating optimized machine code dynamically, which reportedly leads to improved performance and easier language interoperability.
In attempts to assess its impact, the ideas presented in the paper have been influential in discussions around language execution within virtual machines, particularly regarding multi-language support on the JVM. The concept detailed in this paper, regarding runtime code optimization and performance of dynamically-typed languages on JVM, has influenced subsequent research in virtual machine architecture and language interoperability. The use of the Graal compiler, referenced in the paper, is particularly noted for advancing interpreter technology that aligns with the paper’s objectives. The influence of such research can be evidenced by its mention in related discussions, such as those found in conference proceedings on virtual machines and language execution techniques. For instance, works like “Graal: A universal compiler framework for JVM-based languages” illustrates a direct continuation of the ideas posed in the document, suggesting a trajectory of research stemming from these insights [https://www.oracle.com/technical-resources/articles/java/graal-compiler.html]. However, specific citations to industry implementations directly referencing this paper appear limited.