Importing (some of) Standard.Base works from NI runner (#9866)

This commit is contained in:
Jaroslav Tulach 2024-05-17 14:42:35 +02:00 committed by GitHub
parent a5ca9f9ac2
commit 5c06535c46
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
15 changed files with 5081 additions and 642 deletions

7
.vscode/launch.json vendored
View File

@ -27,6 +27,13 @@
"command": "npm run dev",
// "env": {"NODE_OPTIONS": "--inspect"},
"cwd": "${workspaceFolder}/app/gui2"
},
{
"type": "nativeimage",
"request": "launch",
"name": "Launch Native Image",
"nativeImagePath": "${workspaceFolder}/runner",
"args": "--help"
}
]
}

103
build.sbt
View File

@ -18,6 +18,7 @@ import src.main.scala.licenses.{
import JPMSPlugin.autoImport._
import java.io.File
import java.nio.file.Paths
// ============================================================================
// === Global Configuration ===================================================
@ -283,6 +284,7 @@ lazy val enso = (project in file("."))
`syntax-definition`,
`syntax-rust-definition`,
`text-buffer`,
yaml,
pkg,
cli,
`task-progress-notifications`,
@ -693,6 +695,15 @@ lazy val `syntax-rust-definition` = project
Compile / javaSource := baseDirectory.value / "generate-java" / "java"
)
lazy val yaml = (project in file("lib/java/yaml"))
.settings(
frgaalJavaCompilerSetting,
version := "0.1",
libraryDependencies ++= Seq(
"io.circe" %% "circe-yaml" % circeYamlVersion % "provided"
)
)
lazy val pkg = (project in file("lib/scala/pkg"))
.settings(
Compile / run / mainClass := Some("org.enso.pkg.Main"),
@ -1021,6 +1032,8 @@ lazy val `project-manager` = (project in file("lib/scala/project-manager"))
Test / javaOptions ++= testLogProviderOptions
)
.settings(
NativeImage.smallJdk := None,
NativeImage.additionalCp := Seq.empty,
rebuildNativeImage := NativeImage
.buildNativeImage(
"project-manager",
@ -2248,6 +2261,9 @@ lazy val `runtime-fat-jar` =
MergeStrategy.concat
case PathList("module-info.class") =>
MergeStrategy.preferProject
// remove once https://github.com/snakeyaml/snakeyaml/pull/12 gets integrated
case PathList("org", "yaml", "snakeyaml", "introspector", xs @ _*) =>
MergeStrategy.preferProject
case PathList(xs @ _*) if xs.last.contains("module-info.class") =>
MergeStrategy.discard
case _ => MergeStrategy.first
@ -2258,6 +2274,7 @@ lazy val `runtime-fat-jar` =
.dependsOn(`runtime-instrument-repl-debugger`)
.dependsOn(`runtime-instrument-runtime-server`)
.dependsOn(`runtime-language-epb`)
.dependsOn(yaml)
.dependsOn(LocalProject("runtime"))
/* Note [Unmanaged Classpath]
@ -2313,6 +2330,9 @@ lazy val `engine-runner` = project
MergeStrategy.concat
case "reference.conf" =>
MergeStrategy.concat
// remove once https://github.com/snakeyaml/snakeyaml/pull/12 gets integrated
case PathList("org", "yaml", "snakeyaml", "introspector", xs @ _*) =>
MergeStrategy.preferProject
case PathList(xs @ _*) if xs.last.contains("module-info") =>
// runner.jar must not be a JPMS module
MergeStrategy.discard
@ -2335,6 +2355,69 @@ lazy val `engine-runner` = project
run / connectInput := true
)
.settings(
NativeImage.smallJdk := Some(buildSmallJdk.value),
NativeImage.additionalCp := {
val core = Seq(
"runtime.jar",
"runner.jar"
)
core ++ `base-polyglot-root`.listFiles("*.jar").map(_.getAbsolutePath())
},
buildSmallJdk := {
val smallJdkDirectory = (target.value / "jdk").getAbsoluteFile()
if (smallJdkDirectory.exists()) {
IO.delete(smallJdkDirectory)
}
val JS_MODULES =
"org.graalvm.nativeimage,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.base,org.graalvm.nativeimage.driver,org.graalvm.nativeimage.librarysupport,org.graalvm.nativeimage.objectfile,org.graalvm.nativeimage.pointsto,com.oracle.graal.graal_enterprise,com.oracle.svm.svm_enterprise,jdk.compiler.graal,jdk.httpserver,java.naming,java.net.http"
val DEBUG_MODULES = "jdk.jdwp.agent"
val PYTHON_MODULES = "jdk.security.auth,java.naming"
val javaHome = Option(System.getProperty("java.home")).map(Paths.get(_))
val (jlink, modules, libDirs) = javaHome match {
case None =>
throw new RuntimeException("Missing java.home variable")
case Some(jh) =>
val exec = jh.resolve("bin").resolve("jlink")
val moduleJars = List(
"lib/svm/bin/../../graalvm/svm-driver.jar",
"lib/svm/bin/../builder/native-image-base.jar",
"lib/svm/bin/../builder/objectfile.jar",
"lib/svm/bin/../builder/pointsto.jar",
"lib/svm/bin/../builder/svm-enterprise.jar",
"lib/svm/bin/../builder/svm.jar",
"lib/svm/bin/../library-support.jar"
)
val targetLibDirs = List("graalvm", "svm", "static", "truffle")
(
exec,
moduleJars.map(jar => jh.resolve(jar).toString),
targetLibDirs.map(d => jh.resolve("lib").resolve(d))
)
}
val exec =
s"$jlink --module-path ${modules.mkString(":")} --output $smallJdkDirectory --add-modules $JS_MODULES,$DEBUG_MODULES,$PYTHON_MODULES"
val exitCode = scala.sys.process.Process(exec).!
if (exitCode != 0) {
throw new RuntimeException(s"Cannot execute smalljdk.sh")
}
libDirs.foreach(libDir =>
IO.copyDirectory(
libDir.toFile,
smallJdkDirectory.toPath
.resolve("lib")
.resolve(libDir.toFile.getName)
.toFile
)
)
assert(
smallJdkDirectory.exists(),
"Directory of small JDK " + smallJdkDirectory + " is not present"
)
smallJdkDirectory
},
assembly := assembly
.dependsOn(`runtime-fat-jar` / assembly)
.value,
@ -2346,16 +2429,13 @@ lazy val `engine-runner` = project
additionalOptions = Seq(
"-Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.NoOpLog",
"-H:IncludeResources=.*Main.enso$",
// useful perf & debug switches:
// "-g",
// "-H:+DashboardAll",
// "-H:DashboardDump=runner.bgv"
// "-H:+SourceLevelDebug",
// "-H:-DeleteLocalSymbols",
"-Dnic=nic"
),
mainClass = Some("org.enso.runner.Main"),
additionalCp = Seq(
"runtime.jar",
"runner.jar"
),
initializeAtRuntime = Seq(
"org.jline.nativ.JLineLibrary",
"org.jline.terminal.impl.jna",
@ -2373,7 +2453,12 @@ lazy val `engine-runner` = project
"akka.http"
)
)
.dependsOn(NativeImage.additionalCp)
.dependsOn(NativeImage.smallJdk)
.dependsOn(assembly)
.dependsOn(
buildEngineDistribution
)
.value,
buildNativeImage := NativeImage
.incrementalNativeImageBuild(
@ -2383,6 +2468,7 @@ lazy val `engine-runner` = project
.value
)
.dependsOn(`version-output`)
.dependsOn(yaml)
.dependsOn(pkg)
.dependsOn(cli)
.dependsOn(`library-manager`)
@ -2392,6 +2478,9 @@ lazy val `engine-runner` = project
.dependsOn(`logging-service-logback` % Runtime)
.dependsOn(`polyglot-api`)
lazy val buildSmallJdk =
taskKey[File]("Build a minimal JDK used for native image generation")
lazy val launcher = project
.in(file("engine/launcher"))
.configs(Test)
@ -2406,6 +2495,8 @@ lazy val launcher = project
)
)
.settings(
NativeImage.smallJdk := None,
NativeImage.additionalCp := Seq.empty,
rebuildNativeImage := NativeImage
.buildNativeImage(
"enso",

View File

@ -115,7 +115,7 @@ Note that for convenience, you can run the launcher/engine runner via
`bin/enso`, e.g.
```bash
env JAVA_OPTS="-agentlib:native-image-agent=config-merge-dir=./engine/runner-native/src/main/resources/META-INF/native-image/org/enso/runner" ./built-distribution/enso-engine-0.0.0-dev-linux-amd64/enso-0.0.0-dev/bin/enso --run tmp.enso
env JAVA_OPTS="-agentlib:native-image-agent=config-merge-dir=./engine/runner/src/main/resources/META-INF/native-image/org/enso/runner" ./built-distribution/enso-engine-0.0.0-dev-linux-amd64/enso-0.0.0-dev/bin/enso --run tmp.enso
```
The command may need to be re-run with different arguments to ensure that all
@ -210,7 +210,7 @@ sbt> engine-runner/buildNativeImage
and execute the binary on a sample factorial test program
```bash
> runner --run engine/runner-native/src/test/resources/Factorial.enso 6
> runner --run engine/runner/src/test/resources/Factorial.enso 6
```
The task that generates the Native Image, along with all the necessary

View File

@ -149,7 +149,6 @@ final class ContextFactory {
.options(options)
.option(RuntimeOptions.ENABLE_AUTO_PARALLELISM, Boolean.toString(enableAutoParallelism))
.option(RuntimeOptions.WARNINGS_LIMIT, Integer.toString(warningsLimit))
.option("js.foreign-object-prototype", "true")
.out(out)
.in(in)
.serverTransport(
@ -181,17 +180,13 @@ final class ContextFactory {
}
if (ENGINE_HAS_JAVA) {
var javaHome = System.getProperty("java.home");
if (javaHome == null) {
javaHome = System.getenv("JAVA_HOME");
}
if (javaHome == null) {
throw new IllegalStateException("Specify JAVA_HOME environment property");
if (javaHome != null) {
builder.option("java.JavaHome", javaHome);
}
builder
.option("java.ExposeNativeJavaVM", "true")
.option("java.Polyglot", "true")
.option("java.UseBindingsLoader", "true")
.option("java.JavaHome", javaHome)
.allowCreateThread(true);
}
return new PolyglotContext(builder.build());
@ -205,6 +200,13 @@ final class ContextFactory {
static {
var modules = ModuleLayer.boot().modules().stream();
ENGINE_HAS_JAVA = modules.anyMatch(m -> "org.graalvm.espresso".equals(m.getName()));
var found = modules.anyMatch(m -> "org.graalvm.espresso".equals(m.getName()));
if (!found) {
var url =
ContextFactory.class.getResource(
"/META-INF/native-image/com.oracle.truffle.espresso/native-image.properties");
found = url != null;
}
ENGINE_HAS_JAVA = found;
}
}

View File

@ -1,15 +1,191 @@
[
{
"name": "java.lang.ClassLoader",
"methods": [
{ "name": "getPlatformClassLoader", "parameterTypes": [] },
{ "name": "loadClass", "parameterTypes": ["java.lang.String"] }
]
},
{
"name": "java.lang.ClassNotFoundException"
},
{
"name": "java.lang.NoSuchMethodError"
}
{
"name":"[Lcom.sun.management.internal.DiagnosticCommandArgumentInfo;"
},
{
"name":"[Lcom.sun.management.internal.DiagnosticCommandInfo;"
},
{
"name":"com.sun.jna.Callback"
},
{
"name":"com.sun.jna.CallbackReference",
"methods":[{"name":"getCallback","parameterTypes":["java.lang.Class","com.sun.jna.Pointer","boolean"] }, {"name":"getFunctionPointer","parameterTypes":["com.sun.jna.Callback","boolean"] }, {"name":"getNativeString","parameterTypes":["java.lang.Object","boolean"] }, {"name":"initializeThread","parameterTypes":["com.sun.jna.Callback","com.sun.jna.CallbackReference$AttachOptions"] }]
},
{
"name":"com.sun.jna.CallbackReference$AttachOptions"
},
{
"name":"com.sun.jna.FromNativeConverter",
"methods":[{"name":"nativeType","parameterTypes":[] }]
},
{
"name":"com.sun.jna.IntegerType",
"fields":[{"name":"value"}]
},
{
"name":"com.sun.jna.JNIEnv"
},
{
"name":"com.sun.jna.Native",
"methods":[{"name":"dispose","parameterTypes":[] }, {"name":"fromNative","parameterTypes":["com.sun.jna.FromNativeConverter","java.lang.Object","java.lang.reflect.Method"] }, {"name":"fromNative","parameterTypes":["java.lang.Class","java.lang.Object"] }, {"name":"fromNative","parameterTypes":["java.lang.reflect.Method","java.lang.Object"] }, {"name":"nativeType","parameterTypes":["java.lang.Class"] }, {"name":"toNative","parameterTypes":["com.sun.jna.ToNativeConverter","java.lang.Object"] }]
},
{
"name":"com.sun.jna.Native$ffi_callback",
"methods":[{"name":"invoke","parameterTypes":["long","long","long"] }]
},
{
"name":"com.sun.jna.NativeMapped",
"methods":[{"name":"toNative","parameterTypes":[] }]
},
{
"name":"com.sun.jna.Pointer",
"fields":[{"name":"peer"}],
"methods":[{"name":"<init>","parameterTypes":["long"] }]
},
{
"name":"com.sun.jna.PointerType",
"fields":[{"name":"pointer"}]
},
{
"name":"com.sun.jna.Structure",
"fields":[{"name":"memory"}, {"name":"typeInfo"}],
"methods":[{"name":"autoRead","parameterTypes":[] }, {"name":"autoWrite","parameterTypes":[] }, {"name":"getTypeInfo","parameterTypes":[] }, {"name":"newInstance","parameterTypes":["java.lang.Class","long"] }]
},
{
"name":"com.sun.jna.Structure$ByValue"
},
{
"name":"com.sun.jna.Structure$FFIType$FFITypes",
"fields":[{"name":"ffi_type_double"}, {"name":"ffi_type_float"}, {"name":"ffi_type_longdouble"}, {"name":"ffi_type_pointer"}, {"name":"ffi_type_sint16"}, {"name":"ffi_type_sint32"}, {"name":"ffi_type_sint64"}, {"name":"ffi_type_sint8"}, {"name":"ffi_type_uint16"}, {"name":"ffi_type_uint32"}, {"name":"ffi_type_uint64"}, {"name":"ffi_type_uint8"}, {"name":"ffi_type_void"}]
},
{
"name":"com.sun.jna.WString",
"methods":[{"name":"<init>","parameterTypes":["java.lang.String"] }]
},
{
"name":"com.sun.management.internal.DiagnosticCommandArgumentInfo",
"methods":[{"name":"<init>","parameterTypes":["java.lang.String","java.lang.String","java.lang.String","java.lang.String","boolean","boolean","boolean","int"] }]
},
{
"name":"com.sun.management.internal.DiagnosticCommandInfo",
"methods":[{"name":"<init>","parameterTypes":["java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","boolean","java.util.List"] }]
},
{
"name":"java.lang.Boolean",
"fields":[{"name":"TYPE"}, {"name":"value"}],
"methods":[{"name":"<init>","parameterTypes":["boolean"] }, {"name":"getBoolean","parameterTypes":["java.lang.String"] }]
},
{
"name":"java.lang.Byte",
"fields":[{"name":"TYPE"}, {"name":"value"}],
"methods":[{"name":"<init>","parameterTypes":["byte"] }]
},
{
"name":"java.lang.Character",
"fields":[{"name":"TYPE"}, {"name":"value"}],
"methods":[{"name":"<init>","parameterTypes":["char"] }]
},
{
"name":"java.lang.Class",
"methods":[{"name":"getClassLoader","parameterTypes":[] }, {"name":"getComponentType","parameterTypes":[] }]
},
{
"name":"java.lang.ClassLoader",
"methods":[{"name":"getPlatformClassLoader","parameterTypes":[] }, {"name":"loadClass","parameterTypes":["java.lang.String"] }]
},
{
"name":"java.lang.ClassNotFoundException"
},
{
"name":"java.lang.Double",
"fields":[{"name":"TYPE"}, {"name":"value"}],
"methods":[{"name":"<init>","parameterTypes":["double"] }]
},
{
"name":"java.lang.Float",
"fields":[{"name":"TYPE"}, {"name":"value"}],
"methods":[{"name":"<init>","parameterTypes":["float"] }]
},
{
"name":"java.lang.Integer",
"fields":[{"name":"TYPE"}, {"name":"value"}],
"methods":[{"name":"<init>","parameterTypes":["int"] }]
},
{
"name":"java.lang.Long",
"fields":[{"name":"TYPE"}, {"name":"value"}],
"methods":[{"name":"<init>","parameterTypes":["long"] }]
},
{
"name":"java.lang.NoSuchMethodError"
},
{
"name":"java.lang.Object",
"methods":[{"name":"toString","parameterTypes":[] }]
},
{
"name":"java.lang.Short",
"fields":[{"name":"TYPE"}, {"name":"value"}],
"methods":[{"name":"<init>","parameterTypes":["short"] }]
},
{
"name":"java.lang.String",
"methods":[{"name":"<init>","parameterTypes":["byte[]"] }, {"name":"<init>","parameterTypes":["byte[]","java.lang.String"] }, {"name":"getBytes","parameterTypes":[] }, {"name":"getBytes","parameterTypes":["java.lang.String"] }, {"name":"toCharArray","parameterTypes":[] }]
},
{
"name":"java.lang.System",
"methods":[{"name":"getProperty","parameterTypes":["java.lang.String"] }]
},
{
"name":"java.lang.Void",
"fields":[{"name":"TYPE"}]
},
{
"name":"java.lang.reflect.Method",
"methods":[{"name":"getParameterTypes","parameterTypes":[] }, {"name":"getReturnType","parameterTypes":[] }]
},
{
"name":"java.nio.Buffer",
"methods":[{"name":"position","parameterTypes":[] }]
},
{
"name":"java.nio.ByteBuffer",
"methods":[{"name":"array","parameterTypes":[] }, {"name":"arrayOffset","parameterTypes":[] }]
},
{
"name":"java.nio.CharBuffer",
"methods":[{"name":"array","parameterTypes":[] }, {"name":"arrayOffset","parameterTypes":[] }]
},
{
"name":"java.nio.DoubleBuffer",
"methods":[{"name":"array","parameterTypes":[] }, {"name":"arrayOffset","parameterTypes":[] }]
},
{
"name":"java.nio.FloatBuffer",
"methods":[{"name":"array","parameterTypes":[] }, {"name":"arrayOffset","parameterTypes":[] }]
},
{
"name":"java.nio.IntBuffer",
"methods":[{"name":"array","parameterTypes":[] }, {"name":"arrayOffset","parameterTypes":[] }]
},
{
"name":"java.nio.LongBuffer",
"methods":[{"name":"array","parameterTypes":[] }, {"name":"arrayOffset","parameterTypes":[] }]
},
{
"name":"java.nio.ShortBuffer",
"methods":[{"name":"array","parameterTypes":[] }, {"name":"arrayOffset","parameterTypes":[] }]
},
{
"name":"java.util.Arrays",
"methods":[{"name":"asList","parameterTypes":["java.lang.Object[]"] }]
},
{
"name":"jdk.internal.loader.ClassLoaders$AppClassLoader"
},
{
"name":"sun.management.VMManagementImpl",
"fields":[{"name":"compTimeMonitoringSupport"}, {"name":"currentThreadCpuTimeSupport"}, {"name":"objectMonitorUsageSupport"}, {"name":"otherThreadCpuTimeSupport"}, {"name":"remoteDiagnosticCommandsSupport"}, {"name":"synchronizerUsageSupport"}, {"name":"threadAllocatedMemorySupport"}, {"name":"threadContentionMonitoringSupport"}]
}
]

View File

@ -1 +1,5 @@
[]
[
{
"interfaces":["org.jline.terminal.impl.jna.linux.CLibrary"]
}
]

View File

@ -1,39 +1,614 @@
{
"resources":{
"includes":[
{
"pattern":"\\QMETA-INF/org/enso/interpreter/node/expression/builtin/BuiltinMethods.metadata\\E"
},
{
"pattern":"\\QMETA-INF/org/enso/interpreter/node/expression/builtin/BuiltinTypes.metadata\\E"
},
{
"pattern":"\\QMETA-INF/services/com.oracle.truffle.api.TruffleLanguage$Provider\\E"
},
{
"pattern":"\\QMETA-INF/services/com.oracle.truffle.api.instrumentation.TruffleInstrument$Provider\\E"
},
{
"pattern":"\\QMETA-INF/services/java.nio.file.spi.FileSystemProvider\\E"
},
{
"pattern":"\\Qcom/oracle/truffle/nfi/backend/libffi/LibFFILanguage.class\\E"
},
{
"pattern":"\\Qorg/enso/interpreter/Language.class\\E"
},
{
"pattern":"\\Qorg/enso/interpreter/epb/EpbLanguage.class\\E"
},
{
"pattern":"\\Qorg/slf4j/impl/StaticLoggerBinder.class\\E"
},
{
"pattern":"\\Qapplication.conf\\E"
},
{
"pattern":"\\Qch/qos/logback/classic/spi/Configurator.class\\E"
}
]},
"bundles":[]
"includes":[{
"pattern":"\\QMETA-INF/org/enso/interpreter/node/expression/builtin/BuiltinMethods.metadata\\E"
}, {
"pattern":"\\QMETA-INF/org/enso/interpreter/node/expression/builtin/BuiltinTypes.metadata\\E"
}, {
"pattern":"\\QMETA-INF/services/ch.qos.logback.classic.spi.Configurator\\E"
}, {
"pattern":"\\QMETA-INF/services/com.oracle.graal.python.builtins.PythonBuiltins\\E"
}, {
"pattern":"\\QMETA-INF/services/com.oracle.truffle.api.TruffleLanguage$Provider\\E"
}, {
"pattern":"\\QMETA-INF/services/com.oracle.truffle.api.impl.TruffleLocator\\E"
}, {
"pattern":"\\QMETA-INF/services/com.oracle.truffle.api.instrumentation.TruffleInstrument$Provider\\E"
}, {
"pattern":"\\QMETA-INF/services/com.oracle.truffle.api.instrumentation.provider.TruffleInstrumentProvider\\E"
}, {
"pattern":"\\QMETA-INF/services/com.oracle.truffle.api.library.DefaultExportProvider\\E"
}, {
"pattern":"\\QMETA-INF/services/com.oracle.truffle.api.library.provider.DefaultExportProvider\\E"
}, {
"pattern":"\\QMETA-INF/services/com.oracle.truffle.api.object.LayoutFactory\\E"
}, {
"pattern":"\\QMETA-INF/services/com.oracle.truffle.api.provider.InternalResourceProvider\\E"
}, {
"pattern":"\\QMETA-INF/services/com.oracle.truffle.api.provider.TruffleLanguageProvider\\E"
}, {
"pattern":"\\QMETA-INF/services/com.oracle.truffle.runtime.EngineCacheSupport\\E"
}, {
"pattern":"\\QMETA-INF/services/com.oracle.truffle.runtime.FloodControlHandler\\E"
}, {
"pattern":"\\QMETA-INF/services/com.oracle.truffle.runtime.TruffleTypes\\E"
}, {
"pattern":"\\QMETA-INF/services/java.lang.Cloneable\\E"
}, {
"pattern":"\\QMETA-INF/services/java.lang.System$LoggerFinder\\E"
}, {
"pattern":"\\QMETA-INF/services/java.net.ContentHandlerFactory\\E"
}, {
"pattern":"\\QMETA-INF/services/java.net.spi.InetAddressResolverProvider\\E"
}, {
"pattern":"\\QMETA-INF/services/java.net.spi.URLStreamHandlerProvider\\E"
}, {
"pattern":"\\QMETA-INF/services/java.nio.channels.spi.SelectorProvider\\E"
}, {
"pattern":"\\QMETA-INF/services/java.nio.charset.spi.CharsetProvider\\E"
}, {
"pattern":"\\QMETA-INF/services/java.nio.file.spi.FileSystemProvider\\E"
}, {
"pattern":"\\QMETA-INF/services/java.time.zone.ZoneRulesProvider\\E"
}, {
"pattern":"\\QMETA-INF/services/javax.xml.parsers.DocumentBuilderFactory\\E"
}, {
"pattern":"\\QMETA-INF/services/javax.xml.xpath.XPathFactory\\E"
}, {
"pattern":"\\QMETA-INF/services/jdk.vm.ci.services.JVMCIServiceLocator\\E"
}, {
"pattern":"\\QMETA-INF/services/org.apache.tika.detect.EncodingDetector\\E"
}, {
"pattern":"\\QMETA-INF/services/org.enso.base.file_format.FileFormatSPI\\E"
}, {
"pattern":"\\QMETA-INF/services/org.enso.logger.LoggerSetup\\E"
}, {
"pattern":"\\QMETA-INF/services/org.enso.persist.Persistance\\E"
}, {
"pattern":"\\QMETA-INF/services/org.slf4j.spi.SLF4JServiceProvider\\E"
}, {
"pattern":"\\QMETA-INF/services/org.w3c.dom.DOMImplementationSourceList\\E"
}, {
"pattern":"\\QMETA-INF/services/org/jline/terminal/provider/exec\\E"
}, {
"pattern":"\\QMETA-INF/services/org/jline/terminal/provider/jansi\\E"
}, {
"pattern":"\\QMETA-INF/services/org/jline/terminal/provider/jna\\E"
}, {
"pattern":"\\Qakka-http-version.conf\\E"
}, {
"pattern":"\\Qakka-http-version.json\\E"
}, {
"pattern":"\\Qakka-http-version.properties\\E"
}, {
"pattern":"\\Qapplication.conf\\E"
}, {
"pattern":"\\Qapplication.json\\E"
}, {
"pattern":"\\Qapplication.properties\\E"
}, {
"pattern":"\\Qch/qos/logback/classic/spi/Configurator.class\\E"
}, {
"pattern":"\\Qcom/ibm/icu/ICUConfig.properties\\E"
}, {
"pattern":"\\Qcom/ibm/icu/impl/data/icudt73b/brkitr/Thai.res\\E"
}, {
"pattern":"\\Qcom/ibm/icu/impl/data/icudt73b/brkitr/Thai_graphclust.res\\E"
}, {
"pattern":"\\Qcom/ibm/icu/impl/data/icudt73b/brkitr/Thai_graphclust_model4.res\\E"
}, {
"pattern":"\\Qcom/ibm/icu/impl/data/icudt73b/brkitr/Thai_graphclust_model4_heavy.res\\E"
}, {
"pattern":"\\Qcom/ibm/icu/impl/data/icudt73b/brkitr/char.brk\\E"
}, {
"pattern":"\\Qcom/ibm/icu/impl/data/icudt73b/brkitr/cjdict.dict\\E"
}, {
"pattern":"\\Qcom/ibm/icu/impl/data/icudt73b/brkitr/en.res\\E"
}, {
"pattern":"\\Qcom/ibm/icu/impl/data/icudt73b/brkitr/en_GB.res\\E"
}, {
"pattern":"\\Qcom/ibm/icu/impl/data/icudt73b/brkitr/en_Latn.res\\E"
}, {
"pattern":"\\Qcom/ibm/icu/impl/data/icudt73b/brkitr/en_US.res\\E"
}, {
"pattern":"\\Qcom/ibm/icu/impl/data/icudt73b/brkitr/root.res\\E"
}, {
"pattern":"\\Qcom/ibm/icu/impl/data/icudt73b/brkitr/thaidict.dict\\E"
}, {
"pattern":"\\Qcom/ibm/icu/impl/data/icudt73b/brkitr/word.brk\\E"
}, {
"pattern":"\\Qcom/ibm/icu/impl/data/icudt73b/coll/\\E"
}, {
"pattern":"\\Qcom/ibm/icu/impl/data/icudt73b/coll/en.res\\E"
}, {
"pattern":"\\Qcom/ibm/icu/impl/data/icudt73b/coll/en_US.res\\E"
}, {
"pattern":"\\Qcom/ibm/icu/impl/data/icudt73b/coll/root.res\\E"
}, {
"pattern":"\\Qcom/ibm/icu/impl/data/icudt73b/coll/ucadata.icu\\E"
}, {
"pattern":"\\Qcom/ibm/icu/impl/data/icudt73b/nfc.nrm\\E"
}, {
"pattern":"\\Qcom/ibm/icu/impl/data/icudt73b/nfkc.nrm\\E"
}, {
"pattern":"\\Qcom/ibm/icu/impl/data/icudt73b/nfkc_cf.nrm\\E"
}, {
"pattern":"\\Qcom/ibm/icu/impl/data/icudt73b/pnames.icu\\E"
}, {
"pattern":"\\Qcom/ibm/icu/impl/data/icudt73b/ucase.icu\\E"
}, {
"pattern":"\\Qcom/ibm/icu/impl/data/icudt73b/uprops.icu\\E"
}, {
"pattern":"\\Qcom/oracle/truffle/nfi/backend/libffi/LibFFILanguage.class\\E"
}, {
"pattern":"\\Qcom/sun/jna/linux-x86-64/libjnidispatch.so\\E"
}, {
"pattern":"\\Qlogback-test.xml\\E"
}, {
"pattern":"\\Qlogback.xml\\E"
}, {
"pattern":"\\Qorg/enso/interpreter/Language.class\\E"
}, {
"pattern":"\\Qorg/enso/interpreter/epb/EpbLanguage.class\\E"
}, {
"pattern":"\\Qorg/jline/utils/capabilities.txt\\E"
}, {
"pattern":"\\Qorg/jline/utils/xterm-256color.caps\\E"
}, {
"pattern":"\\Qorg/slf4j/impl/StaticLoggerBinder.class\\E"
}, {
"pattern":"\\Qreference.conf\\E"
}, {
"pattern":"\\Qurlhandler.props\\E"
}, {
"pattern":"\\Qversion.conf\\E"
}, {
"pattern":"\\Qversion.json\\E"
}, {
"pattern":"\\Qversion.properties\\E"
}, {
"pattern":"java.base:\\Qjdk/internal/icu/impl/data/icudt72b/uprops.icu\\E"
}, {
"pattern":"java.base:\\Qsun/net/idn/uidna.spp\\E"
}, {
"pattern":"java.base:\\Qsun/net/www/content-types.properties\\E"
}, {
"pattern":"java.xml:\\Qcom/sun/org/apache/xml/internal/serializer/Encodings.properties\\E"
}, {
"pattern":"jdk.jfr:\\Qjdk/jfr/internal/query/view.ini\\E"
}, {
"pattern":"jdk.jfr:\\Qjdk/jfr/internal/types/metadata.bin\\E"
}, {
"pattern":"org.enso.runtime:\\Qcom/ibm/icu/ICUConfig.properties\\E"
}, {
"pattern":"org.enso.runtime:\\Qcom/ibm/icu/impl/data/icudt73b/brkitr/Thai.res\\E"
}, {
"pattern":"org.enso.runtime:\\Qcom/ibm/icu/impl/data/icudt73b/brkitr/Thai_graphclust.res\\E"
}, {
"pattern":"org.enso.runtime:\\Qcom/ibm/icu/impl/data/icudt73b/brkitr/Thai_graphclust_model4.res\\E"
}, {
"pattern":"org.enso.runtime:\\Qcom/ibm/icu/impl/data/icudt73b/brkitr/Thai_graphclust_model4_heavy.res\\E"
}, {
"pattern":"org.enso.runtime:\\Qcom/ibm/icu/impl/data/icudt73b/brkitr/char.brk\\E"
}, {
"pattern":"org.enso.runtime:\\Qcom/ibm/icu/impl/data/icudt73b/brkitr/cjdict.dict\\E"
}, {
"pattern":"org.enso.runtime:\\Qcom/ibm/icu/impl/data/icudt73b/brkitr/en.res\\E"
}, {
"pattern":"org.enso.runtime:\\Qcom/ibm/icu/impl/data/icudt73b/brkitr/en_GB.res\\E"
}, {
"pattern":"org.enso.runtime:\\Qcom/ibm/icu/impl/data/icudt73b/brkitr/en_Latn.res\\E"
}, {
"pattern":"org.enso.runtime:\\Qcom/ibm/icu/impl/data/icudt73b/brkitr/en_US.res\\E"
}, {
"pattern":"org.enso.runtime:\\Qcom/ibm/icu/impl/data/icudt73b/brkitr/root.res\\E"
}, {
"pattern":"org.enso.runtime:\\Qcom/ibm/icu/impl/data/icudt73b/brkitr/thaidict.dict\\E"
}, {
"pattern":"org.enso.runtime:\\Qcom/ibm/icu/impl/data/icudt73b/brkitr/word.brk\\E"
}, {
"pattern":"org.enso.runtime:\\Qcom/ibm/icu/impl/data/icudt73b/coll/en.res\\E"
}, {
"pattern":"org.enso.runtime:\\Qcom/ibm/icu/impl/data/icudt73b/coll/en_US.res\\E"
}, {
"pattern":"org.enso.runtime:\\Qcom/ibm/icu/impl/data/icudt73b/coll/root.res\\E"
}, {
"pattern":"org.enso.runtime:\\Qcom/ibm/icu/impl/data/icudt73b/coll/ucadata.icu\\E"
}, {
"pattern":"org.enso.runtime:\\Qcom/ibm/icu/impl/data/icudt73b/nfc.nrm\\E"
}, {
"pattern":"org.enso.runtime:\\Qcom/ibm/icu/impl/data/icudt73b/nfkc.nrm\\E"
}, {
"pattern":"org.enso.runtime:\\Qcom/ibm/icu/impl/data/icudt73b/nfkc_cf.nrm\\E"
}, {
"pattern":"org.enso.runtime:\\Qcom/ibm/icu/impl/data/icudt73b/pnames.icu\\E"
}, {
"pattern":"org.enso.runtime:\\Qcom/ibm/icu/impl/data/icudt73b/ucase.icu\\E"
}, {
"pattern":"org.enso.runtime:\\Qcom/ibm/icu/impl/data/icudt73b/uprops.icu\\E"
}, {
"pattern":"org.graalvm.polyglot:\\QMETA-INF/graalvm/org.graalvm.polyglot/version\\E"
}, {
"pattern":"org.graalvm.py.resources:\\QMETA-INF/resources/include.sha256\\E"
}, {
"pattern":"org.graalvm.py.resources:\\QMETA-INF/resources/libgraalpy.sha256\\E"
}, {
"pattern":"org.graalvm.py.resources:\\QMETA-INF/resources/libpython.sha256\\E"
}, {
"pattern":"org.graalvm.py.resources:\\QMETA-INF/resources/linux/amd64/native.sha256\\E"
}, {
"pattern":"org.graalvm.py.resources:\\QMETA-INF/resources/ni.sha256\\E"
}, {
"pattern":"org.graalvm.py.resources:\\Qgraalpy_versions\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/PythonBuiltins.class\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenABC.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenCODECS.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenCOLLECTIONS.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenCOLLECTIONS_ABC.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenCOPYREG.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_ALIASES.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_ASCII.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_BASE64_CODEC.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_BIG5.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_BIG5HKSCS.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_BZ2_CODEC.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CHARMAP.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP037.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP1006.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP1026.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP1125.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP1140.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP1250.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP1251.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP1252.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP1253.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP1254.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP1255.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP1256.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP1257.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP1258.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP273.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP424.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP437.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP500.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP720.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP737.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP775.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP850.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP852.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP855.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP856.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP857.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP858.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP860.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP861.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP862.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP863.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP864.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP865.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP866.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP869.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP874.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP875.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP932.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP949.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_CP950.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_EUC_JISX0213.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_EUC_JIS_2004.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_EUC_JP.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_EUC_KR.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_GB18030.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_GB2312.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_GBK.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_HEX_CODEC.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_HP_ROMAN8.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_HZ.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_IDNA.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_ISO2022_JP.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_ISO2022_JP_1.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_ISO2022_JP_2.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_ISO2022_JP_2004.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_ISO2022_JP_3.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_ISO2022_JP_EXT.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_ISO2022_KR.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_ISO8859_1.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_ISO8859_10.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_ISO8859_11.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_ISO8859_13.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_ISO8859_14.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_ISO8859_15.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_ISO8859_16.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_ISO8859_2.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_ISO8859_3.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_ISO8859_4.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_ISO8859_5.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_ISO8859_6.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_ISO8859_7.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_ISO8859_8.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_ISO8859_9.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_JOHAB.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_KOI8_R.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_KOI8_T.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_KOI8_U.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_KZ1048.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_LATIN_1.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_MAC_ARABIC.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_MAC_CROATIAN.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_MAC_CYRILLIC.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_MAC_FARSI.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_MAC_GREEK.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_MAC_ICELAND.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_MAC_LATIN2.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_MAC_ROMAN.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_MAC_ROMANIAN.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_MAC_TURKISH.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_MBCS.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_OEM.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_PALMOS.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_PTCP154.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_PUNYCODE.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_QUOPRI_CODEC.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_RAW_UNICODE_ESCAPE.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_ROT_13.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_SHIFT_JIS.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_SHIFT_JISX0213.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_SHIFT_JIS_2004.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_TIS_620.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_UNDEFINED.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_UNICODE_ESCAPE.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_UTF_16.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_UTF_16_BE.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_UTF_16_LE.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_UTF_32.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_UTF_32_BE.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_UTF_32_LE.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_UTF_7.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_UTF_8.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_UTF_8_SIG.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_UU_CODEC.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENCODINGS_ZLIB_CODEC.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenENUM.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenFROZEN_ONLY.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenFUNCTOOLS.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenGENERICPATH.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenGRAALPY_BUILTINS.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenGRAALPY_FUNCTION.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenGRAALPY_JAVA.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenGRAALPY_PIP_HOOK.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenGRAALPY_SULONG_SUPPORT.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenGRAALPY_UNICODEDATA.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenGRAALPY__SRE.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenGRAALPY__STRUCT.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenGRAALPY__SYSCONFIG.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenGRAALPY__WEAKREF.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenGRAALPY___GRAALPYTHON__.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenHEAPQ.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenIMPORTLIB__BOOTSTRAP.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenIMPORTLIB__BOOTSTRAP_EXTERNAL.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenIO.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenKEYWORD.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenLOCALE.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenNTPATH.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenOPERATOR.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenOS.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenPOSIXPATH.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenRE.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenREPRLIB.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenRLCOMPLETER.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenSITE.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenSRE_COMPILE.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenSRE_CONSTANTS.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenSRE_PARSE.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenSTAT.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenTYPES.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/FrozenZIPIMPORT.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/Frozen_COLLECTIONS_ABC.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/Frozen_PY_ABC.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/Frozen_SITEBUILTINS.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/Frozen_SYSCONFIGDATA.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/Frozen_WEAKREFSET.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qcom/oracle/graal/python/builtins/objects/module/Frozen__HELLO__.bin\\E"
}, {
"pattern":"org.graalvm.py:\\Qgraalpy_versions\\E"
}, {
"pattern":"org.graalvm.shadowed.icu4j:\\Qorg/graalvm/shadowed/com/ibm/icu/ICUConfig.properties\\E"
}, {
"pattern":"org.graalvm.shadowed.icu4j:\\Qorg/graalvm/shadowed/com/ibm/icu/impl/data/icudt74b/pool.res\\E"
}, {
"pattern":"org.graalvm.shadowed.icu4j:\\Qorg/graalvm/shadowed/com/ibm/icu/impl/data/icudt74b/root.res\\E"
}, {
"pattern":"org.graalvm.shadowed.icu4j:\\Qorg/graalvm/shadowed/com/ibm/icu/impl/data/icudt74b/uprops.icu\\E"
}, {
"pattern":"org.graalvm.shadowed.icu4j:\\Qorg/graalvm/shadowed/com/ibm/icu/impl/data/icudt74b/zoneinfo64.res\\E"
}, {
"pattern":"org.graalvm.truffle.runtime:\\QMETA-INF/resources/engine/libtruffleattach/linux/amd64/sha256\\E"
}, {
"pattern":"org.graalvm.truffle:\\QMETA-INF/graalvm/org.graalvm.truffle/version\\E"
}]},
"bundles":[{
"name":"com.oracle.js.parser.resources.Messages",
"locales":[""]
}, {
"name":"com.sun.org.apache.xerces.internal.impl.msg.XMLMessages",
"locales":[""]
}, {
"name":"com.sun.org.apache.xml.internal.serializer.XMLEntities",
"locales":[""]
}, {
"name":"com.sun.org.apache.xml.internal.serializer.utils.SerializerMessages",
"classNames":["com.sun.org.apache.xml.internal.serializer.utils.SerializerMessages", "com.sun.org.apache.xml.internal.serializer.utils.SerializerMessages_en"]
}, {
"name":"com.sun.org.apache.xpath.internal.res.XPATHErrorResources",
"classNames":["com.sun.org.apache.xpath.internal.res.XPATHErrorResources", "com.sun.org.apache.xpath.internal.res.XPATHErrorResources_en"]
}]
}

View File

@ -1,269 +1,275 @@
[
{
"name":"java.lang.Integer"
},
{
"name":"java.lang.Number"
},
{
"name":"java.lang.String"
},
{
"name":"java.util.UUID"
},
{
"name":"org.enso.compiler.core.ir.DiagnosticStorage"
},
{
"name":"org.enso.compiler.core.ir.MetadataStorage"
},
{
"name":"org.enso.compiler.data.BindingsMap"
},
{
"name":"org.enso.compiler.data.BindingsMap$Cons"
},
{
"name":"org.enso.compiler.data.BindingsMap$ExportedModule"
},
{
"name":"org.enso.compiler.data.BindingsMap$ModuleMethod"
},
{
"name":"org.enso.compiler.data.BindingsMap$ModuleReference$Abstract"
},
{
"name":"org.enso.compiler.data.BindingsMap$PolyglotSymbol"
},
{
"name":"org.enso.compiler.data.BindingsMap$Resolution"
},
{
"name":"org.enso.compiler.data.BindingsMap$ResolvedConstructor"
},
{
"name":"org.enso.compiler.data.BindingsMap$ResolvedImport"
},
{
"name":"org.enso.compiler.data.BindingsMap$ResolvedMethod"
},
{
"name":"org.enso.compiler.data.BindingsMap$ResolvedModule"
},
{
"name":"org.enso.compiler.data.BindingsMap$ResolvedPolyglotSymbol"
},
{
"name":"org.enso.compiler.data.BindingsMap$SymbolRestriction$AllowedResolution"
},
{
"name":"org.enso.compiler.data.BindingsMap$SymbolRestriction$Hiding"
},
{
"name":"org.enso.compiler.data.BindingsMap$SymbolRestriction$Intersect"
},
{
"name":"org.enso.compiler.data.BindingsMap$SymbolRestriction$Only"
},
{
"name":"org.enso.compiler.data.BindingsMap$SymbolRestriction$Union"
},
{
"name":"org.enso.compiler.data.BindingsMap$Type"
},
{
"name":"org.enso.compiler.pass.analyse.AliasAnalysis$"
},
{
"name":"org.enso.compiler.pass.analyse.AliasAnalysis$Graph"
},
{
"name":"org.enso.compiler.pass.analyse.AliasAnalysis$Graph$Link"
},
{
"name":"org.enso.compiler.pass.analyse.AliasAnalysis$Graph$Occurrence$Def"
},
{
"name":"org.enso.compiler.pass.analyse.AliasAnalysis$Graph$Occurrence$Use"
},
{
"name":"org.enso.compiler.pass.analyse.AliasAnalysis$Graph$Scope"
},
{
"name":"org.enso.compiler.pass.analyse.AliasAnalysis$Info$Occurrence"
},
{
"name":"org.enso.compiler.pass.analyse.AliasAnalysis$Info$Scope$Child"
},
{
"name":"org.enso.compiler.pass.analyse.AliasAnalysis$Info$Scope$Root"
},
{
"name":"org.enso.compiler.pass.analyse.BindingAnalysis$"
},
{
"name":"org.enso.compiler.pass.analyse.CachePreferenceAnalysis$"
},
{
"name":"org.enso.compiler.pass.analyse.CachePreferenceAnalysis$WeightInfo"
},
{
"name":"org.enso.compiler.pass.analyse.DataflowAnalysis$"
},
{
"name":"org.enso.compiler.pass.analyse.DataflowAnalysis$DependencyInfo"
},
{
"name":"org.enso.compiler.pass.analyse.DataflowAnalysis$DependencyInfo$Type$Dynamic"
},
{
"name":"org.enso.compiler.pass.analyse.DataflowAnalysis$DependencyInfo$Type$Static"
},
{
"name":"org.enso.compiler.pass.analyse.DataflowAnalysis$DependencyMapping"
},
{
"name":"org.enso.compiler.pass.analyse.GatherDiagnostics$"
},
{
"name":"org.enso.compiler.pass.analyse.GatherDiagnostics$DiagnosticsMeta"
},
{
"name":"org.enso.compiler.pass.analyse.TailCall$"
},
{
"name":"org.enso.compiler.pass.analyse.TailCall$TailPosition$NotTail$"
},
{
"name":"org.enso.compiler.pass.analyse.TailCall$TailPosition$Tail$"
},
{
"name":"org.enso.compiler.pass.resolve.DocumentationComments$"
},
{
"name":"org.enso.compiler.pass.resolve.DocumentationComments$Doc"
},
{
"name":"org.enso.compiler.pass.resolve.ExpressionAnnotations$"
},
{
"name":"org.enso.compiler.pass.resolve.GlobalNames$"
},
{
"name":"org.enso.compiler.pass.resolve.IgnoredBindings$"
},
{
"name":"org.enso.compiler.pass.resolve.IgnoredBindings$State$Ignored$"
},
{
"name":"org.enso.compiler.pass.resolve.IgnoredBindings$State$NotIgnored$"
},
{
"name":"org.enso.compiler.pass.resolve.MethodCalls$"
},
{
"name":"org.enso.compiler.pass.resolve.MethodDefinitions$"
},
{
"name":"org.enso.compiler.pass.resolve.ModuleAnnotations$"
},
{
"name":"org.enso.compiler.pass.resolve.ModuleAnnotations$Annotations"
},
{
"name":"org.enso.compiler.pass.resolve.Patterns$"
},
{
"name":"org.enso.compiler.pass.resolve.TypeSignatures$"
},
{
"name":"org.enso.compiler.pass.resolve.TypeSignatures$Signature"
},
{
"name":"org.enso.pkg.QualifiedName"
},
{
"name":"org.enso.syntax.text.Location"
},
{
"name":"scala.None$"
},
{
"name":"scala.Option"
},
{
"name":"scala.Some"
},
{
"name":"scala.Tuple2"
},
{
"name":"scala.collection.IterableFactory$ToFactory"
},
{
"name":"scala.collection.MapFactory$ToFactory"
},
{
"name":"scala.collection.generic.DefaultSerializationProxy"
},
{
"name":"scala.collection.generic.SerializeEnd$"
},
{
"name":"scala.collection.immutable.HashMap$"
},
{
"name":"scala.collection.immutable.HashMap"
},
{
"name":"scala.collection.immutable.HashSet$"
},
{
"name":"scala.collection.immutable.HashSet"
},
{
"name":"scala.collection.immutable.List$"
},
{
"name":"scala.collection.immutable.List"
},
{
"name":"scala.collection.immutable.Map$EmptyMap$"
},
{
"name":"scala.collection.immutable.Map$Map1"
},
{
"name":"scala.collection.immutable.Map$Map2"
},
{
"name":"scala.collection.immutable.Map$Map3"
},
{
"name":"scala.collection.immutable.Map$Map4"
},
{
"name":"scala.collection.immutable.Map"
},
{
"name":"scala.collection.immutable.Set$EmptySet$"
},
{
"name":"scala.collection.immutable.Set$Set1"
},
{
"name":"scala.collection.immutable.Set$Set2"
},
{
"name":"scala.collection.immutable.Set$Set3"
},
{
"name":"scala.collection.immutable.Set$Set4"
},
{
"name":"scala.collection.mutable.HashMap$DeserializationFactory"
},
{
"name":"scala.runtime.ModuleSerializationProxy"
}
]
{
"types":[
{
"name":"java.lang.Integer"
},
{
"name":"java.lang.Number"
},
{
"name":"java.lang.String"
},
{
"name":"java.util.UUID"
},
{
"name":"org.enso.compiler.core.ir.DiagnosticStorage"
},
{
"name":"org.enso.compiler.core.ir.MetadataStorage"
},
{
"name":"org.enso.compiler.data.BindingsMap"
},
{
"name":"org.enso.compiler.data.BindingsMap$Cons"
},
{
"name":"org.enso.compiler.data.BindingsMap$ExportedModule"
},
{
"name":"org.enso.compiler.data.BindingsMap$ModuleMethod"
},
{
"name":"org.enso.compiler.data.BindingsMap$ModuleReference$Abstract"
},
{
"name":"org.enso.compiler.data.BindingsMap$PolyglotSymbol"
},
{
"name":"org.enso.compiler.data.BindingsMap$Resolution"
},
{
"name":"org.enso.compiler.data.BindingsMap$ResolvedConstructor"
},
{
"name":"org.enso.compiler.data.BindingsMap$ResolvedImport"
},
{
"name":"org.enso.compiler.data.BindingsMap$ResolvedMethod"
},
{
"name":"org.enso.compiler.data.BindingsMap$ResolvedModule"
},
{
"name":"org.enso.compiler.data.BindingsMap$ResolvedPolyglotSymbol"
},
{
"name":"org.enso.compiler.data.BindingsMap$SymbolRestriction$AllowedResolution"
},
{
"name":"org.enso.compiler.data.BindingsMap$SymbolRestriction$Hiding"
},
{
"name":"org.enso.compiler.data.BindingsMap$SymbolRestriction$Intersect"
},
{
"name":"org.enso.compiler.data.BindingsMap$SymbolRestriction$Only"
},
{
"name":"org.enso.compiler.data.BindingsMap$SymbolRestriction$Union"
},
{
"name":"org.enso.compiler.data.BindingsMap$Type"
},
{
"name":"org.enso.compiler.pass.analyse.AliasAnalysis$"
},
{
"name":"org.enso.compiler.pass.analyse.AliasAnalysis$Graph"
},
{
"name":"org.enso.compiler.pass.analyse.AliasAnalysis$Graph$Link"
},
{
"name":"org.enso.compiler.pass.analyse.AliasAnalysis$Graph$Occurrence$Def"
},
{
"name":"org.enso.compiler.pass.analyse.AliasAnalysis$Graph$Occurrence$Use"
},
{
"name":"org.enso.compiler.pass.analyse.AliasAnalysis$Graph$Scope"
},
{
"name":"org.enso.compiler.pass.analyse.AliasAnalysis$Info$Occurrence"
},
{
"name":"org.enso.compiler.pass.analyse.AliasAnalysis$Info$Scope$Child"
},
{
"name":"org.enso.compiler.pass.analyse.AliasAnalysis$Info$Scope$Root"
},
{
"name":"org.enso.compiler.pass.analyse.BindingAnalysis$"
},
{
"name":"org.enso.compiler.pass.analyse.CachePreferenceAnalysis$"
},
{
"name":"org.enso.compiler.pass.analyse.CachePreferenceAnalysis$WeightInfo"
},
{
"name":"org.enso.compiler.pass.analyse.DataflowAnalysis$"
},
{
"name":"org.enso.compiler.pass.analyse.DataflowAnalysis$DependencyInfo"
},
{
"name":"org.enso.compiler.pass.analyse.DataflowAnalysis$DependencyInfo$Type$Dynamic"
},
{
"name":"org.enso.compiler.pass.analyse.DataflowAnalysis$DependencyInfo$Type$Static"
},
{
"name":"org.enso.compiler.pass.analyse.DataflowAnalysis$DependencyMapping"
},
{
"name":"org.enso.compiler.pass.analyse.GatherDiagnostics$"
},
{
"name":"org.enso.compiler.pass.analyse.GatherDiagnostics$DiagnosticsMeta"
},
{
"name":"org.enso.compiler.pass.analyse.TailCall$"
},
{
"name":"org.enso.compiler.pass.analyse.TailCall$TailPosition$NotTail$"
},
{
"name":"org.enso.compiler.pass.analyse.TailCall$TailPosition$Tail$"
},
{
"name":"org.enso.compiler.pass.resolve.DocumentationComments$"
},
{
"name":"org.enso.compiler.pass.resolve.DocumentationComments$Doc"
},
{
"name":"org.enso.compiler.pass.resolve.ExpressionAnnotations$"
},
{
"name":"org.enso.compiler.pass.resolve.GlobalNames$"
},
{
"name":"org.enso.compiler.pass.resolve.IgnoredBindings$"
},
{
"name":"org.enso.compiler.pass.resolve.IgnoredBindings$State$Ignored$"
},
{
"name":"org.enso.compiler.pass.resolve.IgnoredBindings$State$NotIgnored$"
},
{
"name":"org.enso.compiler.pass.resolve.MethodCalls$"
},
{
"name":"org.enso.compiler.pass.resolve.MethodDefinitions$"
},
{
"name":"org.enso.compiler.pass.resolve.ModuleAnnotations$"
},
{
"name":"org.enso.compiler.pass.resolve.ModuleAnnotations$Annotations"
},
{
"name":"org.enso.compiler.pass.resolve.Patterns$"
},
{
"name":"org.enso.compiler.pass.resolve.TypeSignatures$"
},
{
"name":"org.enso.compiler.pass.resolve.TypeSignatures$Signature"
},
{
"name":"org.enso.pkg.QualifiedName"
},
{
"name":"org.enso.syntax.text.Location"
},
{
"name":"scala.None$"
},
{
"name":"scala.Option"
},
{
"name":"scala.Some"
},
{
"name":"scala.Tuple2"
},
{
"name":"scala.collection.IterableFactory$ToFactory"
},
{
"name":"scala.collection.MapFactory$ToFactory"
},
{
"name":"scala.collection.generic.DefaultSerializationProxy"
},
{
"name":"scala.collection.generic.SerializeEnd$"
},
{
"name":"scala.collection.immutable.HashMap"
},
{
"name":"scala.collection.immutable.HashMap$"
},
{
"name":"scala.collection.immutable.HashSet"
},
{
"name":"scala.collection.immutable.HashSet$"
},
{
"name":"scala.collection.immutable.List"
},
{
"name":"scala.collection.immutable.List$"
},
{
"name":"scala.collection.immutable.Map"
},
{
"name":"scala.collection.immutable.Map$EmptyMap$"
},
{
"name":"scala.collection.immutable.Map$Map1"
},
{
"name":"scala.collection.immutable.Map$Map2"
},
{
"name":"scala.collection.immutable.Map$Map3"
},
{
"name":"scala.collection.immutable.Map$Map4"
},
{
"name":"scala.collection.immutable.Set$EmptySet$"
},
{
"name":"scala.collection.immutable.Set$Set1"
},
{
"name":"scala.collection.immutable.Set$Set2"
},
{
"name":"scala.collection.immutable.Set$Set3"
},
{
"name":"scala.collection.immutable.Set$Set4"
},
{
"name":"scala.collection.mutable.HashMap$DeserializationFactory"
},
{
"name":"scala.runtime.ModuleSerializationProxy"
}
],
"lambdaCapturingTypes":[
],
"proxies":[
]
}

View File

@ -1,13 +1,12 @@
import Standard.Base.Data.Numbers
import Standard.Base.IO
fac n =
facacc n v = if int_lte n 1 then v else @Tail_Call facacc (int_minus n 1) (int_mul n v)
facacc n v = if n <= 1 then v else @Tail_Call facacc n-1 n*v
res = facacc n 1
res
int_lte a b = @Builtin_Method "Integer.<="
int_minus a b = @Builtin_Method "Integer.-"
int_mul a b = @Builtin_Method "Integer.*"
main number =
## Note: This assumes that number is of type Integer already
fac number
main number=5 =
v = fac number
IO.println v

View File

@ -0,0 +1,185 @@
/**
* Copyright (c) 2008, SnakeYAML
*
* <p>Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of the License at
*
* <p>http://www.apache.org/licenses/LICENSE-2.0
*
* <p>Unless required by applicable law or agreed to in writing, software distributed under the
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.yaml.snakeyaml.introspector;
// remove once https://github.com/snakeyaml/snakeyaml/pull/12 gets integrated
import java.beans.FeatureDescriptor;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;
import org.yaml.snakeyaml.error.YAMLException;
import org.yaml.snakeyaml.util.ArrayUtils;
/**
* A <code>MethodProperty</code> is a <code>Property</code> which is accessed through accessor
* methods (setX, getX). It is possible to have a <code>MethodProperty</code> which has only setter,
* only getter, or both. It is not possible to have a <code>MethodProperty</code> which has neither
* setter nor getter.
*/
public class MethodProperty extends GenericProperty {
private final PropertyDescriptor property;
private final boolean readable;
private final boolean writable;
private static Type discoverGenericType(PropertyDescriptor property) {
Method readMethod = property.getReadMethod();
if (readMethod != null) {
return readMethod.getGenericReturnType();
}
Method writeMethod = property.getWriteMethod();
if (writeMethod != null) {
Type[] paramTypes = writeMethod.getGenericParameterTypes();
if (paramTypes.length > 0) {
return paramTypes[0];
}
}
/*
* This actually may happen if PropertyDescriptor is of type IndexedPropertyDescriptor and it
* has only IndexedGetter/Setter. ATM we simply skip type discovery.
*/
return null;
}
public MethodProperty(PropertyDescriptor property) {
super(
property.getName(),
property.getPropertyType(),
MethodProperty.discoverGenericType(property));
this.property = property;
this.readable = property.getReadMethod() != null;
this.writable = property.getWriteMethod() != null;
}
@Override
public void set(Object object, Object value) throws Exception {
if (!writable) {
throw new YAMLException(
"No writable property '" + getName() + "' on class: " + object.getClass().getName());
}
property.getWriteMethod().invoke(object, value);
}
@Override
public Object get(Object object) {
try {
property.getReadMethod().setAccessible(true); // issue 50
return property.getReadMethod().invoke(object);
} catch (Exception e) {
throw new YAMLException(
"Unable to find getter for property '"
+ property.getName()
+ "' on object "
+ object
+ ":"
+ e);
}
}
/**
* Returns the annotations that are present on read and write methods of this property or empty
* {@code List} if there're no annotations.
*
* @return the annotations that are present on this property or empty {@code List} if there're no
* annotations
*/
@Override
public List<Annotation> getAnnotations() {
List<Annotation> annotations;
if (isReadable() && isWritable()) {
annotations =
ArrayUtils.toUnmodifiableCompositeList(
property.getReadMethod().getAnnotations(),
property.getWriteMethod().getAnnotations());
} else if (isReadable()) {
annotations = ArrayUtils.toUnmodifiableList(property.getReadMethod().getAnnotations());
} else {
annotations = ArrayUtils.toUnmodifiableList(property.getWriteMethod().getAnnotations());
}
return annotations;
}
/**
* Returns property's annotation for the given type or {@code null} if it's not present. If the
* annotation is present on both read and write methods, the annotation on read method takes
* precedence.
*
* @param annotationType the type of the annotation to be returned
* @return property's annotation for the given type or {@code null} if it's not present
*/
@Override
public <A extends Annotation> A getAnnotation(Class<A> annotationType) {
A annotation = null;
if (isReadable()) {
annotation = property.getReadMethod().getAnnotation(annotationType);
}
if (annotation == null && isWritable()) {
annotation = property.getWriteMethod().getAnnotation(annotationType);
}
return annotation;
}
@Override
public boolean isWritable() {
return writable;
}
@Override
public boolean isReadable() {
return readable;
}
private static final String TRANSIENT = "transient";
private static boolean isTransient(FeatureDescriptor fd) {
return Boolean.TRUE.equals(fd.getValue(TRANSIENT));
}
static void addProperties(
Class<?> type, Map<String, Property> properties, boolean[] inaccessableFieldsExist) {
try {
for (PropertyDescriptor property : Introspector.getBeanInfo(type).getPropertyDescriptors()) {
Method readMethod = property.getReadMethod();
if ((readMethod == null || !readMethod.getName().equals("getClass"))
&& !isTransient(property)) {
properties.put(property.getName(), new MethodProperty(property));
}
}
} catch (IntrospectionException e) {
throw new YAMLException(e);
}
// add public fields
for (Class<?> c = type; c != null; c = c.getSuperclass()) {
for (Field field : c.getDeclaredFields()) {
int modifiers = field.getModifiers();
if (!Modifier.isStatic(modifiers) && !Modifier.isTransient(modifiers)) {
if (Modifier.isPublic(modifiers)) {
properties.put(field.getName(), new FieldProperty(field));
} else {
inaccessableFieldsExist[0] = true;
}
}
}
}
}
}

View File

@ -0,0 +1,172 @@
/**
* Copyright (c) 2008, SnakeYAML
*
* <p>Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of the License at
*
* <p>http://www.apache.org/licenses/LICENSE-2.0
*
* <p>Unless required by applicable law or agreed to in writing, software distributed under the
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.yaml.snakeyaml.introspector;
// remove once https://github.com/snakeyaml/snakeyaml/pull/12 gets integrated
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import org.yaml.snakeyaml.error.YAMLException;
import org.yaml.snakeyaml.util.PlatformFeatureDetector;
public class PropertyUtils {
private final Map<Class<?>, Map<String, Property>> propertiesCache =
new HashMap<Class<?>, Map<String, Property>>();
private final Map<Class<?>, Set<Property>> readableProperties =
new HashMap<Class<?>, Set<Property>>();
private BeanAccess beanAccess = BeanAccess.DEFAULT;
private boolean allowReadOnlyProperties = false;
private boolean skipMissingProperties = false;
private final PlatformFeatureDetector platformFeatureDetector;
public PropertyUtils() {
this(new PlatformFeatureDetector());
}
PropertyUtils(PlatformFeatureDetector platformFeatureDetector) {
this.platformFeatureDetector = platformFeatureDetector;
/*
* Android lacks much of java.beans (including the Introspector class, used here), because
* java.beans classes tend to rely on java.awt, which isn't supported in the Android SDK. That
* means we have to fall back on FIELD access only when SnakeYAML is running on the Android
* Runtime.
*/
if (platformFeatureDetector.isRunningOnAndroid()) {
beanAccess = BeanAccess.FIELD;
}
/* when running with jlink restricted JDK without java.desktop package */
try {
Class.forName("java.beans.Introspector");
} catch (ClassNotFoundException ex) {
beanAccess = BeanAccess.FIELD;
}
}
protected Map<String, Property> getPropertiesMap(Class<?> type, BeanAccess bAccess) {
if (propertiesCache.containsKey(type)) {
return propertiesCache.get(type);
}
Map<String, Property> properties = new LinkedHashMap<String, Property>();
boolean[] inaccessableFieldsExist = {false};
if (bAccess == BeanAccess.FIELD) {
for (Class<?> c = type; c != null; c = c.getSuperclass()) {
for (Field field : c.getDeclaredFields()) {
int modifiers = field.getModifiers();
if (!Modifier.isStatic(modifiers)
&& !Modifier.isTransient(modifiers)
&& !properties.containsKey(field.getName())) {
properties.put(field.getName(), new FieldProperty(field));
}
}
}
} else { // add JavaBean properties
MethodProperty.addProperties(type, properties, inaccessableFieldsExist);
}
if (properties.isEmpty() && inaccessableFieldsExist[0]) {
throw new YAMLException("No JavaBean properties found in " + type.getName());
}
propertiesCache.put(type, properties);
return properties;
}
public Set<Property> getProperties(Class<? extends Object> type) {
return getProperties(type, beanAccess);
}
public Set<Property> getProperties(Class<? extends Object> type, BeanAccess bAccess) {
if (readableProperties.containsKey(type)) {
return readableProperties.get(type);
}
Set<Property> properties = createPropertySet(type, bAccess);
readableProperties.put(type, properties);
return properties;
}
protected Set<Property> createPropertySet(Class<? extends Object> type, BeanAccess bAccess) {
Set<Property> properties = new TreeSet<Property>();
Collection<Property> props = getPropertiesMap(type, bAccess).values();
for (Property property : props) {
if (property.isReadable() && (allowReadOnlyProperties || property.isWritable())) {
properties.add(property);
}
}
return properties;
}
public Property getProperty(Class<? extends Object> type, String name) {
return getProperty(type, name, beanAccess);
}
public Property getProperty(Class<? extends Object> type, String name, BeanAccess bAccess) {
Map<String, Property> properties = getPropertiesMap(type, bAccess);
Property property = properties.get(name);
if (property == null && skipMissingProperties) {
property = new MissingProperty(name);
}
if (property == null) {
throw new YAMLException("Unable to find property '" + name + "' on class: " + type.getName());
}
return property;
}
public void setBeanAccess(BeanAccess beanAccess) {
if (platformFeatureDetector.isRunningOnAndroid() && beanAccess != BeanAccess.FIELD) {
throw new IllegalArgumentException("JVM is Android - only BeanAccess.FIELD is available");
}
if (this.beanAccess != beanAccess) {
this.beanAccess = beanAccess;
propertiesCache.clear();
readableProperties.clear();
}
}
public void setAllowReadOnlyProperties(boolean allowReadOnlyProperties) {
if (this.allowReadOnlyProperties != allowReadOnlyProperties) {
this.allowReadOnlyProperties = allowReadOnlyProperties;
readableProperties.clear();
}
}
public boolean isAllowReadOnlyProperties() {
return allowReadOnlyProperties;
}
/**
* Skip properties that are missing during deserialization of YAML to a Java object. The default
* is false.
*
* @param skipMissingProperties true if missing properties should be skipped, false otherwise.
*/
public void setSkipMissingProperties(boolean skipMissingProperties) {
if (this.skipMissingProperties != skipMissingProperties) {
this.skipMissingProperties = skipMissingProperties;
readableProperties.clear();
}
}
public boolean isSkipMissingProperties() {
return skipMissingProperties;
}
}

View File

@ -9,8 +9,13 @@ import scala.collection.immutable.Seq
/** A collection of utility methods for everything related to the GraalVM and Truffle.
*/
object GraalVM {
/** Has the user requested to use Espresso for Java interop? */
private def isEspressoMode(): Boolean =
"espresso".equals(System.getenv("ENSO_JAVA"))
// Keep in sync with graalMavenPackagesVersion in build.sbt
val version: String = "24.0.0"
private val version: String = "24.0.0"
/** The list of modules that are included in the `component` directory in engine distribution.
* When invoking the `java` command, these modules need to be put on the module-path.
@ -26,7 +31,7 @@ object GraalVM {
"org.graalvm.truffle" % "truffle-compiler" % version
)
val sdkPkgs = Seq(
private val sdkPkgs = Seq(
"org.graalvm.sdk" % "polyglot-tck" % version,
"org.graalvm.sdk" % "nativeimage" % version,
"org.graalvm.sdk" % "word" % version,
@ -34,11 +39,11 @@ object GraalVM {
"org.graalvm.sdk" % "collections" % version
)
val polyglotPkgs = Seq(
private val polyglotPkgs = Seq(
"org.graalvm.polyglot" % "polyglot" % version
)
val trufflePkgs = Seq(
private val trufflePkgs = Seq(
"org.graalvm.truffle" % "truffle-api" % version,
"org.graalvm.truffle" % "truffle-runtime" % version,
"org.graalvm.truffle" % "truffle-compiler" % version,
@ -51,35 +56,37 @@ object GraalVM {
* into engine distribution build, so we have to maintain these manually.
*/
val pythonPkgs = Seq(
"org.graalvm.python" % "python-language" % version,
"org.graalvm.python" % "python-resources" % version,
"org.bouncycastle" % "bcutil-jdk18on" % "1.76",
"org.bouncycastle" % "bcpkix-jdk18on" % "1.76",
"org.bouncycastle" % "bcprov-jdk18on" % "1.76",
"org.graalvm.llvm" % "llvm-api" % version,
"org.graalvm.truffle" % "truffle-nfi" % version,
"org.graalvm.truffle" % "truffle-nfi-libffi" % version,
"org.graalvm.regex" % "regex" % version,
"org.graalvm.tools" % "profiler-tool" % version,
"org.graalvm.shadowed" % "json" % version,
"org.graalvm.shadowed" % "icu4j" % version,
"org.graalvm.shadowed" % "xz" % version
)
private val pythonPkgs =
Seq(
"org.graalvm.python" % "python-language" % version,
"org.graalvm.python" % "python-resources" % version,
"org.bouncycastle" % "bcutil-jdk18on" % "1.76",
"org.bouncycastle" % "bcpkix-jdk18on" % "1.76",
"org.bouncycastle" % "bcprov-jdk18on" % "1.76",
"org.graalvm.llvm" % "llvm-api" % version,
"org.graalvm.truffle" % "truffle-nfi" % version,
"org.graalvm.truffle" % "truffle-nfi-libffi" % version,
"org.graalvm.regex" % "regex" % version,
"org.graalvm.tools" % "profiler-tool" % version,
"org.graalvm.shadowed" % "json" % version,
"org.graalvm.shadowed" % "icu4j" % version,
"org.graalvm.shadowed" % "xz" % version
)
val jsPkgs = Seq(
"org.graalvm.js" % "js-language" % version,
"org.graalvm.regex" % "regex" % version,
"org.graalvm.shadowed" % "icu4j" % version
)
private val jsPkgs =
Seq(
"org.graalvm.js" % "js-language" % version,
"org.graalvm.regex" % "regex" % version,
"org.graalvm.shadowed" % "icu4j" % version
)
val chromeInspectorPkgs = Seq(
private val chromeInspectorPkgs = Seq(
"org.graalvm.tools" % "chromeinspector-tool" % version,
"org.graalvm.shadowed" % "json" % version,
"org.graalvm.tools" % "profiler-tool" % version
)
val debugAdapterProtocolPkgs = Seq(
private val debugAdapterProtocolPkgs = Seq(
"org.graalvm.tools" % "dap-tool" % version
)
@ -87,19 +94,23 @@ object GraalVM {
"org.graalvm.tools" % "insight-tool" % version
)
val espressoPkgs = if ("espresso".equals(System.getenv("ENSO_JAVA"))) {
private val espressoPkgs =
Seq(
"org.graalvm.truffle" % "truffle-nfi" % version,
"org.graalvm.truffle" % "truffle-nfi-libffi" % version,
"org.graalvm.espresso" % "espresso-language" % version,
"org.graalvm.espresso" % "espresso-libs-resources-linux-amd64" % version,
"org.graalvm.espresso" % "espresso-runtime-resources-linux-amd64" % version
)
} else {
Seq()
}
val toolsPkgs = chromeInspectorPkgs ++ debugAdapterProtocolPkgs ++ insightPkgs
val langsPkgs = jsPkgs ++ pythonPkgs ++ espressoPkgs
val langsPkgs =
if (isEspressoMode()) {
espressoPkgs
} else {
jsPkgs ++ pythonPkgs
}
private val allowedJavaVendors = Seq(
"GraalVM Community",

View File

@ -8,6 +8,7 @@ import sbtassembly.AssemblyKeys.assembly
import sbtassembly.AssemblyPlugin.autoImport.assemblyOutputPath
import scala.sys.process._
import java.nio.file.Paths
object NativeImage {
@ -16,6 +17,12 @@ object NativeImage {
*/
private val includeDebugInfo: Boolean = false
lazy val smallJdk = taskKey[Option[File]]("Location of a minimal JDK")
lazy val additionalCp =
taskKey[Seq[String]](
"Additional class-path entries to be added to the native image"
)
/** List of classes that should be initialized at build time by the native image.
* Note that we strive to initialize as much classes during the native image build
* time as possible, as this reduces the time needed to start the native image.
@ -70,8 +77,6 @@ object NativeImage {
* time initialization is set to default
* @param initializeAtBuildtime a list of classes that should be initialized at
* build time.
* @param additionalCp additional class-path entries to be added to the
* native image.
* @param includeRuntime Whether `org.enso.runtime` should is included. If yes, then
* it will be passed as a module to the native-image along with other
* Graal and Truffle related modules.
@ -86,24 +91,41 @@ object NativeImage {
initializeAtRuntime: Seq[String] = Seq.empty,
initializeAtBuildtime: Seq[String] = defaultBuildTimeInitClasses,
mainClass: Option[String] = None,
additionalCp: Seq[String] = Seq(),
verbose: Boolean = false,
includeRuntime: Boolean = true
): Def.Initialize[Task[Unit]] = Def
.task {
val log = state.value.log
val javaHome = System.getProperty("java.home")
val subProjectRoot = baseDirectory.value
val nativeImagePath =
val log = state.value.log
def nativeImagePath(prefix: Path)(path: Path): Path = {
val base = path.resolve(prefix)
if (Platform.isWindows)
s"$javaHome\\bin\\native-image.cmd"
else s"$javaHome/bin/native-image"
base.resolve("native-image.cmd")
else base.resolve("native-image")
}
val (javaHome: Path, nativeImagePathResolver) =
smallJdk.value
.map(f =>
(f.toPath(), nativeImagePath(Path.of("lib", "svm", "bin")) _)
)
.filter { case (p, resolver) => resolver(p).toFile.exists() }
.getOrElse(
(
Paths.get(System.getProperty("java.home")),
nativeImagePath(Path.of("bin")) _
)
)
log.info("Native image JAVA_HOME: " + javaHome)
val subProjectRoot = baseDirectory.value
val pathToJAR =
(assembly / assemblyOutputPath).value.toPath.toAbsolutePath.normalize
if (!file(nativeImagePath).exists()) {
if (!nativeImagePathResolver(javaHome).toFile.exists()) {
log.error(
"Unexpected: Native Image component not found in the JVM distribution."
"Unexpected: Native Image component not found in the JVM distribution: " + javaHome
)
log.error("Is this a GraalVM distribution?")
log.error(
@ -184,11 +206,12 @@ object NativeImage {
)
.map(_.data.getAbsolutePath)
val auxCp = additionalCp.value
val fullCp =
if (includeRuntime) {
componentModules ++ additionalCp
componentModules ++ auxCp
} else {
ourCp.map(_.data.getAbsolutePath) ++ additionalCp
ourCp.map(_.data.getAbsolutePath) ++ auxCp
}
val cpStr = fullCp.mkString(File.pathSeparator)
log.debug("Class-path: " + cpStr)
@ -225,7 +248,7 @@ object NativeImage {
val newPath = pathParts.mkString(File.pathSeparator)
val cmd =
Seq(nativeImagePath) ++
Seq(nativeImagePathResolver(javaHome).toString) ++
verboseOpt ++
Seq("@" + argFile.toAbsolutePath.toString)

View File

@ -36,7 +36,11 @@ object StdBits {
else baseFilter
val configFilter: ConfigurationFilter =
DependencyFilter.configurationFilter(name = validConfig)
val graalVmOrgs = GraalVM.modules.map(_.organization).distinct
val graalVmOrgs = if ("espresso".equals(System.getenv("ENSO_JAVA"))) {
Seq()
} else {
GraalVM.modules.map(_.organization).distinct
}
// All graal related modules must be filtered away - they will be provided in
// module-path, and so, they must not be included in std-bits polyglot directories.
val graalModuleFilter = DependencyFilter.moduleFilter(