How GraalVM Executes Languages

Turning the JVM into a Polyglot VM with Graal with Chris Seaton
This video shows the techniques we use to execute languages such as Ruby with high performance in GraalVM. It demonstrates an example of mixing JavaScript and Ruby within one program and how GraalVM can execute the result with zero overheads when crossing language boundaries.

Polyglot Overview and Demo

One VM to Rule Them All by Thomas Wuerthinger
An overview presentation of GraalVM including a demonstration of polyglot capabilities and the abilities to improve Java performance and footprint.

Polyglot Native

Polyglot Native: Java, Scala, Kotlin, and JVM languages with Christian Wimmer
GraalVM can create native images for JVM-based applications, even mixing different languages like Java, Scala, or Kotlin in a single image. This presentation gives an overview of how image generation in GraalVM work and demonstrates how this can be used for obtaining low footprint and fast startup for JVM-based languages.

GraalVM in the Oracle Database

Oracle Database Multilingual Engine JavaScript in the Database by D. McGhan and M. Brantner
The Oracle Database Multilingual Engine enables execution of JavaScript code via GraalVM. This video gives a demonstration of how Node.js modules can be used in the context of database queries and stored procedures.

Theory How GraalVM Executes Languages

Practical Partial Evaluation for High-Performance Dynamic Language Runtimes by Thomas Wuerthinger
This video gives a deep dive into the theory behind GraalVM. It summarizes the research paper Practical Partial Evaluation for High-performance Dynamic Language Runtimes about how high-perforamnce machine code is derived from interpreter definitions. This approach allows GraalVM minimize the effort for each individual language and keeps the core of GraalVM completely language-agnostic.

How to Build Your Own Language Implementation with GraalVM

One VM to Rule Them All, One VM to Bind Them by Christian Wimmer
GraalVM provides a language implementation framework called Truffle. 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. There have already been a wide variety of languages implemented with Truffle including JavaScript, Ruby, R, Python 3, LLVM-based languages, and Smalltalk. Video and Slides are available.

GraalVM Compiler Tutorial

The GraalVM compiler ensures that all our languages run at full speed. It is a dynamic compiler for Java written in Java with a clean API that separates the compiler from the VM.

This tutorial is for compiler engineers who want to learn more about GraalVM and, due to its volume, recorded in two parts. It introduces the GraalVM intermediate representation and its basic properties, instructions, and optimization phases. The tutorial also delves into first-class support for speculative optimizations and deoptimization, snippets (expressing high-level semantics in low-level Java code), and intrinsics (using all hardware instructions with Graal). Recordings:
Part 1
Part 2