Switch branches/tags
Find file Copy path
375 lines (273 sloc) 26.4 KB

This page describes various presentations and publications related to Graal 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

Graal Tutorial

This tutorial presents Graal, 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 using Graal 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 Graal,
  • Introduction to the Graal IR: basic properties, instructions, and optimization phases
  • Speculative optimizations: first-class support for optimistic optimizations and deoptimization
  • Graal 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 with Graal
  • Using Graal for static analysis
  • Custom compilations with Graal: integration of the compiler with an application or library
  • Graal 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 absract

Truffle Papers







  • 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.


  • 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.

Graal Papers