- GraalVM Release Calendar
- Vulnerability Advisories
- 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.3.4.1
(2026-08-25)
- Platform and Distributions
- Graal Compiler
- Native Image
- Polyglot Runtime
- GraalJS
- GraalPy
- GraalWasm
- Truffle Framework
Platform and Distributions
- Released GraalVM Community Edition 25.3.4.1, an innovation release, based on OpenJDK 25.0.4.1. See OpenJDK 25 Updates.
- Released Oracle GraalVM 25.3.4.1, an innovation release, based on Oracle JDK 25.0.4.1. See Java SE 25 Release Notes.
- Version compatibility:
- GraalVM 25.3.4.1 is compatible with Graal Languages and other components version 25.3.4.1.
Graal Compiler
- Added priority inlining to GraalVM and made it the default inlining algorithm. This inlining algorithm does extensive analysis of the call graph when making inlining decisions (see PriorityInliningPhase for details). Also added
MethodDuplicationPhase, which duplicates selected control-flow paths within a method to expose further optimization opportunities. You can restore the previous inliner with-Djdk.graal.UsePriorityInlining=false. - Added loop-vectorization optimizations to GraalVM for eligible array-arithmetic loops. It transforms computations into SIMD instructions that process multiple values in parallel and can improve JIT performance in proportion to the target CPU’s vector-register length. This optimization is enabled by default; disable it with
-Djdk.graal.VectorizeLoops=false.
Native Image
- Added
SubstratePriorityInliningPhaseto use the new priority inliner from the compiler suite. - Added fast inline execution paths and optimized spinning for
synchronized, improving locking performance. Disable the fast paths with-H:-UseMonitorFastPathwhen image size is a concern. - Added
-H:CFIcontrol-flow integrity options. On AMD64, this protects indirect branches with software checks; on AArch64, it uses pointer authentication to protect return addresses. - Improved runtime bytecode interpreter performance through tail-call threading among outlined bytecode handlers.
- Layer digest generation now handles large layer files. Layers created before this change might not be compatible with layers created afterward.
- With
-H:-LegacyJavaOptionMode, VM options must appear before the first--; arguments after it are passed unchanged to the application main method.
Polyglot Runtime
- Isolated polyglot contexts now warn when host access is enabled without host method scoping. Disable the warning with
engine.WarnMethodScoping=false.
GraalJS
- Implemented the Iterator Includes proposal. It is available in ECMAScript staging mode (
--js.ecmascript-version=staging). - Implemented the Iterator Join proposal. It is available in ECMAScript staging mode (
--js.ecmascript-version=staging). - Implemented the Iterator Chunking proposal. It is available in ECMAScript staging mode (
--js.ecmascript-version=staging). - Updated Node.js to version 24.18.1.
GraalPy
- Updated the Python standard library to version 3.13.14 and implemented new Python 3.13 features.
GraalWasm
- Added support for the branch-hinting custom section, enabling optimized code generation from
ifandbr_iflikelihood hints. - Added the
table64portion of the Memory64 proposal. Enable it with--wasm.Memory64. - Added the Wide Arithmetic proposal, including
i64.add128,i64.sub128,i64.mul_wide_s, andi64.mul_wide_u. This experimental feature is disabled by default; enable it with--wasm.WideArithmetic=true.
Truffle Framework
- Improved descriptive
toString()output for Polyglot API objects and builders. - Added
StaticShape.Builder.safetyChecks(boolean)to configure safety checks for individual static shapes.engine.ForceStaticObjectSafetyChecksenables checks for all static shapes, overriding the builder setting. - Setting
sandbox.MaxCPUTimeto a zero duration now disables the CPU-time limit. - Bytecode DSL
SourceandSourceSectionare now metadata-only operations that do not affect the operation-tree shape. The previous sequencing semantics were unsound and could produce inconsistent behavior between reparses. - Bytecode DSL source-section tables no longer emit entries for empty bytecode ranges and combine adjacent ranges only when they come from the same
SourceSectionoperation.