News

GraalVM v.19.1 Released

The GraalVM team at Oracle Labs announced the latest release of the GraalVM (version 19.1) last week. Version 19.0 was release in May, and though this is just a point release, it comes with some significant fixes and updates. (The release notes are available here.)

The core download contains a Java SE 8 compliant JVM (1.8.0_212), a Node.js implementation (v10.15.2), a JavaScript implementation (ECMAScript 2019), and an LLVM bitcode runtime (6.0.0).

This release includes two changes that should be of interest to Java developers:

  • Improved speed of just-in-time (JIT) compilation, which significantly improves the performance on medium length workloads.
  • Applied profile-guided optimization (PGO) when building the ahead-of-time (AOT) image of the compiler. This enables more aggressive optimization of the compiler itself providing better compilation throughput.

For JavaScript developers, the GraalVM team:

  • Added an experimental option js.locale to set the default locale for locale-sensitive operations.
  • Made it possible to make evaluated sources internal using the sourceURLdirective by prefixing the URL with internal: for example, //# sourceURL=internal:myname.js.
  • Enabled code sharing across threads using ContextPolicy.SHARED.

For the GraalVM Ruby implementation:

  • Interactive sources (like the GraalVM polyglot shell) now all share the same binding (#1695).
  • Hash code calculation has been improved to reduce hash collisions for Hash and other cases.
  • eval(code, binding) for a fixed code containing blocks is now much faster. This improves the performance of rendering ERB templates containing loops.
  • rb_str_cat is faster, thanks to the C string now being concatenated without first being converted to a Ruby string or having its encoding checked.

And for the Python jocks:

  • Updated Python standard library files from 3.7.0 to 3.7.3.
  • Improved performance of exceptions that do not escape.
  • Fixed caching of core sources in a native image with a preinitialized context for pre-built images and libpolyglot fast startup.
  • Implemented support for pwd.getpwuid, os.exec, os.execv, and os.execl modules.

The GraalVM is an extension of the JVM designed to run applications written in a range of languages, including JavaScript, Python, Ruby, and R; JVM-based languages, such as Java, Scala, and Kotlin; and LLVM-based languages, such as C and C++. Graal is the Java-based JIT compiler (JEP 317) that is the basis of the experimental AOT compiler introduced in JDK 9.

Thomas Wuerthinger, senior research director at Oracle Labs, and GraalVM project lead, announced this release in a post on Medium: "One of the challenges of JIT compilation systems is the need to make the compilation step as fast as possible," he wrote. "... We, therefore, made several improvements for increased just-in-time compilation speed. Specifically, we are now using profile-guided optimizations when creating the native image for our compiler itself. Also, we improved heuristics of our optimizations to make them less computationally intensive. The result is almost twice the compilation speed ..."

The first version of the GraalVM was released in April 2018. Two versions of the GraalVM are currently available: a free Community Edition and a fee-based Enterprise Edition. The free version was built from the GraalVM sources available on GitHub, and it's available for development and production use.

About the Author

John has been covering the high-tech beat from Silicon Valley and the San Francisco Bay Area for nearly two decades. He serves as Editor-at-Large for Application Development Trends (www.ADTMag.com) and contributes regularly to Redmond Magazine, The Technology Horizons in Education Journal, and Campus Technology. He is the author of more than a dozen books, including The Everything Guide to Social Media; The Everything Computer Book; Blobitecture: Waveform Architecture and Digital Design; John Chambers and the Cisco Way; and Diablo: The Official Strategy Guide.

Featured

AppTrends

Sign up for our newsletter.

Terms and Privacy Policy consent

I agree to this site's Privacy Policy.

Upcoming Events