Eliminate native access and memory warnings#174
Merged
headius merged 2 commits intojnr:masterfrom Oct 24, 2025
Merged
Conversation
This avoids warnings when using Unsafe methods to do native memory access. These operations will instead use JNI to access native memory, and eventually Java's FFM APIs for better performance. Fixes jnr#165 by avoiding Unsafe when on JDK 23 or higher. See jruby/jruby#8696 for some prior discussion about these warnings.
Member
Author
|
Additional information about enabling native access... There is a module method here that can do it, but only if the caller has native access already enabled: https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/lang/ModuleLayer.Controller.html#enableNativeAccess(java.lang.Module) There's a manifest entry that can be used to enable native access to all unnamed modules (all classpath code) but it is only honored from the main jar (e.g. JRuby's main jar could include this for running directly). |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR will address warnings produced when we attempt to access native memory using Unsafe or load native libraries.
The Unsafe accesses should eventually be replaced by Panama FFM calls, but for now we just avoid using Unsafe at all when we are running on JDK 23 or higher (the level at which they started to warn more noisily).
The native library load obviously can't be eliminated, but we will modify the jar file to request native access when run as an unnamed module, and when run as a module (either as part of a jar as in JRuby or as a standalone module) the specified command-line flag will probably remain necessary.