Skip to content

Latest commit

 

History

History
466 lines (338 loc) · 34.1 KB

Publications.md

File metadata and controls

466 lines (338 loc) · 34.1 KB

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

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

2019

2018

2016

2015

2014

2013

2012