GraalVM 19.3 brings support for JDK 11
GraalVM version 19.3 is here at last. It’s the first LTS version and comes as a major feature release as well as being a recommended upgrade. This version will be supported for the next year until the next LTS version, 20.3, is released, and the cycle will repeat. I will talk more about the version roadmap below, but first let’s take a look at the biggest changes in version 19.3, starting of course with support for JDK 11!
JDK 11 support
The jump from JDK 8 to JDK 11 is one that many developers lament on a daily basis as they continue to work with Java 8. As such, JDK 11 support is a pretty big deal for GraalVM, not just because it represents the hard work done to get up to 11, but also because the sailing should be comparatively smooth from now on as the next LTS version of Java, JDK 17, slowly but surely approaches.
Depending on which edition you use, there is a slight difference in the JDK; GraalVM Enterprise Edition supports Oracle’s Java 11.0.5, whereas GraalVM Community Edition supports OpenJDK 11.0.5. Both are available to download on the GraalVM website.
GraalVM on JDK 11 supports all JVM languages (Java, Scala, etc.) as well as the other languages already supported by GraalVM on JDK 8. The path to the languages’ location is different with JDK 11, however, because there is no
$GRAALVM_HOME/jre/ directory any longer. This means that where previously languages were located in
Promise.allSettled and Nullish coalescing have been implemented and are available in ECMAScript 2020 mode. To accommodate this, some extensions have been disabled by default and some of those depending on the launcher. More details can be found in the changelog.
LLVM tools such as clang no longer need to be installed to build the GraalVM LLVM runtime; the LLVM toolchain bundled with GraalVM is used and is no longer an experimental feature. They have also added preliminary support for parsing bitcode created by LLVM 9, intrinsic for pthread thread management functions and support for pthreads LLVM bitcode. For more information, consult the changelog.
The Python standard library included is now 3.7.4 and support for NumPy 1.16.4 and Pandas0.25.0 has been implemented. Jython compatibility has also been added and can be enabled with
--python.EmulateJython. For a full rundown, check out the changelog.
There are plenty more details and changes; to get the full picture, take a look at the GraalVM 19.3 release notes.
Roadmap for the next two years of GraalVM
You might already be aware of GraalVM’s major release cadence – every three months, always the closest Tuesday to the 17th of the months of February, May, August and November. The X.3 versions will always be the long-term support versions, meaning that November will always be when the next LTS version lands.
How long is long term? Right now, that looks like a period of 11 months or about a year with 4 releases spread over the year. For 19.3 this means that the LTS patches are scheduled for mid-January, April, July and October 2020. After that, version 20.3 will be ready to land in November 2020 and so the cycle will continue.
There’s an interactive roadmap on the GraalVM site for the curious.