- GraalVM Release Calendar
- Vulnerability Advisories
- GraalVM 25.4
- GraalVM 25.3
- GraalVM 25.2
- GraalVM 25.1
- GraalVM 25
- GraalVM for JDK 24
- GraalVM for JDK 23
- GraalVM for JDK 22
- GraalVM for JDK 21
- GraalVM for JDK 20
- GraalVM for JDK 17
- GraalVM 22.3.x
- GraalVM 22.2.x
- GraalVM 22.1.x
- GraalVM 22.0.x
- GraalVM 21.3.x
- GraalVM 21.2.x
- GraalVM 21.1.x
- GraalVM 21.0.x
- GraalVM 20.3.x
- GraalVM 20.2.x
- GraalVM 20.1.x
- GraalVM 20.0.x
- GraalVM 19.3.x
GraalVM 25.4.4.1.1
(2026-09-22)
- Platform and Distributions
- Graal Compiler
- Native Image
- Polyglot Runtime
- GraalJS
- GraalPy
- GraalWasm
- Truffle Framework
Platform and Distributions
- Released GraalVM Community Edition 25.4.4.1.1, an innovation release, based on OpenJDK 25.0.4.1. See OpenJDK 25 Updates.
- Released Oracle GraalVM 25.4.4.1.1, an innovation release, based on Oracle JDK 25.0.4.1. See Java SE 25 Release Notes.
- Version compatibility:
- GraalVM 25.4.4.1.1 is compatible with Graal Languages and other components version 25.4.4.1.1.
Graal Compiler
- Added
PullThroughPhiPhaseandDuplicationPhaseto the compiler configuration. These optimizations are enabled by default and can be disabled with-Djdk.graal.OptPullThroughPhi=falseand-Djdk.graal.OptDuplication=false, respectively. - Extended read elimination to handle indexed array accesses with nonconstant indices, reads from newly allocated arrays whose elements contain default values, and array clone operations. Read elimination can now also run after reads are fixed in the low tier.
- Extended
OptimizeDivPhasewith magic-number optimizations for unsigned integer division and remainder operations by constant values.
Native Image
- When native executables are built with
-H:+StrictRuntimeJavaOptions, runtime assertion options such as-ea,-da,-esa, and-dsaconfigure the assertion status of runtime-loaded classes and runtime-initialized image classes. They do not affect build-time-initialized classes whose assertion status is only configured bynative-image -ea .... - Defaulted to optional identity hash code fields with Serial GC. Few objects need one, and this optimization adds them during garbage collection. It can be disabled with
-H:-OptionalIdentityHashCodes. - Added outlining for
StringBuilderandStringBufferappend sequences andinvokedynamicstring concatenations. This reduces the binary size of native executables. - Added optimized stack overflow checks in method prologues and safepoint checks in method epilogues. Slow paths use tail calls to avoid setting up an additional frame.
Platform Updates
- On Linux AMD64, Native Image now records the selected x86-64 ISA level in
.note.gnu.propertyfor-marchvalues requiring x86-64-v2 or newer, so tools such asreadelfreport the requirement correctly.
Polyglot Runtime
- Added
HostAccess.Builder#allowPublicAccess(Predicate<Member>)to selectively expose public host members without explicitly naming them upfront. - Added
Feature.DuringSetupAccess#registerBuildTimeBootstrapIndyandFeature.DuringSetupAccess#registerBuildTimeBootstrapCondy, allowing frameworks to register bootstrap methods forinvokedynamiccall sites andCONSTANT_Dynamicentries for execution at image build time.
GraalJS
- Implemented the
Await Dictionaryproposal. It is available in ECMAScript staging mode (--js.ecmascript-version=staging).
GraalPy
- Removed BouncyCastle entirely. BouncyCastle was only needed for legacy RSA, DSA, and EC private keys versions 0 and 1. To support these from Python embeddings, BouncyCastle must now be explicitly enabled by adding the
org.graalvm.python:python-bouncycastle-supportMaven artifact and addingbcprov-jdk18on,bcpkix-jdk18on, andbcutil-jdk18ondependencies.
GraalWasm
- Implemented the Tail Call proposal. This feature is enabled by default and can be disabled with the experimental option
--wasm.TailCalls=false. The feature comes with an optimization that transforms direct recursive calls (functions calling themselves) into loops. This optimization is enabled by default and can be disabled with the experimental option--wasm.TailCallLoops=false.
Truffle Framework
- Added host interoperability for
java.time.OffsetDateTimeandjava.time.OffsetTime. - Guest-language inlining now uses Graal IR call-site frequencies instead of runtime direct-call counters. Language implementations should ensure that injected branch probabilities are accurate because inaccurate probabilities are likely to cause peak-performance regressions.
- Added
StackValues to the Bytecode DSL for temporary stack operands throughBindStackValue,LoadStackValue, andStoreStackValue. - Added compressed source information to the Bytecode DSL. Compression is enabled by default and reduces source-table memory at the cost of slower decoding when source information is accessed.
- Removed APIs and methods deprecated in earlier releases, including Truffle Object APIs, Truffle Strings methods,
InteropException.initCause(Throwable), debugger APIs, instrumentation APIs, core Truffle APIs, and profile factory methods.