Skip to main content

GraalVM 25.2.4

Release Date: July 28, 2026

GraalVM 25.2.4 has been released — the latest innovation release of Oracle's high-performance JDK with ahead-of-time Native Image compilation. This update, tagged as "GraalVM Community 25 Innovation 2 (graal 25.2.4, jdk 25.0.4)", brings several significant improvements to Native Image, GraalJS, and the Truffle framework.

Platform and Distributions

Released on July 28, 2026, GraalVM Community Edition 25.2.4 is an innovation release based on OpenJDK 25.0.4+7. Oracle GraalVM 25.2.4 is also available, based on Oracle JDK 25.0.4+7. This version is compatible with Graal Languages and other components version 25.2.4.

Native Image Improvements

Several major changes land in Native Image with this release:

  • Compressed 32-bit object references are now enabled by default, generally improving memory usage and performance. This limits the heap to 32 GB; disable compressed references with -H:-UseCompressedReferences when a larger heap is required.
  • Native Image now always uses isolates. The deprecated -H:+SpawnIsolates option remains for compatibility, but -H:-SpawnIsolates is no longer supported and reports a build-time error.
  • Removed the deprecated -H:OutlineWriteBarriers option. Use -H:WriteBarrierOutlining=<value> instead.
  • Java Vector API support is enabled by default when jdk.incubator.vector is part of the boot module layer. Use -H:-VectorAPISupport to opt out explicitly.
  • resource: URLs now preserve the source root of duplicate resource entries, letting directory resources from separate class-path roots be converted to Path values and traversed independently.
  • Added support for the jdk.Shutdown JFR event.

GraalJS Update

GraalJS has been updated to ship Node.js version 24.17.0, bringing the latest Node.js runtime improvements to GraalVM users who leverage JavaScript and Node.js workloads.

Truffle Framework Enhancements

The Truffle framework received several bytecode DSL improvements:

  • Bytecode DSL added BytecodeRootNode.interceptIncomingValue(Object) and BytecodeRootNode.interceptOutgoingValue(Object) for converting values exchanged with tag instrumentation.
  • Bytecode DSL added multi-operand support for @Yield operations.
  • Bytecode DSL added @Return for user-defined return operations that customize the value returned from a bytecode root node.
  • Added HostCompilerDirectives.BytecodeInterpreterHandlerConfig#secondarySwitch() to prevent handler outlining when a secondary bytecode interpreter switch is compiled separately.

Upgrade Notes

GraalVM 25.2.4 represents the second innovation release of 2025. If you're upgrading from 25.1.x, note that isolates are now mandatory in Native Image, and the deprecated -H:OutlineWriteBarriers option has been fully removed. The team recommends reviewing the migration guide before upgrading production workloads.

GraalVM 25.2.4 is available now for download from the official GraalVM website. Check the release notes for the full list of changes and fixes.

What is New?

By continuing to use the site, you agree to the use of cookies.