Here you can find all publications related to GraalVM. If you are doing research related to GraalVM and want us to include your publication, please send us a pull request to add your paper.

Selected Papers

We recommend the following papers as a starting point for learning about Graal:

Language implementations on GraalVM are based on the Truffle framework. User applications are transformed to an abstract syntax tree, which is then partially evaluated. If you want to learn more about how to build Truffle languages, how partial evaluation works, and how the Truffle framework allows you to guide the Graal compiler, we recommend reading:

Thomas Würthinger, Christian Wimmer, Christian Humer, Andreas Wöß, Lukas Stadler, Chris Seaton, Gilles Duboscq, Doug Simon, Matthias Grimmer Practical partial evaluation for high-performance dynamic language runtimes In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2017)

Truffle language implementations abstract the differences between programming languages, which enables efficient cross-language interoperability. We recommend reading:

Matthias Grimmer, Chris Seaton, Roland Schatz, Würthinger, Hanspeter Mössenböck High-Performance Cross-Language Interoperability in a Multi-Language Runtime In Proceedings of the 11th Dynamic Language Symposium (DLS).

The Graal compiler ensures that the languages on top of the GraalVM run at full speed. The core of the compiler is its intermediate representation. We recommend reading:

Gilles Duboscq, Thomas Würthinger, Lukas Stadler, Christian Wimmer, Doug Simon, Hanspeter Mössenböck An intermediate representation for speculative optimizations in a dynamic compiler In Proceedings of the 7th ACM workshop on Virtual machines and intermediate languages (VMIL ‘13)

Speculative assumptions based on profiling information and deoptimizations allow Graal heavily optimize dynamically typed languages like JavaScript and ensure native speed. We recommend reading:

Gilles Duboscq, Thomas Würthinger, Hanspeter Mössenböck Speculation without regret: reducing deoptimization meta-data in the Graal compiler In Proceedings of the 2014 International Conference on Principles and Practices of Programming on the Java platform: Virtual machines, Languages, and Tools (PPPJ ‘14)

A powerful escape analysis with scalar replacement ensures that all interpreter data structures are removed when optimizing a Truffle AST. We recommend reading:

Lukas Stadler, Thomas Würthinger, Hanspeter Mössenböck Partial Escape Analysis and Scalar Replacement for Java In Proceedings of Annual IEEE/ACM International Symposium on Code Generation and Optimization (CGO ‘14)

Full List of Papers








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

  • Thomas Würthinger, Andreas Wöß, Lukas Stadler, Gilles Duboscq, Doug Simon, Christian Wimmer Self-optimizing AST interpreters Proceedings of the 8th symposium on Dynamic languages (DLS ‘12)

  • Christian Wimmer, Thomas Würthinger Truffle: a self-optimizing runtime system In Proceedings of the 3rd annual conference on Systems, programming, and applications: software for humanity (SPLASH ‘12)

  • Christian Häubl, Christian Wimmer, Hanspeter Mössenböck Evaluation of trace inlining heuristics for Java In Proceedings of the 27th Annual ACM Symposium on Applied Computing (SAC ‘12)

If you are interested in deeper collaboration with us, please send us an email.