A small library built as a Quilt mod which gives modders access to Unsafe
(both the sun one and the jdk internal one, assuming it's exported at compile time) and easily supports runtime module exporting and trusted MethodHandles.Lookup
calls.
Current features
Unsafe.sun()
for asun.misc.Unsafe
instanceUnsafe.jdk()
for ajdk.internal.misc.Unsafe
instance (needs export — see below)Unsafe.lookup()
for the trustedMethodHandles.Lookup
instance- Field getting and setting with force
- Enum widening
- Function accessor for allowing runtime use of JDK's internal ASM copy
- Shortcut methods for getting
MethodHandle
instances through the trusted lookup - Runtime module exporting / opening
- Forceful SecurityManager setting
Exporting modules
At runtime, call ModuleWidener.exportModule
with either a class in the requested package, a class in the module and a string of the package, or the module instance and a string of the package.
At compile time, use javac
compile arguments:
tasks.withType(JavaCompile).configureEach {
it.options.compilerArgs << "addExports" << "TheModuleGoesHere/ThePackageToExport=ALL-UNNAMED"
// This cannot be used with the release field. Instead use source / target compatibility fields in the java object.
}
External resources
Project members
sschr15
Owner
Technical information
License
MPL-2.0
Client side
optional
Server side
optional
Project ID