Skip to content

deps: float ICU-23262 patch for icu78 - #64678

Merged
Renegade334 merged 1 commit into
nodejs:mainfrom
Renegade334:icu78-iso8601-dates
Aug 12, 2026
Merged

deps: float ICU-23262 patch for icu78#64678
Renegade334 merged 1 commit into
nodejs:mainfrom
Renegade334:icu78-iso8601-dates

Conversation

@Renegade334

@Renegade334 Renegade334 commented Jul 22, 2026

Copy link
Copy Markdown
Member

Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262

This fixes a bug in ICU 78 whereby absent era data causes libicu to bail out of loading subsequent locale data, including month names. The associated bug is attached to the ICU 79 milestone, so this should be fixed in the next release.

The iso8601 calendar does not contain era names in CLDR 48, but due to an initialization quirk, other fields end up missing in DateTimeFormat output. This is now a much more noticeable issue since certain Temporal objects can only be DateTimeFormat-ed with the iso8601 calendar, and we have had multiple complaints regarding this.

Firefox and Chromium are floating ephemeral patches to the datafile to add the missing era data (https://crrev.com/c/7843156) to bypass this bug. We cannot patch the locale data in our build setup as we use the precompiled ICU data from the sources package, but we can patch out the initialization bug so that the other iso8601 calendar data is intact.

$ JS='new Intl.DateTimeFormat("en-u-ca-iso8601", { dateStyle: "long" }).format()'

$ node -pe "$JS"
2026  22

$ out/Release/node -pe "$JS"
2026 July 22

Patch:

diff -u deps/icu-small/source/i18n/dtfmtsym.cpp tools/icu/patches/78/source/i18n/dtfmtsym.cpp
--- deps/icu-small/source/i18n/dtfmtsym.cpp
+++ tools/icu/patches/78/source/i18n/dtfmtsym.cpp
@@ -2420,7 +2420,7 @@
     initEras(&fEraNames, fEraNamesCount, calendarSink, buildResourcePath(path, gErasTag, gNamesWideTag, status),
             ctebPtr, gNamesWideTag, maxEra, status);
     if (status == U_MISSING_RESOURCE_ERROR) { // Workaround because eras/wide was omitted from CLDR 1.3
-        status = oldStatus;
+        status = U_ZERO_ERROR;
         assignArray(fEraNames, fEraNamesCount, fEras, fErasCount);
     }
     // current ICU4J falls back to abbreviated if narrow eras are missing, so we will too
@@ -2428,7 +2428,7 @@
     initEras(&fNarrowEras, fNarrowErasCount, calendarSink, buildResourcePath(path, gErasTag, gNamesNarrowTag, status),
             ctebPtr, gNamesNarrowTag, maxEra, status);
     if (status == U_MISSING_RESOURCE_ERROR) { // Workaround because eras/wide was omitted from CLDR 1.3
-        status = oldStatus;
+        status = U_ZERO_ERROR;
         assignArray(fNarrowEras, fNarrowErasCount, fEras, fErasCount);
     }

Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
@nodejs-github-bot nodejs-github-bot added i18n-api Issues and PRs related to the i18n implementation. icu Issues and PRs related to the ICU dependency. needs-ci PRs that need a full CI run. tools Issues and PRs related to the tools directory. labels Jul 22, 2026
@Renegade334 Renegade334 added lts-watch-v24.x PRs that may need to be released in v24.x review wanted PRs that need reviews. labels Jul 22, 2026

@ovflowd ovflowd left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Having a temporary patch for this sounds good.

@Renegade334 Renegade334 added the request-ci Add this label to start a Jenkins CI on a PR. label Aug 11, 2026
@github-actions github-actions Bot removed the request-ci Add this label to start a Jenkins CI on a PR. label Aug 11, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@Renegade334 Renegade334 added the commit-queue Add this label to land a pull request using GitHub Actions. label Aug 12, 2026
@nodejs-github-bot nodejs-github-bot added commit-queue-failed An error occurred while landing this pull request using GitHub Actions. and removed commit-queue Add this label to land a pull request using GitHub Actions. labels Aug 12, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator
Commit Queue failed
- Loading data for nodejs/node/pull/64678
✔  Done loading data for nodejs/node/pull/64678
----------------------------------- PR info ------------------------------------
Title      deps: float ICU-23262 patch for icu78 (#64678)
Author     René <contact.9a5d6388@renegade334.me.uk> (@Renegade334)
Branch     Renegade334:icu78-iso8601-dates -> nodejs:main
Labels     tools, i18n-api, needs-ci, review wanted, commit-queue, icu, lts-watch-v24.x
Commits    1
 - deps: float ICU-23262 patch for icu78
Committers 1
 - Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: https://github.com/nodejs/node/pull/64678
Fixes: https://github.com/nodejs/node/issues/63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
------------------------------ Generated metadata ------------------------------
PR-URL: https://github.com/nodejs/node/pull/64678
Fixes: https://github.com/nodejs/node/issues/63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
--------------------------------------------------------------------------------
   ℹ  This PR was created on Wed, 22 Jul 2026 16:21:05 GMT
   ✔  Approvals: 2
   ✔  - Claudio Wunder (@ovflowd): https://github.com/nodejs/node/pull/64678#pullrequestreview-4910237836
   ✔  - James M Snell (@jasnell) (TSC): https://github.com/nodejs/node/pull/64678#pullrequestreview-4910813233
   ✘  GitHub CI is still running
   ℹ  Last Full PR CI on 2026-08-12T18:27:40Z: https://ci.nodejs.org/job/node-test-pull-request/75801/
- Querying data for job/node-test-pull-request/75801/
✔  Build data downloaded
   ✔  Last Jenkins CI successful
--------------------------------------------------------------------------------
   ✔  Aborted `git node land` session in /home/runner/work/node/node/.ncu
https://github.com/nodejs/node/actions/runs/31640517938

@Renegade334
Renegade334 merged commit 167768f into nodejs:main Aug 12, 2026
86 of 87 checks passed
@Renegade334

Copy link
Copy Markdown
Member Author

Landed in 167768f

@Renegade334
Renegade334 deleted the icu78-iso8601-dates branch August 12, 2026 21:13
aduh95 pushed a commit that referenced this pull request Aug 13, 2026
Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: #64678
Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

commit-queue-failed An error occurred while landing this pull request using GitHub Actions. i18n-api Issues and PRs related to the i18n implementation. icu Issues and PRs related to the ICU dependency. lts-watch-v24.x PRs that may need to be released in v24.x needs-ci PRs that need a full CI run. review wanted PRs that need reviews. tools Issues and PRs related to the tools directory.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Missing month in Intl.DateTimeFormat output when using calendar: 'iso8601' in Node v24.13.0 and later

4 participants