-
Notifications
You must be signed in to change notification settings - Fork 323
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Package libraries Java code as Java Modules #10714
base: develop
Are you sure you want to change the base?
Conversation
ba4db96
to
873c418
Compare
engine/runtime/src/main/java/org/enso/interpreter/runtime/EnsoContext.java
Outdated
Show resolved
Hide resolved
Question for @radeusgd - we seem to get the encapsulation with all the consequences. There is dozen of failures:
I can think of ways to fix the tests, but some failures show intended cross-library usage we don't have any alternative yet. |
I imagine we can come up with some workarounds, although that may not be trivial. I'm worried the most about the read autodetection - does it look like the classpath separation breaks the SPI? How can we fix that? Alternatively, as suggested in #7082 (title Re-exporting), could we provide a way for a library to opt-in to being able to access modules of another lib? e.g. |
My plan was: enso$ git diff distribution/ test/Base_Tests/src/Data/Text/Utils_Spec.enso
diff --git distribution/lib/Standard/Base/0.0.0-dev/src/Internal/Extra_Imports.enso distribution/lib/Standard/Base/0.0.0-dev/src/Internal/Extra_Imports.enso
index 7771401cf4..c42ee36ec6 100644
--- distribution/lib/Standard/Base/0.0.0-dev/src/Internal/Extra_Imports.enso
+++ distribution/lib/Standard/Base/0.0.0-dev/src/Internal/Extra_Imports.enso
@@ -9,7 +9,7 @@ private
polyglot java import java.io.PrintStream
# needed by Util_Spec
-polyglot java import org.enso.base.text.CaseFoldedString
+polyglot java import org.enso.base.text.CaseFoldedString as JCaseFoldedString
polyglot java import org.enso.base.text.CaseFoldedString.Grapheme
# needed by Comparator_Spec:
@@ -29,3 +29,5 @@ polyglot java import java.util.function.Function
polyglot java import java.lang.Thread
polyglot java import java.lang.Thread.State
polyglot java import java.lang.Float
+
+CaseFoldedString = JCaseFoldedString
diff --git test/Base_Tests/src/Data/Text/Utils_Spec.enso test/Base_Tests/src/Data/Text/Utils_Spec.enso
index d0b987bea2..7d8d006ff7 100644
--- test/Base_Tests/src/Data/Text/Utils_Spec.enso
+++ test/Base_Tests/src/Data/Text/Utils_Spec.enso
@@ -1,7 +1,7 @@
from Standard.Base import all
polyglot java import org.enso.base.Text_Utils
-polyglot java import org.enso.base.text.CaseFoldedString
+import Standard.Base.Internal.Extra_Imports.CaseFoldedString
polyglot java import com.ibm.icu.text.BreakIterator
from Standard.Test import all but that requires us to run with
I guess we cannot have both: Run with |
The next test failure to solve - |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This seems like a remnant after merging with develop. On develop, the whole runtime-fat-jar
directory was deleted.
@@ -8,3 +8,6 @@ authors: | |||
maintainers: | |||
- name: Enso Team | |||
email: contact@enso.org | |||
requires: | |||
- Standard.Base |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am running into issues.
- if
Standard.AWS
has its own isolated layer, then it complains that it cannot findorg.enso.base.file_system.FileSystemSPI
- but if I connect
Standard.AWS
layer withStandard.Base
, then it complains Jackson is there twice!
It is hard to have both - isolation and connection between the layers.
Addressed by 405e88d
@@ -8,3 +8,6 @@ authors: | |||
maintainers: | |||
- name: Enso Team | |||
email: contact@enso.org | |||
requires: | |||
- Standard.Base | |||
- Standard.Database |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
With 57e64e0 I am getting the following when running test/AWS_Tests
Execution finished with an error: java.lang.module.ResolutionException: Modules aws.java.sdk.sts and aws.java.sdk.redshift export package com.amazonaws.auth.policy.actions to module software.amazon.awssdk.metrics
at <java> java.base/java.lang.module.Resolver.resolveFail(Resolver.java:900)
at <java> java.base/java.lang.module.Resolver.failTwoSuppliers(Resolver.java:814)
at <java> java.base/java.lang.module.Resolver.checkExportSuppliers(Resolver.java:735)
at <java> java.base/java.lang.module.Resolver.finish(Resolver.java:380)
at <java> java.base/java.lang.module.Configuration.<init>(Configuration.java:139)
at <java> java.base/java.lang.module.Configuration.resolveAndBind(Configuration.java:493)
at <java> org.enso.runtime/org.enso.interpreter.runtime.EnsoClassPath.create(EnsoClassPath.java:62)
We are not the only ones seeing this problem: aws/aws-sdk-java#1658 (comment)
…ng all the available ModuleLayers
Currently solving problem with JDBC drivers:
The problem is that Fixed by 3194f6d |
…istIndex reported in Table_Tests
Most of the sbt:enso> runEngineDistribution --run test/Table_Tests should.recognise.a.SQLite.database.file|should.recognise.a.sqlite.file.by.extension.for.writing|should.connect.to.a.db.file
[FAILED] SQLite_Format should allow connecting to SQLite files: [0/3, 287ms]
- [FAILED] should recognise a SQLite database file [166ms]
Reason: Expected a value of type Standard.Database.Connection.SQLite_Format.SQLite_Format but got a value of type Standard.Base.Nothing.Nothing instead (at /home/devel/NetBeansProjects/enso/enso.ide/test/Table_Tests/src/Database/SQLite_Spec.enso:422:13-80).
- [FAILED] should recognise a sqlite file by extension for writing [52ms]
Reason: Expected a value of type Standard.Database.Connection.SQLite_Format.SQLite_Format but got a value of type Standard.Base.Nothing.Nothing instead (at /home/devel/NetBeansProjects/enso/enso.ide/test/Table_Tests/src/Database/SQLite_Spec.enso:425:13-114).
- [FAILED] should connect to a db file [68ms]
Reason: An unexpected dataflow error ((Unsupported_Type (File_Format_Metadata.Value '/home/devel/NetBeansProjects/enso/enso.ide/test/Table_Tests/data/transient/sqlite_test.db' 'sqlite_test.db' '.db' File.read_first_bytes[File.enso:732-734] self=org.enso.interpreter.runtime.data.EnsoFile@5248c05a n=_ Nothing))) has been matched (at /home/devel/NetBeansProjects/enso/enso.ide/test/Table_Tests/src/Database/SQLite_Spec.enso:450:13-50).
at <enso> Auto_Detect.read<arg-1>(/home/devel/NetBeansProjects/enso/enso.ide/built-distribution/enso-engine-0.0.0-dev-linux-amd64/enso-0.0.0-dev/lib/Standard/Base/0.0.0-dev/src/System/File_Format.enso:57:35-80)
0 tests succeeded.
3 tests failed.
0 tests skipped.
0 groups skipped. When there is a resolution problem, report normal exception, don't crash the JVM:
|
Pull Request Description
Implements #7082 by creating a module layer per library. Removes the obsolete add_to_class_path concept.
Important Notes
Checklist
Please ensure that the following checklist has been satisfied before submitting the PR:
Scala,
Java,
TypeScript,
and
Rust
style guides. In case you are using a language not listed above, follow the Rust style guide.