Skip to content
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

Bump com.ibm.icu:icu4j from 59.1 to 76.1 #5522

Closed
wants to merge 1 commit into from

Conversation

dependabot[bot]
Copy link
Contributor

@dependabot dependabot bot commented on behalf of github Oct 28, 2024

Bumps com.ibm.icu:icu4j from 59.1 to 76.1.

Release notes

Sourced from com.ibm.icu:icu4j's releases.

ICU 76.1

ICU 76 updates to Unicode 16 (blog), including new characters and scripts, emoji, collation & IDNA changes, and corresponding APIs and implementations. It also updates to CLDR 46 (beta blog) locale data with new locales, significant updates to existing locales, and various additions and corrections. For example, the CLDR and Unicode default sort orders are now very nearly the same.

Most of the java.time (Temporal) types can now be formatted directly using the existing ICU4J date/time formatting classes.

There are some new APIs to make ICU easier to use with modern C++ and Java patterns. Most of the C/C++ APIs added for this purpose are implemented as C++ header-only APIs, and usable on top of binary stable C APIs, which is a first for ICU.

The Java and C++ technology preview implementations of the (also in tech preview) CLDR MessageFormat 2.0 specification have been updated to match recent changes.

ICU 76 and CLDR 46 are major releases, including a new version of Unicode and major locale data improvements.

For details, please see https://unicode-org.github.io/icu/download/76.html.

ICU 76 RC

We are pleased to announce the release candidate for Unicode® ICU 76. It updates to Unicode 16 (blog), including new characters and scripts, emoji, collation & IDNA changes, and corresponding APIs and implementations. It also updates to CLDR 46 (beta blog) locale data with new locales, significant updates to existing locales, and various additions and corrections. For example, the CLDR and Unicode default sort orders are now very nearly the same.

Most of the java.time (Temporal) types can now be formatted directly using the existing ICU4J date/time formatting classes.

There are some new APIs to make ICU easier to use with modern C++ and Java patterns. Most of the C/C++ APIs added for this purpose are implemented as C++ header-only APIs, and usable on top of binary stable C APIs, which is a first for ICU.

The Java and C++ technology preview implementations of the (also in tech preview) CLDR MessageFormat 2.0 specification have been updated to match recent changes.

ICU 76 and CLDR 46 are major releases, including a new version of Unicode and major locale data improvements.

For details, please see https://unicode-org.github.io/icu/download/76.html.

Please test this release candidate on your platforms and report bugs and regressions by Monday, 2024-oct-21, via the icu-support mailing list, and/or please find/submit error reports.

Please do not use this release candidate in production.

The preliminary API reference documents are published on unicode-org.github.io/icu-docs/ – follow the “Dev” links there.

ICU 75.1

Unicode® ICU 75 updates to CLDR 45 (beta blog) locale data with new locales and various additions and corrections. C++ code now requires C++17 and is being made more robust.

The CLDR MessageFormat 2.0 specification is now in technology preview, together with a corresponding update of the ICU4J (Java) tech preview and a new ICU4C (C++) tech preview.

For details, please see https://icu.unicode.org/download/75.

ICU 75 RC

We are pleased to announce the release candidate for Unicode® ICU 75. It updates to CLDR 45 (alpha blog) locale data with new locales and various additions and corrections. C++ code now requires C++17 and is being made more robust.

The CLDR MessageFormat 2.0 specification is now in technology preview, together with a corresponding update of the ICU4J (Java) tech preview and a new ICU4C (C++) tech preview.

For details, please see https://icu.unicode.org/download/75.

Please test this release candidate on your platforms and report bugs and regressions by Monday, 2024-apr-15, via the icu-support mailing list, and/or please find/submit error reports.

Please do not use this release candidate in production.

... (truncated)

Commits

Most Recent Ignore Conditions Applied to This Pull Request
Dependency Name Ignore Conditions
com.ibm.icu:icu4j [>= 75.a, < 76]

Dependabot compatibility score

You can trigger a rebase of this PR by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Note
Automatic rebases have been disabled on this pull request as it has been open for over 30 days.

@dependabot dependabot bot requested a review from a team as a code owner October 28, 2024 03:21
@dependabot dependabot bot added dependencies Pull requests that update a dependency file java Pull requests that update Java code labels Oct 28, 2024
@duncdrum duncdrum self-assigned this Dec 13, 2024
@duncdrum
Copy link
Contributor

duncdrum commented Dec 13, 2024

<test output="text">
is the failing test

curious this was bumped to 60.2 in df10f50 but the pom wasn't updated?

@line-o
Copy link
Member

line-o commented Dec 13, 2024

It is very likely that the returned sequence of available collations changes because of additional ones added through icu4j

@line-o
Copy link
Member

line-o commented Dec 13, 2024

Ugh ... so we are either depending on 60.2 or 59.1 ? Am I reading this right?

@line-o
Copy link
Member

line-o commented Dec 13, 2024

@dependabot rebase

Bumps [com.ibm.icu:icu4j](https://github.com/unicode-org/icu) from 59.1 to 76.1.
- [Release notes](https://github.com/unicode-org/icu/releases)
- [Commits](https://github.com/unicode-org/icu/commits)

---
updated-dependencies:
- dependency-name: com.ibm.icu:icu4j
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
@dependabot dependabot bot force-pushed the dependabot/maven/com.ibm.icu-icu4j-76.1 branch from c9cc365 to c539162 Compare December 13, 2024 13:58
@adamretter
Copy link
Contributor

The version of ICU cannot be upgraded as it is needed by Lucene 4.11.4, and the version of Lucene in eXist-db cannot be upgraded as it stands.

@adamretter
Copy link
Contributor

@dependabot ignore this dependency

Copy link
Contributor Author

dependabot bot commented on behalf of github Dec 13, 2024

Sorry, only users with push access can use that command.

@line-o
Copy link
Member

line-o commented Dec 13, 2024

Just upgrading to 60.2 already reveals a breaking change (collations are no longer two character codes but with proper locales).

[ERROR] Tests run: 61, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 13.45 s <<< FAILURE! -- in xquery.util.UtilTests
[ERROR] xmlts.Util tests.util:collations -- Time elapsed: 0.292 s <<< FAILURE!
org.junit.ComparisonFailure: expected:<af[ am ar as az be bg bn bo bs bs ca chr cs cy da de de-AT dsb dz ee el en en-US en-US eo es et fa fa-AF fi fil fo fr fr-CA ga gl gu ha haw he hi hr hsb hu hy id ig is it ja ka kk kl km kn ko kok ky lb lkt ln lo lt lv mk ml mn mr ms mt my nb ne nl nn om or pa pl ps pt ro ru se si sk sl smn sq sr sr sv sw ta te th to tr ug uk ur uz vi wae yi yo zh zh ]zu> but was:<af[amarasazbebgbnbobsbscachrcscydadede-ATdsbdzeeelenen-USen-USeoesetfafa-AFfifilfofrfr-CAgaglguhahawhehihrhsbhuhyidigisitjakakkklkmknkokokkylblktlnloltlvmkmlmnmrmsmtmynbnenlnnomorpaplpsptrorusesiskslsmnsqsrsrsvswtatethtotrugukuruzviwaewoyiyozhzh]zu>

Copy link
Member

@line-o line-o left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Upgrading ICU4j to anything later than 59.1 needs changes to exist-db codebase.

@line-o
Copy link
Member

line-o commented Dec 13, 2024

Upgrading to 59.2 works without having to change anything.

@line-o
Copy link
Member

line-o commented Dec 13, 2024

When ignoring the first failing test the underlying issue is revealed when updating to a later version of ICU4j

[ERROR] Tests run: 157, Failures: 0, Errors: 4, Skipped: 14, Time elapsed: 8.574 s <<< FAILURE! -- in xquery.lucene.LuceneTests
[ERROR] LuceneTests.setUp -- Time elapsed: 0.215 s <<< ERROR!
org.exist.xquery.XPathException: java:java.lang.ExceptionInInitializerError
	at org.exist.indexing.lucene.analyzers.NoDiacriticsStandardAnalyzer.createComponents(NoDiacriticsStandardAnalyzer.java:149)
	at org.apache.lucene.analysis.AnalyzerWrapper.createComponents(AnalyzerWrapper.java:113)
	at org.apache.lucene.analysis.Analyzer.tokenStream(Analyzer.java:182)
	at org.apache.lucene.document.Field.tokenStream(Field.java:554)
	at org.apache.lucene.index.DefaultIndexingChain$PerField.invert(DefaultIndexingChain.java:611)
	at org.apache.lucene.index.DefaultIndexingChain.processField(DefaultIndexingChain.java:359)
	at org.apache.lucene.index.DefaultIndexingChain.processDocument(DefaultIndexingChain.java:318)
	at org.apache.lucene.index.DocumentsWriterPerThread.updateDocument(DocumentsWriterPerThread.java:241)
	at org.apache.lucene.index.DocumentsWriter.updateDocument(DocumentsWriter.java:465)
	at org.apache.lucene.index.IndexWriter.updateDocument(IndexWriter.java:1526)
	at org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:1252)
	at org.exist.indexing.lucene.LuceneIndexWorker.write(LuceneIndexWorker.java:1430)

[ERROR] LuceneTests.setUp -- Time elapsed: 0.074 s <<< ERROR!
org.exist.xquery.XPathException: java:java.lang.NoClassDefFoundError Could not initialize class org.apache.lucene.analysis.icu.ICUFoldingFilter
	at org.exist.indexing.lucene.analyzers.NoDiacriticsStandardAnalyzer.createComponents(NoDiacriticsStandardAnalyzer.java:149)
	at org.apache.lucene.analysis.AnalyzerWrapper.createComponents(AnalyzerWrapper.java:113)
	at org.apache.lucene.analysis.Analyzer.tokenStream(Analyzer.java:182)
	at org.apache.lucene.document.Field.tokenStream(Field.java:554)
	at org.apache.lucene.index.DefaultIndexingChain$PerField.invert(DefaultIndexingChain.java:611)
	at org.apache.lucene.index.DefaultIndexingChain.processField(DefaultIndexingChain.java:359)
	at org.apache.lucene.index.DefaultIndexingChain.processDocument(DefaultIndexingChain.java:318)
	at org.apache.lucene.index.DocumentsWriterPerThread.updateDocument(DocumentsWriterPerThread.java:241)
	at org.apache.lucene.index.DocumentsWriter.updateDocument(DocumentsWriter.java:465)
	at org.apache.lucene.index.IndexWriter.updateDocument(IndexWriter.java:1526)
	at org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:1252)
	at org.exist.indexing.lucene.LuceneIndexWorker.write(LuceneIndexWorker.java:1430)

[ERROR] LuceneTests.setUp -- Time elapsed: 0.070 s <<< ERROR!
org.exist.xquery.XPathException: java:java.lang.NoClassDefFoundError Could not initialize class org.apache.lucene.analysis.icu.ICUFoldingFilter
	at org.exist.indexing.lucene.analyzers.NoDiacriticsStandardAnalyzer.createComponents(NoDiacriticsStandardAnalyzer.java:149)
	at org.apache.lucene.analysis.AnalyzerWrapper.createComponents(AnalyzerWrapper.java:113)
	at org.apache.lucene.analysis.Analyzer.tokenStream(Analyzer.java:182)
	at org.apache.lucene.document.Field.tokenStream(Field.java:554)
	at org.apache.lucene.index.DefaultIndexingChain$PerField.invert(DefaultIndexingChain.java:611)
	at org.apache.lucene.index.DefaultIndexingChain.processField(DefaultIndexingChain.java:359)
	at org.apache.lucene.index.DefaultIndexingChain.processDocument(DefaultIndexingChain.java:318)
	at org.apache.lucene.index.DocumentsWriterPerThread.updateDocument(DocumentsWriterPerThread.java:241)
	at org.apache.lucene.index.DocumentsWriter.updateDocument(DocumentsWriter.java:465)
	at org.apache.lucene.index.IndexWriter.updateDocument(IndexWriter.java:1526)
	at org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:1252)
	at org.exist.indexing.lucene.LuceneIndexWorker.write(LuceneIndexWorker.java:1430)

[ERROR] xquery.lucene.LuceneTests -- Time elapsed: 8.574 s <<< ERROR!
java.lang.NullPointerException: Cannot invoke "org.exist.dom.persistent.NodeHandle.getInternalAddress()" because "node" is null
	at org.exist.storage.NativeBroker$2.start(NativeBroker.java:1889)
	at org.exist.storage.dom.DOMTransaction.run(DOMTransaction.java:98)
	at org.exist.storage.NativeBroker.removeCollectionsDocumentNodes(NativeBroker.java:1893)
	at org.exist.storage.NativeBroker._removeCollection(NativeBroker.java:1837)
	at org.exist.storage.NativeBroker.removeCollection(NativeBroker.java:1753)
	at org.exist.xmldb.LocalCollectionManagementService.lambda$2(LocalCollectionManagementService.java:112)
	at org.exist.xmldb.function.LocalXmldbCollectionFunction.apply(LocalXmldbCollectionFunction.java:50)
	at org.exist.xmldb.AbstractLocal.lambda$6(AbstractLocal.java:218)
	at org.exist.xmldb.AbstractLocal.lambda$5(AbstractLocal.java:152)
	at org.exist.xmldb.function.LocalXmldbFunction.apply(LocalXmldbFunction.java:48)
	at org.exist.xmldb.AbstractLocal.withDb(AbstractLocal.java:265)
	at org.exist.xmldb.AbstractLocal.lambda$4(AbstractLocal.java:152)
	at org.exist.xmldb.LocalCollectionManagementService.removeCollection(LocalCollectionManagementService.java:112)
	at org.exist.xmldb.LocalCollectionManagementService.removeCollection(LocalCollectionManagementService.java:103)
	at org.exist.xquery.functions.xmldb.XMLDBRemove.evalWithCollection(XMLDBRemove.java:92)
	at org.exist.xquery.functions.xmldb.XMLDBAbstractCollectionManipulator.eval(XMLDBAbstractCollectionManipulator.java:169)
	at org.exist.xquery.BasicFunction.eval(BasicFunction.java:73)
	at org.exist.xquery.InternalFunctionCall.eval(InternalFunctionCall.java:62)
	at org.exist.xquery.DebuggableExpression.eval(DebuggableExpression.java:58)
	at org.exist.xquery.ConditionalExpression.eval(ConditionalExpression.java:100)
	at org.exist.xquery.PathExpr.eval(PathExpr.java:280)
	at org.exist.xquery.TypeswitchExpression.eval(TypeswitchExpression.java:110)
	at org.exist.xquery.UserDefinedFunction.eval(UserDefinedFunction.java:161)
	at org.exist.xquery.FunctionCall.evalFunction(FunctionCall.java:289)
	at org.exist.xquery.FunctionCall.eval(FunctionCall.java:207)
	at org.exist.xquery.DebuggableExpression.eval(DebuggableExpression.java:58)
	at org.exist.xquery.ForExpr.processItem(ForExpr.java:246)
	at org.exist.xquery.ForExpr.eval(ForExpr.java:183)
	at org.exist.xquery.UserDefinedFunction.eval(UserDefinedFunction.java:161)
	at org.exist.xquery.FunctionCall.evalFunction(FunctionCall.java:289)
	at org.exist.xquery.FunctionCall.eval(FunctionCall.java:207)
	at org.exist.xquery.LetExpr.eval(LetExpr.java:99)
	at org.exist.xquery.LetExpr.eval(LetExpr.java:111)
	at org.exist.xquery.LetExpr.eval(LetExpr.java:111)
	at org.exist.xquery.LetExpr.eval(LetExpr.java:111)
	at org.exist.xquery.LetExpr.eval(LetExpr.java:111)
	at org.exist.xquery.UserDefinedFunction.eval(UserDefinedFunction.java:161)
	at org.exist.xquery.FunctionCall.evalFunction(FunctionCall.java:289)
	at org.exist.xquery.FunctionCall.eval(FunctionCall.java:207)
	at org.exist.xquery.DebuggableExpression.eval(DebuggableExpression.java:58)
	at org.exist.xquery.LetExpr.eval(LetExpr.java:111)
	at org.exist.xquery.PathExpr.eval(PathExpr.java:280)
	at org.exist.xquery.XQuery.execute(XQuery.java:451)
	at org.exist.xquery.XQuery.execute(XQuery.java:355)
	at org.exist.xquery.XQuery.execute(XQuery.java:342)
	at org.exist.xquery.XQuery.execute(XQuery.java:337)
	at org.exist.test.runner.AbstractTestRunner.executeQuery(AbstractTestRunner.java:110)
	at org.exist.test.runner.XMLTestRunner.run(XMLTestRunner.java:207)
	at org.exist.test.runner.XSuite.runChild(XSuite.java:250)
	at org.exist.test.runner.XSuite.runChild(XSuite.java:1)
	at org.exist.test.runner.XSuite$RunXSuiteBefores.evaluate(XSuite.java:294)
	at org.exist.test.runner.XSuite$RunXSuiteAfters.evaluate(XSuite.java:315)

@duncdrum
Copy link
Contributor

@line-o 59.2 seems good. I still don't understand which version is in use currently.

@adamretter ah yes Lucene that makes sense. Do you expect the v60 jars to be actually used or should the version declared in the POM be used?

@adamretter
Copy link
Contributor

@duncdrum the version needs to stay the same as it is in 6.x.x for nothing to break

@reinhapa
Copy link
Member

@duncdrum the version needs to stay the same as it is in 6.x.x for nothing to break

@adamretter am I correct to assume that updating Lucene would also be an option in order to be ready to use the latest ICU version (but may not be that easy) right?

@adamretter
Copy link
Contributor

@reinhapa Yes that is mostly the reason. Updating Lucene in eXist-db is very difficult as the version eXist-db uses is very old. Also I rewrote parts of eXist-db previously to make it meet the XQuery spec for collations. So you would also need to test any change to ICU4j against the XQTS to make sure there are no regressions in that area too.

@reinhapa
Copy link
Member

Yes that is mostly the reason

@adamretter thanks for the explanation

@dizzzz
Copy link
Member

dizzzz commented Jan 12, 2025

@dependabot ignore this dependency

@dependabot dependabot bot closed this Jan 12, 2025
Copy link
Contributor Author

dependabot bot commented on behalf of github Jan 12, 2025

OK, I won't notify you about com.ibm.icu:icu4j again, unless you re-open this PR.

@dependabot dependabot bot deleted the dependabot/maven/com.ibm.icu-icu4j-76.1 branch January 12, 2025 15:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dependencies Pull requests that update a dependency file java Pull requests that update Java code
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants