Academic Publications

This page describes various presentations and publications related to the GraalVM compiler and Truffle that were published by Oracle Labs and its academic collaborators.

Truffle Tutorial

Forget “this language is fast”, “this language has the libraries I need”, and “this language has the tool support I need”. The Truffle framework for implementing managed languages in Java gives you native performance, multi-language integration with all other Truffle languages, and tool support – all of that by just implementing an abstract syntax tree (AST) interpreter in Java. Truffle applies AST specialization during interpretation, which enables partial evaluation to create highly optimized native code without the need to write a compiler specifically for a language. The Java VM contributes high-performance garbage collection, threads, and parallelism support.

This tutorial is both for newcomers who want to learn the basic principles of Truffle, and for people with Truffle experience who want to learn about recently added features. It presents the basic principles of the partial evaluation used by Truffle and the Truffle DSL used for type specializations, as well as features that were added recently such as the language-agnostic object model, language integration, and debugging support.

Oracle Labs and external research groups have implemented a variety of programming languages on top of Truffle, including JavaScript, Ruby, R, Python, and Smalltalk. Several of them already exceed the best implementation of that language that existed before.

PLDI 2016, June 13, 2016, Santa Barbara, CA Video recording Slides

GraalVM Compiler Tutorial

This tutorial presents the GraalVM compiler, a high-performance dynamic compiler written in Java. Because it is highly configurable and extensible, it delivers excellent peak performance for a diverse set of managed languages including Java (beating the Java HotSpot server compiler), JavaScript (beating the V8 Crankshaft compiler), Ruby, and R. This lifts compiler research to a new level: researchers can evaluate new compiler optimizations immediately on many languages. If you are a language implementer who is curious how modern VMs like the Java HotSpot VM or the V8 JavaScript VM optimize your code, you will get all your questions answered too.

In detail, the tutorial covers the following topics:

  • Key distinguishing features of the GraalVM compiler,
  • Introduction to the compiler IR: basic properties, instructions, and optimization phases
  • Speculative optimizations: first-class support for optimistic optimizations and deoptimization
  • JVMCI API: separation of the compiler from the VM
  • Snippets: expressing high-level semantics in low-level Java code
  • Compiler intrinsics: use all your hardware instructions
  • Using the compiler for static analysis
  • Custom compilations: integration of the compiler with an application or library
  • GraalVM compiler as a compiler for dynamic programming languages

PLDI 2017, June 18-23, Barcelona, Spain Video recording Download Slides

Truffle Presentations

Debugging at Full Speed: Instrumenting Truffle-implemented Programs JVM Language Summit 2014, July 28-30, Santa Clara, CA Video recording Download slides

One VM to Rule Them All JVM Language Summit 2013, July 29-31, Santa Clara, CA Video recording Download slides

Truffle: A Self-Optimizing Runtime System SPLASH 2012, October 19-26, Tucson, AZ Download slides Download abstract

Truffle Papers

2021

2020

  • Fabio Niephaus, Patrick Rein, Jakob Edding, Jonas Hering, Bastian König, Kolya Opahle, Nico Scordialo, Robert Hirschfeld Example-based Live Programming for Everyone: Building Language-agnostic Tools for Live Programming With LSP and GraalVM In Proceedings of the ACM Symposium for New Ideas, New Paradigms, and Reflections on Everything to do with Programming and Software (Onward! 2020)

  • Jacob Kreindl, Daniele Bonetta, Lukas Stadler, David Leopoldseder, Hanspeter Mössenböck Multi-language Dynamic Taint Analysis in a Polyglot Virtual Machine In Proceedings of the 17th International Conference on Managed Programming Languages and Runtimes (MPLR 2020)

  • Alexander Riese, Fabio Niephaus, Tim Felgentreff, Robert Hirschfeld User-Defined Interface Mappings for the GraalVM In Proceedings of the Interconnecting Code Workshop (ICW) 2020, companion volume to International Conference on the Art, Science, and Engineering of Programming (‹Programming›)

  • Jan Ehmueller, Alexander Riese, Hendrik Tjabben, Fabio Niephaus, Robert Hirschfeld Polyglot Code Finder In Proceedings of the Programming Experience 2020 (PX/20) Workshop, companion volume to International Conference on the Art, Science, and Engineering of Programming (‹Programming›)

  • Johannes Henning, Tim Felgentreff, Fabio Niephaus, Robert Hirschfeld Toward Presizing and Pretransitioning Strategies for GraalPython In Proceedings of the Workshop on Modern Language Runtimes, Ecosystems, and VMs (MoreVMs) 2020, companion volume to International Conference on the Art, Science, and Engineering of Programming (‹Programming›)

2019

2018

2017

2016

2015

2014

2013

  • Thomas Würthinger, Christian Wimmer, Andreas Wöß, Lukas Stadler, Gilles Duboscq, Christian Humer, Gregor Richards, Doug Simon, Mario Wolczko One VM to Rule Them All In Proceedings of Onward!. Describes the vision of the Truffle approach, and the full system stack including the interpreter and dynamic compiler.

  • Matthias Grimmer, Manuel Rigger, Lukas Stadler, Roland Schatz, Hanspeter Mössenböck An efficient native function interface for Java In Proceedings of the International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools. (PPPJ).

  • Matthias Grimmer Runtime Environment for the Truffle/C VM Master’s thesis, Johannes Kepler University Linz, November 2013.

2012

  • Thomas Würthinger, Andreas Wöß, Lukas Stadler, Gilles Duboscq, Doug Simon, Christian Wimmer Self-Optimizing AST Interpreters In Proceedings of the Dynamic Languages Symposium (DLS). Describes the design of self-optimizing and self-specializing interpreter, and the application to JavaScript.

GraalVM Compiler Papers

2021

2020

2019

2018

2016

2015

2014

2013

2012

Connect with us