(2025-04-15)
This is the April 2025 Oracle Critical Patch Update (CPU) for Oracle GraalVM for JDK 24. This release contains fixes to security vulnerabilities announced in the April 2025 Oracle Critical Patch Update Advisory. It includes security fixes released as part of that CPU, some noteworthy bug fixes, listed below, and platform updates.
jdk.graal.compiler
.rethrowExceptions
to creating jump targets.LibGraalCollectionPolicy
.AMD64ArrayIndexOfOp
: Fixed a short jump across unknown alignment.EnterpriseReadElimination
: Fixed handling of ObjectClone
.MonitorEnterWaitOOME
virtual thread test in JDK.acquireOnOOME
.AMD64ArrayIndexOfOp
: Fixed a short jump across unknown alignment.EnterpriseReadElimination
: Fixed handling of ObjectClone
.bom-ref
field is kept for all SBOM components.ImportMetaNode
.WasmInstance
is out of scope.CONSTRAINED
sandbox policy for the js.webassembly
option.js.text-encoding
stable and allowed in SandboxPolicy.CONSTRAINED
.ClassCastException
in super property access.WasmFunctionInstance
InteropLibrary.CONSTRAINED
sandbox policy for the js.webassembly
option.AMD64CodepointIndexToByteIndexOp
.TruffleSafepoint.poll(...)
must not fail if performed on unrelated threads while thread local actions are performed on a different thread.(2025-03-18)
-XX:JVMCINativeLibraryThreadFraction=0.66
). This benefits program warmup but could increase the maximum RSS. Setting -XX:JVMCINativeLibraryThreadFraction
to a smaller value will result in smaller maximum RSS but potentially longer warmup. (See JDK-8337493.)graal.
prefix. This warning will be upgraded to an error in GraalVM in JDK 26 or later.-O3
option to Native Image. This feature is only available in Oracle GraalVM. Learn more in the documentation.-H:+TrackPrimitiveValues
and -H:+UsePredicates
. This enhancement is the result of a research collaboration. Find the paper here to read more.-H:PremainClasses
option. At runtime, provide the premain runtime options along with the main class arguments in the format -XXpremain:<class>:<options>
. (See #8988.)--add-modules jdk.incubator.vector
and -H:+VectorAPISupport
options. (See #10285.) Improvements include a greater number of optimized Vector API operations. The following operations are now efficiently compiled to SIMD code, where supported by the target hardware:
--enable-sbom=class-level,export
option. This information can be useful for advanced vulnerability scanning and better understanding of the image contents.Read more in the documentation.
serializable
flag for reflection entries.-H:+GenerateEmbeddedResourcesFile
option.GetStringUTFLengthAsLong
in JNI. (See JDK-8328877.)-XX:MissingRegistrationReportingMode=Warn
can now be set with -XX:MissingRegistrationWarnContextLines=
and its default length is now 8.ActiveProcessorCount
is now required to be set during isolate or VM creation.ForkJoinPool.commonPool()
builder method to consistently respect the value set by NativeImageOptions.NumberOfThreads
.DuringSetupAccess.registerObjectReachabilityHandler
to allow registering a callback that is executed when an object of a specified type is marked as reachable during heap scanning.Native Image now targets armv8.1-a
by default on AArch64. Pass -march=compatibility
at build time for best compatibility or -march=native
for best performance if the native executable is deployed on the same machine or a machine with the same CPU features. To list all available machine types, use -march=list
.
Added support for Java module system-based service loading. For example, defining the following in a module-info.java file:
module Foo { provides MyService with org.example.MyServiceImpl; }
jcmd
on Linux and macOS. Use the --enable-monitoring=jcmd
option to build a native image with jcmd
enabled. See the documentation for more information.customTargetConstructorClass
field from the serialization JSON metadata. All possible constructors are now registered by default when registering a type for serialization. RuntimeSerialization.registerWithTargetConstructorClass
is now deprecated.graal.
prefix. This warning will be upgraded to an error in GraalVM in JDK 26 or later.java
executable in order to avoid warnings from being printed by the JDK. For usages of the module-path, pass the --enable-native-access=org.graalvm.truffle
option, and for class-path usages, pass the --enable-native-access=ALL-UNNAMED
option to resolve the new warning. Note that Truffle automatically forwards the native access capability to all loaded languages and tools, therefore no further configuration is required. If the native access is denied by the user with --illegal-native-access=deny
, then loading the optimizing runtime will fail and the fallback runtime will be used. More information can be found in the integrity-by-default JEP 472.Context
and Engine
is now automatically closed when no longer strongly referenced. A reachable Value
or PolyglotException
will keep the associated Context
reachable. Additionally, the Context
remains reachable when explicitly entered or if there is an active polyglot thread within it. The Engine
remains reachable when there is a strongly reachable Language
, Instrument
, or Context
instance. However, it is still recommended not to rely on garbage collection for closing. Instead, use the try-with-resources pattern for explicit context and engine management. For more information, refer to the Automatic Close on GC documentation.Value#as(byte[].class)
to copy the contents of a guest language byte buffer (Value#hasBufferElements())
to a new byte array. The new functionality has precedence over accessing the guest object as array (Value#hasArrayElements())
if both ways are available.Value.fromByteBasedString(...)
and Value.fromNativeString(...)
. Value.StringEncoding
must be provided.Find a complete list of updates in the changelog.
GraalJS--js.ecmascript-version=staging
).--js.ecmascript-version=staging
).--js.ecmascript-version=staging
).--js.ecmascript-version=staging
).--js.ecmascript-version=staging
).--js.ecmascript-version=staging
).--js.source-phase-imports
.TextDecoder
and TextEncoder
APIs of the WHATWG Encoding Standard. They are available behind the experimental option --js.text-encoding
.js.load
, js.print
, js.graal-builtin
, and js.locale
stable and allowed in the SandboxPolicy.UNTRUSTED
mode..wasm
modules to be loaded via import
statements. The optionjs.webassembly
is now stable.Find a complete list of updates in the project changelog.
GraalPy New Featurespython.IsolateNativeModules
option to allow loading native extensions multiple times in different contexts. See the documentation for more information.list
, foreign dictionaries from dict
, foreign strings from str
, foreign iterators from iterator
, foreign exceptions from BaseException
, foreign numbers from polyglot.ForeignNumber
, foreign booleans from polyglot.ForeignBoolean
, and foreign null values from NoneType
. This means all Python methods of these types are available on the corresponding foreign objects, which behave as close as possible as if they were Python objects. When calling a method on a foreign object in Python code, Python methods are now prioritized over foreign members. Also added polyglot.register_interop_type
and @polyglot.interop_type
to define custom Python methods for a given foreign class ot type. See the documentation for more information.KeywordArguments
and PositionalArguments
in the GraalPy Embedding library (org.graalvm.python:python-embedding
), to support directly passing keyword and positional arguments from Java to Python.org.graalvm.python.embedding.util
package and added new equivalents to org.graalvm.python.embedding
.+H:IncludeLanguageResources
and +H:CopyLanguageResources
. By default, the whole Python home is embedded into the native executable. In the case of JVM deployment, the language home is embedded in the GraalPy artifacts at Maven Central.Find a complete list of updates in the project changelog.
GraalWasmimport
statements. GraalJS now supports WebAssembly/ES module integration. Read more here.--wasm.RelaxedSIMD
.--wasm.AsyncParsingBinarySize
and --wasm.AsyncParsingStackSize
options. These options no longer have any effect and will be removed in a future release.Find a complete list of updates in the project changelog.
EspressoPolyglot.cast()
now applies custom type converters and interface type mappings, same as Polyglot.castWithGenerics()
.<ProcessReferences>
builtin no longer hangs when multi-threading is disabled.Find a complete list of updates in the project changelog.
Truffle Language Implementation FrameworkTruffleLanguage.Env.getHostLanguage()
method returning the host language info. This allows languages to lookup the top scope of the host language using Env.getScopeInternal(LanguageInfo)
.@Bind.DefaultExpression
annotation. Default expressions allow you to omit an explicit expression when declaring a @Bind
parameter (the default expression for the parameterâs type is used).RootNode.findInstrumentableCallNode(...)
that allows resolving the instrumentation location given a call node, frame, and bytecode index. This allows to store instrumentable nodes in a side data structure for bytecode interpreters. Also the TruffleStackTraceElement.getInstrumentableLocation()
and FrameInstance.getInstrumentableCallNode()
methods were added to access the resolved locations. Tools using the Truffle instrumentation framework are encouraged to use these APIs instead for the purpose of accessing node locations.Find a complete list of updates in the Truffle changelog.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.3