GraalVM 25.2.4

(2026-07-28)

Platform and Distributions

Native Image

  • 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. This lets directory resources from separate class-path roots be converted to Path values and traversed independently.
  • Added support for the jdk.Shutdown JFR event.

GraalJS

  • Updated Node.js to version 24.17.0.

Truffle Framework

  • 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.

Find a complete list of updates in the Truffle Changelog.

Connect with us