Release Notes

Oracle GraalVM Enterprise Edition 19.2.1


This is a Critical Patch Update (CPU) for Oracle GraalVM Enterprise Edition following a regular Oracle Java CPU schedule. The update is to address security vulnerabilities announced in the October 2019 Oracle Critical Patch Update Advisory. The 19.2.1 version is a full distribution and it is recommended to upgrade to it from older GraalVM versions.

Oracle GraalVM Enterprise Edition 19.2.1 includes all the Java security fixes released as part of that CPU and mentioned in the Java SE 8 Release notes. It also includes the following:

Listed below are critical bug fixes that went into this version:

Oracle Cloud Infrastructure customers can install GraalVM Enterprise Critical Patch Update using yum – a package-management utility for the Linux operating systems. For more details, proceed to GraalVM on OCI page. 

Oracle GraalVM Enterprise Edition


This is a high severity update for GraalVM to address the following issues:

Oracle GraalVM Enterprise Edition 19.2.0


This is a GraalVM feature release, Oracle recommends upgrading to it from the 19.1.x or older releases.

Native Image

The process of collecting data for profile-guided optimizations (PGO) for GraalVM Enterprise native images was simplified. PGO allows to optimize performance of native images by analyzing collected profiles during the image generation process. Since 19.2.0 you can collect data for PGO while running your application in a just-in-time (JIT) compiled mode:

$ /graal-ee-19.2.0/bin/java -Dgraal.PGOInstrument=myclass.iprof MyClass
$ /graal-ee-19.2.0/bin/native-image --pgo=myclass.iprof MyClass
$ ./myclass


There has been a throughput improvement for Native Image in GraalVM Enterprise when no profiles are available. Running the Micronaut GraalVM example shows spending ~10% less CPU time and achieving a ~10% higher throughput of requests per CPU second in 19.2.0.

A common usability problem was solved when a class marked for initialization at runtime gets inadvertently initialized at build time. The flag -H:+TraceClassInitialization was introduced to help tracing what classes got initialized at runtime.


More changes are listed in the JavaScript component changelog.

LLVM Interpreter

A preliminary support for compiling native programs to bitcode using the LLVM toolchain was introduced. The LLVM toolchain is a set of tools and APIs for compiling native projects, such as C and C++, to bitcode that can be executed with the GraalVM LLVM runtime. It is aimed to simplify ahead-of-time compilation for users and language implementers who want to use the GraalVM LLVM runtime. To do so, the launchers that invoke the C/C++ compiler with special flags are provided to produce results that can be executed by the GraalVM LLVM runtime. For more details, please consult the LLVM reference documentation.

The toolchain is an experimental feature in this release. A complete list of changes to GraalVM LLVM runtime can be found in the changelog.


A comprehensive list of changes to Ruby language component is available on GitHub. Major changes include:


The changelog is available on GitHub.


The GraalVM Python implementation is still experimental and we are working towards improving completeness.

More details are available in the project changelog on GitHub.

API Changes for GraalVM Integrators (SDK + Truffle)

The ability to configure custom polyglot access with PolyglotAccess.newBuilder() has been implemented. It allows to configure fine-grained access control for polyglot bindings and between polyglot languages. For example, given a TruffleObject as a value, there is a need to determine language and type of that object. This feature is significant for GraalVM execution inside Oracle RDBMS.

GraalVM 19.1.1 release also added support for date, time, timezone, duration values in polyglot APIs, and introduced the Context.Builder.timeZone(ZoneId) class to configure the default timezone of polyglot contexts.

The major GraalVM SDK and Truffle APIs changes between the versions are summarized in:


A preview version of Java Flight Recorder (JFR) support has been released as a plugin for the VisualVM tool bundled with GraalVM 19.1.1. The plugin reads all JFR snapshots created from Java 7 and newer and presents the data in typical VisualVM views familiar for its users.

To install the JFR support, download GraalVM 19.2.0, unzip it and run /bin/jvisualvm to start VisualVM. Use `Tools | Plugins | Available Plugins` to list all available plugins and install the VisualVM-JFR and VisualVM-JFR-Generic modules. The JFR snapshots can be opened using either the "File | Load" action or by double-clicking the JFR Snapshots node and adding the snapshot into the JFR repository permanently. Please follow the documentation of your Java installation how to create JFR snapshots.

JFR support is currently an experimental feature. Some advanced features like analyzing JVM internals, showing event stack traces or support for creating JFR snapshots from live processes are not available in the preview version and will be addressed incrementally in the following releases.

GraalVM Updater Utility

The issue where GraalVM Enterprise would by default download the GraalVM Community components from GitHub was fixed. For a GraalVM Community user – nothing changes, you can still install the components as before, and the gu will locate the necessary jar files on GitHub and correctly install them:

gu install native-image ruby R python

For GraalVM Enterprise, install R and llvm-toolchain components from GitHub, for example:

gu install R

The other components are available from the OTN page, and can be installed from a manually downloaded file, for example to install native-image support run:

gu install -L native-image-installable-svm-svmee-darwin-amd64-19.2.0.jar

Version Calendar

You can now refer to GraalVM version calendar to learn more about the GraalVM release model and prepare for upcoming releases.

Oracle GraalVM Enterprise Edition 19.1.1


This is a Critical Patch Update (CPU) release for the 19.1.0 GraalVM release. Oracle recommends upgrading to it from the 19.1.x and older releases.

This CPU release has been induced by the update to OracleJDK from 8u212 to 8u221 as the base JDK of GraalVM Enterprise. More details can be found here and here.

This CPU release includes fixes for the following CVEs:

For more information please see the Oracle July 2019 Security Advisory.

Critical fixes to GraalVM Native Image listed below went also into this version:

Oracle GraalVM Enterprise Edition 19.1.0


This is a feature release. It is recommend upgrading to it from the 19.0.x releases.


Native Image

We fixed many issues that were reported on GitHub. You can browse the full list here.


public static void main(String[] args) {
        try (Engine engine = Engine.create()) {
            Source source = Source.create("js", "21 + 21");
            try (
              Context context1 = Context.newBuilder().engine(engine).build();
              Context context2 = Context.newBuilder().engine(engine).build()) {

LLVM Interpreter


The GraalVM Ruby implementation in this version targets performance and compatibility improvements, new features implementations and multiple bug fixes. The most notable include:

There is Ruby component changelog available.



For more information, proceed to the changelog.

Oracle GraalVM Enterprise Edition 19.0.2


This is a bug fix release for 19.0.0.


Native Image

LLVM Interpreter

Oracle GraalVM Enterprise Edition 19.0.0


We are pleased to announce the first public general availability release of Oracle GraalVM Enterprise Edition 19.

GraalVM Enterprise is built on the global standard for enterprise-class application development, Java SE. GraalVM Enterprise is a multilingual virtual machine and delivers even higher efficiency, better isolation and greater agility for enterprises in cloud and hybrid environments.

The core features of GraalVM Enterprise are:

Additional features which can be added to the GraalVM Enterprise installation include:

Base GraalVM Enterprise 19 distribution includes the following runtimes:

Learn how to begin using GraalVM Enterprise in the Getting Started section of the documentation.