• Corpus ID: 18133563

Opportunities for a Truffle-based Golo Interpreter

  title={Opportunities for a Truffle-based Golo Interpreter},
  author={Julien Ponge and Fr{\'e}d{\'e}ric Le Mou{\"e}l and Nicolas Stouls and Yannick Loiseau},
Golo is a simple dynamically-typed language for the Java Virtual Machine. Initially implemented as a ahead-of-time compiler to JVM bytecode, it leverages invokedynamic and JSR 292 method handles to implement a reasonably efficient runtime. Truffle is emerging as a framework for building interpreters for JVM languages with self-specializing AST nodes. Combined with the Graal compiler, Truffle offers a simple path towards writing efficient interpreters while keeping the engineering efforts… 

Figures from this paper

Eclipse Golo
Golo is a simple dynamically-typed programming language for the Java Virtual Machine (JVM) that has been designed to leverage the capabilities of the Java 7 invokedynamic bytecode instruction and


Golo, a dynamic, light and efficient language for post-invokedynamic JVM
This paper introduces Golo, a simple dynamic programming language for the Java Virtual Machine (JVM) that has been designed to leverage the capabilities of the new Java 7 invokedynamic instruction
Are We There Yet?: Simple Language Implementation Techniques for the 21st Century
RPython and Truffle are implementation techniques based on simple interpreters; they promise to perform at the same order of magnitude as highly optimizing virtual machines.
Bytecodes meet combinators: invokedynamic on the JVM
To generalize method calls on the JVM, the JSR 292 Expert Group has designed a new invokedynamic instruction that provides user-defined call site semantics, balancing the conciseness of bytecode with the dynamic flexibility of function pointers.
Optimizing Dynamically-Typed Object-Oriented Languages With Polymorphic Inline Caches
PICs provide a new way to reduce the overhead of polymorphic message sends by extending inline caches to include more than one cached lookup result per call site.
Incorporating language processing into Java applications: a JavaCC tutorial
The process of using JavaCC to create language-enabled applications is walked through, which requires introducing us to Extended Backus Naur Form, a prerequisite to using Java CC.
Promises: linguistic support for efficient asynchronous procedure calls in distributed systems
A new data type called a promise is described that was designed to support asynchronous calls that allow a caller to run in parallel with a call and to pick up the results of the call, including any exceptions it raises, in a convenient and type-safe manner.
Go at Google
  • R. Pike
  • Computer Science
    SPLASH '12
  • 2012
Besides its better-known aspects such as built-in concurrency and garbage collection, Go's design considerations include rigorous dependency management, the adaptability of software architecture as systems grow, and robustness across the boundaries between components.
ASM: a code manipulation tool to implement adaptable systems
ASM is a Java class manipulation tool designed to dynamically generate and manipulate Java classes, which are useful techniques to implement adaptable systems. ASM is based on a new approach,