Skip to content

fix: update ICU to 2a51536df (tzdata 2026e, CharString overflow fix) - #55335

Merged
jkleinsc merged 3 commits into
44-x-yfrom
claude/icu-tzdata-2026e-44
Oct 26, 2026
Merged

jkleinsc merged 3 commits into
44-x-yfrom
claude/icu-tzdata-2026e-44

Conversation

@claude

@claude claude Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Requested by Samuel Attard · Slack thread

Description of Change

Electron 44 ships ICU tzdata 2026d, where Europe/London and Europe/Dublin map only to the British and Irish metazones. Those have no English winter name, so now that daylight saving time has ended, their long time zone name formats as GMT+00:00 instead of Greenwich Mean Time.

This replaces the tzdata patch with a single update_icu_to_2a51536df.patch that brings third_party/icu from the pinned d578f2e8b up to upstream chromium/deps/icu 2a51536df. That picks up tzdata 2026c, 2026d and 2026e, the CharString signed int32 overflow fix (83ffaeb85), the Windows time zone mapping update (2a51536df), and dropping the unused nfkc_scf.nrm from the data bundle. There are no build file changes. The resulting tree matches upstream except for prebuilt data Electron doesn't use: the other platforms' icudtl.dat files, common/icudtb.dat, tzres/*.res, and upstream's patches/charstr.patch record, whose blank context lines fail our trailing whitespace lint. common/icudtl.dat is upstream's, byte for byte. The patch can be dropped once Chromium's DEPS ICU revision reaches 2a51536df. 45-x-y and later get this through Chromium.

I applied the patch to a clean d578f2e8b checkout with git am --3way, and script/lint.js --patches passes. With the patched icudtl.dat in the v44.9.3 linux-x64 release, London and Dublin show Greenwich Mean Time in winter (summer names unchanged), en-GB's short winter name goes from GMT+0 to GMT, and normalization, case-folding regexes, collation, segmentation and date formatting give the same results as before. The CharString change is C++ and is only covered by CI's build.

Checklist


Generated by Claude Code

Release Notes

Notes: Fixed Europe/London and Europe/Dublin time zone names showing as "GMT+00:00" in winter by updating ICU to tzdata 2026e.

ICU's tzdata 2026d maps Europe/London and Europe/Dublin only to the
British and Irish metazones, which have no English winter name, so in
winter their long time zone name is formatted as "GMT+00:00" instead of
"Greenwich Mean Time". Patch in upstream ICU's 2026e time zone data
(chromium/deps/icu 19dfb44a6), which maps both zones to the GMT metazone.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01VGRC3p3rtPhZRNCrtv1U2q
@claude
claude Bot requested a review from a team as a code owner October 26, 2026 01:48
@claude claude Bot added backport-check-skip Skip trop's backport validity checking semver/patch backwards-compatible bug fixes labels Oct 26, 2026

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Nothing blocking. The comments below are optional suggestions. There is no need to push a fix for them before merging.

Comment thread patches/icu/.patches Resolved
Squash update_tzdata_to_2026d.patch and update_tzdata_to_2026e.patch into
one update_tzdata_to_2026e.patch, so there is a single tzdata patch whose
removal condition points at upstream ICU 19dfb44a6. The resulting
third_party/icu tree, including common/icudtl.dat, is byte-identical to
the one the two stacked patches produced.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01VGRC3p3rtPhZRNCrtv1U2q

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I reviewed this from a standalone clone and didn't find any bugs. The updated push folds 2026e into a single patch, which settles my earlier point about stacking. The patch also replaces icudtl.dat with a binary delta that I can't decode here, so a human look is still worthwhile.

What was reviewed:

  • .patches now lists only update_tzdata_to_2026e.patch, and the old 2026d patch is deleted. The commit message says the patch can be dropped once DEPS includes 19dfb44a6.
  • All five index base hashes in the new patch, icudtl.dat (9655a2e…) included, match the old 2026d patch. So the new patch applies to pristine upstream ICU and not on top of 2026d.
  • The new patch's metaZones.txt diff leaves Europe/London and Europe/Dublin untouched. That fits the stated fix: the old 2026d patch had removed their GMT metazone entries, and 2026e puts them back, so measured from the base the only remaining change is the two Africa Europe_Western additions.
Extended reasoning...

The change swaps one ICU patch for another on the 44-x-y release branch. It touches README.chromium, three source/data/misc text files and a GIT binary delta of common/icudtl.dat, and no security-sensitive Electron code. The text-file diffs are consistent with the description: the timezoneTypes.txt result is identical to the 2026d patch's, and the zoneinfo64 header now reads 2026e. The deciding fact is that correctness rests on roughly 850 lines of base85 binary delta that this standalone clone cannot decode or check against the pinned ICU checkout. The PR also says it was validated by swapping the file into a release build, not by a CI build.

@claude claude Bot changed the title fix: update ICU tzdata to 2026e for London and Dublin time zone names fix: update ICU to 2a51536df (tzdata 2026e, CharString overflow fix) Oct 26, 2026
@release-clerk

release-clerk Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

Release note looks good now.

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Code review found no issues

No high-confidence issues detected in this change.

@claude

claude Bot commented Oct 26, 2026

Copy link
Copy Markdown
Contributor Author

linux-x64-asan / test (linux, 1) failed only on [vitest-pool]: Timeout starting electron runner. with all 1014 tests passing. That's the intermittent vitest-pool worker-start failure also seen on 43-x-y push runs without any PR, so it isn't caused by this ICU change; no fix exists yet. I'll re-run the failed job once the run finishes.


Generated by Claude Code

@MarshallOfSound
MarshallOfSound enabled auto-merge (squash) October 26, 2026 08:14
@jkleinsc
jkleinsc disabled auto-merge October 26, 2026 13:49
@jkleinsc
jkleinsc merged commit ab4c55c into 44-x-y Oct 26, 2026
113 of 115 checks passed
@jkleinsc
jkleinsc deleted the claude/icu-tzdata-2026e-44 branch October 26, 2026 13:50
@release-clerk

release-clerk Bot commented Oct 26, 2026

Copy link
Copy Markdown

Release Notes Persisted

Fixed Europe/London and Europe/Dublin time zone names showing as "GMT+00:00" in winter by updating ICU to tzdata 2026e.

renovate Bot added a commit to cigaleapp/cigale that referenced this pull request Nov 8, 2026
##### [v44.10.1](https://github.com/electron/electron/releases/tag/v44.10.1)

### Release Notes for v44.10.1

#### Fixes

- Fixed DevTools "Save" prompting for a location every time instead of reusing the previously chosen file. [#55484](electron/electron#55484)
  - Fixed DevTools "Save As" using the old file and Linux cancels treated as saved.
- Fixed `webContents.adjustSelection()` ignoring the `end` option. [#55461](electron/electron#55461) <sup>(Also in [45](electron/electron#55462), [46](https://github.com/electron/electron/pull/55463))</sup>

#### Performance Improvements

- Improved performance of `net.fetch()` requests without a body. [#55445](electron/electron#55445) <sup>(Also in [43](electron/electron#55447), [45](electron/electron#55446), [46](https://github.com/electron/electron/pull/55444))</sup>
- Improved performance of repeated `net.fetch()` calls for `file:` URLs. [#55458](electron/electron#55458) <sup>(Also in [45](electron/electron#55459), [46](https://github.com/electron/electron/pull/55457))</sup>

#### Other Changes

- Backported fixes from upstream Chromium, Dawn, Skia and V8. [#55492](electron/electron#55492)
##### [v44.10.0](https://github.com/electron/electron/releases/tag/v44.10.0)

### Release Notes for v44.10.0

#### Features

- Added filtering options to `session.registerPreloadScript` - `matches`, `excludeMatches`, `includeGlobs`, `excludeGlobs`, `matchOriginAsFallback`. [#55182](electron/electron#55182) <sup>(Also in [45](https://github.com/electron/electron/pull/55181))</sup>

#### Fixes

- Fixed a crash on Linux when a D-Bus method call was made on a disconnected bus. [#55290](electron/electron#55290) <sup>(Also in [45](electron/electron#55292), [46](https://github.com/electron/electron/pull/55289))</sup>
- Fixed a main process crash when `onSendHeaders` observed Blob uploads. [#55168](electron/electron#55168) <sup>(Also in [45](https://github.com/electron/electron/pull/55169))</sup>
- Fixed `app.getLoginItemSettings()` not finding login items on Windows when the executable path contains spaces. [#55207](electron/electron#55207) <sup>(Also in [45](https://github.com/electron/electron/pull/54419))</sup>
- Fixed Europe/London and Europe/Dublin time zone names showing as "GMT+00:00" in winter by updating ICU to tzdata 2026e. [#55335](electron/electron#55335)
- Fixed File System Access blocklist gaps for `.git/hooks` writes and hypervisor UNC shares. [#55330](electron/electron#55330)
- Fixed handling of malformed asar archives whose size fields do not match the file length. [#55176](electron/electron#55176) <sup>(Also in [43](electron/electron#55179), [45](https://github.com/electron/electron/pull/55175))</sup>
- Fixed inconsistent handling of asar archive paths between the main process and child processes. [#55183](electron/electron#55183) <sup>(Also in [43](electron/electron#55185), [45](https://github.com/electron/electron/pull/55184))</sup>
- Fixed `Menu.popup()` on macOS sometimes not showing a menu after another closed. [#55325](electron/electron#55325) <sup>(Also in [45](electron/electron#55326), [46](https://github.com/electron/electron/pull/55324))</sup>
- Fixed MV3 extension events not arriving to background service workers. [#55152](electron/electron#55152) <sup>(Also in [43](electron/electron#55153), [45](https://github.com/electron/electron/pull/55154))</sup>
- Fixed paste hanging indefinitely on Linux X11 until the app was restarted. [#55327](electron/electron#55327)
- Fixed `protocol.registerSource` schemes not applying the same fetch rules as `protocol.handle` schemes. [#55177](electron/electron#55177) <sup>(Also in [45](https://github.com/electron/electron/pull/55178))</sup>
- Fixed `utilityProcess` not emitting an `exit` event when the app quit while the process was still launching. [#55273](electron/electron#55273) <sup>(Also in [43](electron/electron#55272), [45](electron/electron#55274), [46](https://github.com/electron/electron/pull/55264))</sup>

#### Other Changes

- Updated Chromium to 152.0.7977.169. [#55033](electron/electron#55033)
- Updated Node.js to v24.22.1. [#55162](electron/electron#55162)
##### [v44.9.3](https://github.com/electron/electron/releases/tag/v44.9.3)

### Release Notes for v44.9.3

#### Other Changes

- Backported fixes from upstream ANGLE, Chromium, PDFium, Skia and V8. [#55149](electron/electron#55149)
##### [v44.9.2](https://github.com/electron/electron/releases/tag/v44.9.2)

### Release Notes for v44.9.2
##### [v44.9.1](https://github.com/electron/electron/releases/tag/v44.9.1)

### Release Notes for v44.9.1

> \[!NOTE]
> This release contains the fix for <GHSA-jr5w-w6x2-84p9>, the mitigation for compromised eMudhra intermediate certificates
##### [v44.9.0](https://github.com/electron/electron/releases/tag/v44.9.0)

### Release Notes for v44.9.0

#### Features

- Added app shims on macOS to show windows under another app's Dock icon. [#55073](electron/electron#55073) <sup>(Also in [45](https://github.com/electron/electron/pull/55072))</sup>

#### Fixes

- Fixed link-opened windows not using the opener's session and `webPreferences`. [#55048](electron/electron#55048) <sup>(Also in [42](electron/electron#55050), [43](electron/electron#55049), [45](https://github.com/electron/electron/pull/55051))</sup>
- Fixed `setCertificateVerifyProc` occasionally not being applied to a request issued concurrently with the first request to a host. [#55046](electron/electron#55046) <sup>(Also in [42](electron/electron#55054), [43](electron/electron#55047), [45](https://github.com/electron/electron/pull/55045))</sup>
##### [v44.8.0](https://github.com/electron/electron/releases/tag/v44.8.0)

### Release Notes for v44.8.0

#### Features

- Added support for `Notification` action buttons on Linux. [#54890](electron/electron#54890) <sup>(Also in [45](https://github.com/electron/electron/pull/54889))</sup>

#### Fixes

- Fixed mouse cursor missing over native dialogs in certain scenarios on Windows. [#54987](electron/electron#54987)
- Fixed `net.fetch` and `session.fetch` failing permanently with `net::ERR_FAILED` after the Network Service process restarts. [#54909](electron/electron#54909) <sup>(Also in [42](electron/electron#54925), [43](electron/electron#54908), [45](https://github.com/electron/electron/pull/54910))</sup>
- Fixed `utilityProcess` dropping messages posted with `process.parentPort.postMessage()` right before the process exits. [#54960](electron/electron#54960) <sup>(Also in [42](electron/electron#55000), [43](electron/electron#54962), [45](https://github.com/electron/electron/pull/54956))</sup>
- Fixed `win.isFullScreen()` being stale in fullscreen events on Windows. [#55009](electron/electron#55009) <sup>(Also in [45](https://github.com/electron/electron/pull/55008))</sup>

#### Other Changes

- Backported fixes from upstream Chromium and V8. [#55034](electron/electron#55034)
- Updated Chromium to 152.0.7977.167. [#54928](electron/electron#54928)
- Updated Node.js to v24.22.0. [#55004](electron/electron#55004)
##### [v44.7.2](https://github.com/electron/electron/releases/tag/v44.7.2)

### Release Notes for v44.7.2

#### Fixes

- Fixed an issue where clicks posted to a background app were dropped on macOS. [#54819](electron/electron#54819) <sup>(Also in [45](https://github.com/electron/electron/pull/54818))</sup>
- Fixed interrupted macOS updates leaving a broken app behind. [#54844](electron/electron#54844) <sup>(Also in [45](https://github.com/electron/electron/pull/54843))</sup>

#### Other Changes

- Backported fixes from upstream ANGLE, Chromium, PDFium and V8. [#54898](electron/electron#54898)

#### Documentation

- Documentation changes: [#54880](electron/electron#54880)
##### [v44.7.1](https://github.com/electron/electron/releases/tag/v44.7.1)

### Release Notes for v44.7.1

#### Fixes

- Fixed a crash when starting without an available display server on Linux. [#54794](electron/electron#54794) <sup>(Also in [45](https://github.com/electron/electron/pull/54781))</sup>
- Fixed a Linux crash creating a window with a menu bar when GTK failed to load. [#54859](electron/electron#54859) <sup>(Also in [45](https://github.com/electron/electron/pull/54846))</sup>
- Fixed a `WebContentsView` that was removed with `removeChildView()` and re-added with `addChildView()` staying hidden behind its sibling views on Linux. [#54798](electron/electron#54798)
- Fixed asar archives in non-ASCII folders failing to load on Linux. [#54849](electron/electron#54849) <sup>(Also in [45](https://github.com/electron/electron/pull/54848))</sup>
- Fixed renderer crashes during garbage collection inside ShadowRealms. [#54865](electron/electron#54865) <sup>(Also in [45](https://github.com/electron/electron/pull/54864))</sup>

#### Other Changes

- Refactored mouse forwarding on Windows to fix `setIgnoreMouseEvents(true, { forward: true })` related issues. [#54802](electron/electron#54802) <sup>(Also in [45](https://github.com/electron/electron/pull/54803))</sup>
- Updated Chromium to 152.0.7977.149. [#54085](electron/electron#54085)
##### [v44.7.0](https://github.com/electron/electron/releases/tag/v44.7.0)

### Release Notes for v44.7.0

#### Features

- The macOS `autoUpdater` now streams update downloads to disk, resumes an interrupted download on the next check instead of starting over, and applies a binary delta when the update feed offers one for the running version. [#54204](electron/electron#54204)

#### Fixes

- Fixed an uncatchable TypeError in `net.fetch` when receiving response headers with non-ASCII characters, and preserved multiple Set-Cookie headers. [#54672](electron/electron#54672)

#### Other Changes

- Backported fixes from upstream ANGLE, Chromium, Dawn, fontconfig, Skia, V8 and WebRTC. [#54666](electron/electron#54666)
- Backported fixes from upstream ANGLE, Chromium, Skia, V8 and WebRTC. [#54657](electron/electron#54657)
##### [v44.6.0](https://github.com/electron/electron/releases/tag/v44.6.0)

### Release Notes for v44.6.0

#### Features

- Added the experimental `protocol.registerSource()` to serve a custom scheme from directories on disk without a JavaScript handler. [#54522](electron/electron#54522) <sup>(Also in [45](https://github.com/electron/electron/pull/54521))</sup>

#### Fixes

- Fixed a crash on launch on macOS when the system refused to register the app for sleep/wake notifications. [#54596](electron/electron#54596)
- Fixed a crash on `navigator.usb.requestDevice()` in in-memory sessions. [#54616](electron/electron#54616) <sup>(Also in [45](https://github.com/electron/electron/pull/54615))</sup>
- Fixed `webview.findInPage()` hanging when the host page also has an iframe. [#54586](electron/electron#54586) <sup>(Also in [43](electron/electron#54584), [45](https://github.com/electron/electron/pull/54585))</sup>
- Updated time zone data to tzdata 2026d, including British Columbia's move to permanent UTC-7. [#54623](electron/electron#54623)

#### Documentation

- Documentation changes: [#54589](electron/electron#54589)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport-check-skip Skip trop's backport validity checking semver/patch backwards-compatible bug fixes

Projects

No open projects
Status: No status

Development

Successfully merging this pull request may close these issues.

3 participants