)]}'
{
  "log": [
    {
      "commit": "5c860e9c719601577438a12fc686015e666e4629",
      "tree": "159dedecb003f84d35ce4fd229b5766fe0975e9a",
      "parents": [
        "96296840c9234404c4c38888de63f92b4b3e7fa0"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Wed Oct 28 18:03:23 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 28 18:03:23 2026"
      },
      "message": "TZDB 2026f (#8650)\n\nNo diff.\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "96296840c9234404c4c38888de63f92b4b3e7fa0",
      "tree": "513eb48ac757f7ae3f2d04c356ab6c40088deab1",
      "parents": [
        "83cd8891a6705f24aa5a05f07390bdb6dc12dd5d"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Wed Oct 28 13:06:23 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 28 13:06:23 2026"
      },
      "message": "Add `DifferenceProvider`, alt example (#8646)\n\n#8645 https://github.com/unicode-org/icu4x/issues/1225\n\n\n## Changelog\n\n`icu_provider_adapters`\n* Add `DifferenceProvider`"
    },
    {
      "commit": "83cd8891a6705f24aa5a05f07390bdb6dc12dd5d",
      "tree": "ba670b2fceb93f2fe4b3dd13fa396ad2822966c0",
      "parents": [
        "00fc4c94a3cd0bbd457af7223120e4a905d503e4"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Tue Oct 27 19:04:40 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 19:04:40 2026"
      },
      "message": "Port `Char16TrieBuilder` to pure Rust and use it in datagen (#8549)\n\nThis is similar to #8540, except that we didn\u0027t actually have a\n`Char16TrieBuilder` before. Like that PR, the builder is completely vibe\ncoded and not reviewed; round-trip tests have been added, and datagen\nshows no diff.\n\n## Changelog\n\n`icu_collections`:\n* Add `Char16TrieBuilder`"
    },
    {
      "commit": "00fc4c94a3cd0bbd457af7223120e4a905d503e4",
      "tree": "ad20760a20f9a7d9f842eae02654c35ff6d4f848",
      "parents": [
        "b794a537a0c2f933c0c94740729011d3a795c6a5"
      ],
      "author": {
        "name": "Younies Mahmoud",
        "email": "younies.mahmoud@gmail.com",
        "time": "Tue Oct 27 15:32:59 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 15:32:59 2026"
      },
      "message": "fix(currency): Fall back to ISO code for compact currency formatting when symbol is empty (#8489)"
    },
    {
      "commit": "b794a537a0c2f933c0c94740729011d3a795c6a5",
      "tree": "40243cf3e90bc2aa3976582699a95e0bc8e26d5c",
      "parents": [
        "46d685cbfb49af38bdf6c90cf28d40495f49bb38"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Tue Oct 27 15:29:43 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 15:29:43 2026"
      },
      "message": "Update and improve date-picker tutorials (#8643)"
    },
    {
      "commit": "46d685cbfb49af38bdf6c90cf28d40495f49bb38",
      "tree": "645dbfcb1ff9abc99dab6bff53c007401ddc7429",
      "parents": [
        "876cd0a981745528ca7752ecf5233d9329a7d5df"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Oct 27 15:15:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 15:15:21 2026"
      },
      "message": "Bump fast-uri from 3.1.7 to 3.1.9 in /tools/web-demo (#8644)\n\nBumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.7 to\n3.1.9.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/fastify/fast-uri/releases\"\u003efast-uri\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.1.9\u003c/h2\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003eThis security release fixes four URI parsing and normalization\nvulnerabilities in fast-uri 3.x. Applications that process untrusted URI\ninput should upgrade to v3.1.9.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eMedium — URI scheme spoofing through percent-encoded\nschemes\u003c/strong\u003e (\u003ca\nhref\u003d\"https://github.com/fastify/fast-uri/security/advisories/GHSA-w74x-v6f9-j3xg\"\u003eGHSA-w74x-v6f9-j3xg\u003c/a\u003e,\nCVE-2026-110306): percent-encoded scheme input is now rejected instead\nof being decoded into a live scheme.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eMedium — Host confusion during domain-host\ncanonicalization\u003c/strong\u003e (\u003ca\nhref\u003d\"https://github.com/fastify/fast-uri/security/advisories/GHSA-wjr9-j795-jxcr\"\u003eGHSA-wjr9-j795-jxcr\u003c/a\u003e,\nCVE-2026-110180): malformed domain hosts containing ambiguous delimiters\nor stripped control characters are now rejected instead of being\nsilently rewritten.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eLow — Incorrect relative-reference normalization\u003c/strong\u003e\n(\u003ca\nhref\u003d\"https://github.com/fastify/fast-uri/security/advisories/GHSA-xhq7-xmqj-769h\"\u003eGHSA-xhq7-xmqj-769h\u003c/a\u003e,\nCVE-2026-110095): dot-segment removal now preserves the resolution\nsemantics of relative references.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eLow — Scheme injection in suffix references\u003c/strong\u003e (\u003ca\nhref\u003d\"https://github.com/fastify/fast-uri/security/advisories/GHSA-333x-w4r6-6crp\"\u003eGHSA-333x-w4r6-6crp\u003c/a\u003e,\nCVE-2026-110725): first-segment colons in path-only suffix references\nare now escaped so the output is not reparsed as a scheme.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eUpgrade with:\u003c/p\u003e\n\u003cpre lang\u003d\"sh\"\u003e\u003ccode\u003enpm install fast-uri@3.1.9\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThanks to \u003ca href\u003d\"https://github.com/zekth\"\u003e\u003ccode\u003e@​zekth\u003c/code\u003e\u003c/a\u003e\nfor reporting the scheme, host, and relative-reference issues, and to \u003ca\nhref\u003d\"https://github.com/UlisesGascon\"\u003e\u003ccode\u003e@​UlisesGascon\u003c/code\u003e\u003c/a\u003e\nfor finding the suffix-reference issue and reviewing the\nremediations.\u003c/p\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: enable trusted publishing releases (v3.x) by \u003ca\nhref\u003d\"https://github.com/mcollina\"\u003e\u003ccode\u003e@​mcollina\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/fastify/fast-uri/pull/229\"\u003efastify/fast-uri#229\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/fastify/fast-uri/compare/v3.1.8...v3.1.9\"\u003ehttps://github.com/fastify/fast-uri/compare/v3.1.8...v3.1.9\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.1.8\u003c/h2\u003e\n\u003ch2\u003e⚠️ Security Warning\u003c/h2\u003e\n\u003cp\u003eThis security release fixes the following medium-severity security\nadvisory:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/fastify/fast-uri/security/advisories/GHSA-hrr3-gc8f-f4qj\"\u003eGHSA-hrr3-gc8f-f4qj\u003c/a\u003e\n— inconsistent host case normalization via percent-encoded octets\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eUsers of the v3.x release line should upgrade to v3.1.8.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/fastify/fast-uri/compare/v3.1.7...v3.1.8\"\u003ehttps://github.com/fastify/fast-uri/compare/v3.1.7...v3.1.8\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/fastify/fast-uri/commit/0def70338a0fa2f12a10c83ae8eafc2139ae9a07\"\u003e\u003ccode\u003e0def703\u003c/code\u003e\u003c/a\u003e\nBumped v3.1.9\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/fastify/fast-uri/commit/a1d0da2f5c703244027c1b204c1aebd0516da338\"\u003e\u003ccode\u003ea1d0da2\u003c/code\u003e\u003c/a\u003e\ntest: generate only relative path references\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/fastify/fast-uri/commit/9eb8759a9825c046f57f7f695f1944bc39b88abd\"\u003e\u003ccode\u003e9eb8759\u003c/code\u003e\u003c/a\u003e\nfix: preserve relative paths in suffix and relative resolution\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/fastify/fast-uri/commit/54c30f75891b74e5a4393b44be9ea7ba43dd1e4b\"\u003e\u003ccode\u003e54c30f7\u003c/code\u003e\u003c/a\u003e\ndocs: note suffix-reference authority ambiguity\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/fastify/fast-uri/commit/39e6493c1356f30a0084171627eb266786e1620e\"\u003e\u003ccode\u003e39e6493\u003c/code\u003e\u003c/a\u003e\nfix: escape a first-segment colon in suffix references\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/fastify/fast-uri/commit/745183c1d9d98d113bed8a57bb1c9ceaf0147b7a\"\u003e\u003ccode\u003e745183c\u003c/code\u003e\u003c/a\u003e\ntest: cover first-segment colon in suffix references\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/fastify/fast-uri/commit/ddfc6a51122dfce0365655f04479fc3adb7f6b3c\"\u003e\u003ccode\u003eddfc6a5\u003c/code\u003e\u003c/a\u003e\nfix(SEC-03): reject non reg-name characters in domain hosts\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/fastify/fast-uri/commit/d86a8d29f45187819dac2d4fe171c35e3e488264\"\u003e\u003ccode\u003ed86a8d2\u003c/code\u003e\u003c/a\u003e\nfix: keep a colon-first segment behind \u0026quot;./\u0026quot; in relative\nnormalization\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/fastify/fast-uri/commit/eb483b5da2580bdecb8af644bbfee878d5424850\"\u003e\u003ccode\u003eeb483b5\u003c/code\u003e\u003c/a\u003e\ntest: cover colon-first relative references in normalization\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/fastify/fast-uri/commit/b110a3571c37dfcf9d1c72ce2e2e178c78d1a424\"\u003e\u003ccode\u003eb110a35\u003c/code\u003e\u003c/a\u003e\nfix(SEC-02): preserve meaning of relative references during\nnormalization\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/fastify/fast-uri/compare/v3.1.7...v3.1.9\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by \u003ca\nhref\u003d\"https://www.npmjs.com/~GitHub%20Actions\"\u003eGitHub Actions\u003c/a\u003e, a new\nreleaser for fast-uri since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dfast-uri\u0026package-manager\u003dnpm_and_yarn\u0026previous-version\u003d3.1.7\u0026new-version\u003d3.1.9)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts\npage](https://github.com/unicode-org/icu4x/network/alerts).\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "876cd0a981745528ca7752ecf5233d9329a7d5df",
      "tree": "b8612d477f67e29e1c7f902e6f9f8922c5e2051d",
      "parents": [
        "41c76d50c08e2de05e507d01a06da750dc9aa785"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Mon Oct 26 16:16:50 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 16:16:50 2026"
      },
      "message": "Add French tier coverage test for LanguageIdentifierDisplayName (#8619)\n\nCo-authored-by: Gemini \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "41c76d50c08e2de05e507d01a06da750dc9aa785",
      "tree": "1f6f970c4e39a82ff9bbd910dd6df7b7b6728c61",
      "parents": [
        "51f138436f50f8110f854252f9a506ccfe06ef1e"
      ],
      "author": {
        "name": "Manish Goregaokar",
        "email": "manishsmail@gmail.com",
        "time": "Fri Oct 23 21:44:24 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 21:44:24 2026"
      },
      "message": "Normalize und to single family in DataLocaleFamily::try_from_utf8 (#8641)\n\nAll the DataLocaleFamily methods treat und specially, always mapping it\nto a `DataLocaleFamily::single`, since otherwise it would contain every\nsupported locale.\n\n\nhttps://github.com/unicode-org/icu4x/blob/51f138436f50f8110f854252f9a506ccfe06ef1e/provider/export/src/locale_family.rs#L59-L62\n\nThis isn\u0027t currently being done in `DataLocaleFamily::try_from_utf8`,\ncaused by #5043.\n\n\n\n\n\u003cdetails\u003e\u003csummary\u003eMore verbose LLM analysis\u003c/summary\u003e\n\n`DataLocaleFamily::{with_descendants, without_descendants,\nwithout_ancestors}` all document and enforce that the root `und` locale\n(where `locale.is_unknown()` is true) is treated specially and behaves\nlike `DataLocaleFamily::single(und)`.\n\n\nBecause every CLDR locale\u0027s fallback chain terminates at `und`, allowing\n`und` to have `include_descendants: true` in `requested_families` causes\n`select_locales_for_marker` to include every supported locale in CLDR as\na descendant of `und`.\n\nWhen PR #5043 moved the `if locale.is_unknown()` normalization out of\n`select_locales_for_marker` and into the `DataLocaleFamily` constructor\nmethods, `FromStr` / `DataLocaleFamily::try_from_utf8` was left\nconstructing `DataLocaleFamily` directly with\n`DataLocaleFamilyAnnotations` instead of calling those constructors. As\na result, `\"und\".parse::\u003cDataLocaleFamily\u003e()` and\n`\"%und\".parse::\u003cDataLocaleFamily\u003e()` set `include_descendants: true` on\n`Some(und)` (exporting all of CLDR), and\n`\"^und\".parse::\u003cDataLocaleFamily\u003e()` diverged from\n`DataLocaleFamily::without_descendants(und)`.\n\nUpdate `DataLocaleFamily::try_from_utf8` to delegate to\n`Self::{without_descendants, without_ancestors, single,\nwith_descendants}` so that parsed locale families uphold the same `und`\nnormalization invariant as the programmatic constructors.\n\n\u003c/details\u003e\n\n## Changelog\n\n\nicu_provider_export: Normalize und to a \"single\" family in\nDataLocaleFamily::try_from_utf8"
    },
    {
      "commit": "51f138436f50f8110f854252f9a506ccfe06ef1e",
      "tree": "feb6c5b1d02193a1ceca995afc976b33d0517ed8",
      "parents": [
        "aa671d569a248cad057cc7dcfec8786dca6182ed"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Thu Oct 22 12:57:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 12:57:04 2026"
      },
      "message": "Bump Dart (#8636)\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "aa671d569a248cad057cc7dcfec8786dca6182ed",
      "tree": "aecce5af049973e5737038f052c089e7d48b41be",
      "parents": [
        "2afd436cced83fef0eb2402d05f0133961c7b7e6"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Thu Oct 22 12:56:23 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 12:56:23 2026"
      },
      "message": "Bump NPM (#8637)\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "2afd436cced83fef0eb2402d05f0133961c7b7e6",
      "tree": "9d983e1fabd63d56f55da69f184a3f1fff950168",
      "parents": [
        "6d7ba7667170e46a1b82fd5e3b27ea5536c4c26b"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Thu Oct 22 11:10:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 11:10:08 2026"
      },
      "message": "Rebuild artifacts on workflow_dispatch (#8638)\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "6d7ba7667170e46a1b82fd5e3b27ea5536c4c26b",
      "tree": "3e756822ae46f97b689d21a642dbfd701b277ea1",
      "parents": [
        "031d9e89f6a3fd26a14491e090729d46094328fd"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Thu Oct 22 09:17:54 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 09:17:54 2026"
      },
      "message": "Update libc (#8635)\n\n0.2.190 contains a breakage, which breaks macOS FFI builds.\n\nhttps://github.com/rust-lang/libc/issues/5601\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "031d9e89f6a3fd26a14491e090729d46094328fd",
      "tree": "09134758a00950e8edb04d35dd3f0d19283a0ec2",
      "parents": [
        "f73862ffb252df3379771e629ae22f96c3a39905"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Thu Oct 22 08:46:28 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 08:46:28 2026"
      },
      "message": "Consolidate fieldbag changelog (#8634)\n\nThe module is new, which implies that everything inside the module is\nnew.\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "f73862ffb252df3379771e629ae22f96c3a39905",
      "tree": "0fdea5f613bfd0db639befb85134b8ed09334259",
      "parents": [
        "b625e985473cf629595ab6877876e8accc704880"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Thu Oct 22 08:27:37 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 08:27:37 2026"
      },
      "message": "Update changelog (#8633)\n\n#8604 \n\n## Changelog\n\nN/A"
    },
    {
      "commit": "b625e985473cf629595ab6877876e8accc704880",
      "tree": "cd5af2733a44a230bddbd295ce70d5aaddb3388a",
      "parents": [
        "2d204cd014a692f0e03e7c34134beb3e754d78ef"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Thu Oct 22 07:57:06 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 07:57:06 2026"
      },
      "message": "Don\u0027t break inside grapheme clusters in the dictionary segmenter (#8611)\n\nDictionary matches at the end of a trie path were accepted without\nchecking for a grapheme cluster boundary, and unmatched segments ended\nafter the character that failed the trie lookup. Both could leave a\ncombining mark (vowel sign or tone mark) as its own segment, e.g.\nตามที|่ for ตาม|ที่.\n\nPart of #8599\n\n## Changelog\n\n`icu_segmenter`\n* Fix a bug in dictionary segmentation"
    },
    {
      "commit": "2d204cd014a692f0e03e7c34134beb3e754d78ef",
      "tree": "8a016b221cd0398beca31ebf774df934efa32243",
      "parents": [
        "6acbe82406789774be24b7cc0b28704eedc28aac"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Thu Oct 22 07:27:37 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 07:27:37 2026"
      },
      "message": "Final CLDR 49 data (#8632)\n\n#8604 \n\n## Changelog\n\nN/A"
    },
    {
      "commit": "6acbe82406789774be24b7cc0b28704eedc28aac",
      "tree": "a9142c834376d61744813164cad197da8736ec5b",
      "parents": [
        "747356078891d513c1f731320e3d0e1ee9912e33"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 22 06:16:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 06:16:04 2026"
      },
      "message": "Bump source-map-js from 1.2.1 to 1.2.2 in /tools/web-demo (#8567)\n\nBumps [source-map-js](https://github.com/7rulnik/source-map-js) from\n1.2.1 to 1.2.2.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/7rulnik/source-map-js/releases\"\u003esource-map-js\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix crash when executing in browser with CSP script-src that don\u0027t\npermit unsafe-eval (\u003ca\nhref\u003d\"https://redirect.github.com/7rulnik/source-map-js/pull/29\"\u003e#29\u003c/a\u003e)\n\u003ca href\u003d\"https://github.com/xfournet\"\u003e\u003ccode\u003e@​xfournet\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix denial of service from malicious indexed source maps\n(CVE-2026-93749) (\u003ca\nhref\u003d\"https://redirect.github.com/7rulnik/source-map-js/pull/79\"\u003e#79\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eReported by \u003ca\nhref\u003d\"https://github.com/waydeshi\"\u003e\u003ccode\u003e@​waydeshi\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/7rulnik/source-map-js/issues/76\"\u003e#76\u003c/a\u003e.\nA fix was also proposed by \u003ca\nhref\u003d\"https://github.com/aniebiet\"\u003e\u003ccode\u003e@​aniebiet\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/7rulnik/source-map-js/pull/78\"\u003e#78\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/7rulnik/source-map-js/blob/main/CHANGELOG.md\"\u003esource-map-js\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.2.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix crash when executing in browser with CSP script-src that don\u0027t\npermit unsafe-eval (\u003ca\nhref\u003d\"https://redirect.github.com/7rulnik/source-map-js/pull/29\"\u003e#29\u003c/a\u003e)\n\u003ca href\u003d\"https://github.com/xfournet\"\u003e\u003ccode\u003e@​xfournet\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix denial of service from malicious indexed source maps\n(CVE-2026-93749) (\u003ca\nhref\u003d\"https://redirect.github.com/7rulnik/source-map-js/pull/79\"\u003e#79\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eReported by \u003ca\nhref\u003d\"https://github.com/waydeshi\"\u003e\u003ccode\u003e@​waydeshi\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/7rulnik/source-map-js/issues/76\"\u003e#76\u003c/a\u003e.\nA fix was also proposed by \u003ca\nhref\u003d\"https://github.com/aniebiet\"\u003e\u003ccode\u003e@​aniebiet\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/7rulnik/source-map-js/pull/78\"\u003e#78\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/7rulnik/source-map-js/commit/0a1d334fd1e55a47df97fcd60a7915d46df3b08a\"\u003e\u003ccode\u003e0a1d334\u003c/code\u003e\u003c/a\u003e\n1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/7rulnik/source-map-js/commit/4c6fa26d77419bd8e48ec92844866cce7d9ae739\"\u003e\u003ccode\u003e4c6fa26\u003c/code\u003e\u003c/a\u003e\nUpdate changelog\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/7rulnik/source-map-js/commit/cf7658058ceeaa8619d5ae0ec90be6905209d016\"\u003e\u003ccode\u003ecf76580\u003c/code\u003e\u003c/a\u003e\nFix denial of service from malicious indexed source maps\n(CVE-2026-93749) (\u003ca\nhref\u003d\"https://redirect.github.com/7rulnik/source-map-js/issues/79\"\u003e#79\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/7rulnik/source-map-js/commit/7899a86615c630f4fc220273ff9fe2e8e49a56df\"\u003e\u003ccode\u003e7899a86\u003c/code\u003e\u003c/a\u003e\nFix crash when executing browser with CSP script-src that don\u0027t permit\nunsafe...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/7rulnik/source-map-js/compare/v1.2.1...v1.2.2\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dsource-map-js\u0026package-manager\u003dnpm_and_yarn\u0026previous-version\u003d1.2.1\u0026new-version\u003d1.2.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts\npage](https://github.com/unicode-org/icu4x/network/alerts).\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "747356078891d513c1f731320e3d0e1ee9912e33",
      "tree": "c65bf57865c32dc2679946f364d1112433c953bf",
      "parents": [
        "e4568a4c0c9b91f2696deecd308bc3e9c24119a4"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Wed Oct 21 11:27:00 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 11:27:00 2026"
      },
      "message": "Bump versions for 2.4 (#8629)"
    },
    {
      "commit": "e4568a4c0c9b91f2696deecd308bc3e9c24119a4",
      "tree": "a21dd0fa679c5f53e5e23268a7eaae9ef47b698c",
      "parents": [
        "d0adf6e9901c43d452fa80845b7f42c43a84bd13"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Wed Oct 21 10:55:53 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 10:55:53 2026"
      },
      "message": "Update `rustls-webpki` dependencies (#8630)\n\nA CA certificate has been compromised, and we need to update `ureq`s\ndependencies.\n\nhttps://emudhra.we-have-a-problem.com/\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "d0adf6e9901c43d452fa80845b7f42c43a84bd13",
      "tree": "955ac8a9eed68a104adbef49df486edd5f1391a5",
      "parents": [
        "5600ae1ad0f59b07e1f36a7a042aa466d0a00a41"
      ],
      "author": {
        "name": "Manish Goregaokar",
        "email": "manishsmail@gmail.com",
        "time": "Tue Oct 20 21:02:25 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 21:02:25 2026"
      },
      "message": "Format normalizer tests (#8628)\n\nFix rustfmt failure on main from\n5600ae1ad0f59b07e1f36a7a042aa466d0a00a41.\n\nUsing the opportunity to write a changelog entry for the GHSA-merged\nissue\n\n\nhttps://github.com/unicode-org/icu4x/security/advisories/GHSA-3jjw-63vg-v3hh\n\n\n## Changelog\n\nicu_normalizer: Fix soundness bug around `split_normalized_utf8`,\n`normalize_utf8`."
    },
    {
      "commit": "5600ae1ad0f59b07e1f36a7a042aa466d0a00a41",
      "tree": "ce57e97501697f1ebe0f9f896f48a8c578161885",
      "parents": [
        "8880a0d73c33f00b6b500d2a2ad3fe0fb65c1bde"
      ],
      "author": {
        "name": "Manish Goregaokar",
        "email": "manishsmail@gmail.com",
        "time": "Tue Oct 20 19:32:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 19:32:51 2026"
      },
      "message": "Merge commit from fork\n\n* agent-driven: Fix unsound split_normalized_utf8 and normalize_utf8 on ill-formed input\n\nIsNormalizedSinkUtf8::write_char previously compared emitted characters\nagainst a lossy decoding of the input, so an ill-formed sequence matched\nthe U+FFFD that the normalizer emitted in its place. Those bytes then\nended up in the prefix that split_normalized_utf8 passed to\nfrom_utf8_unchecked, and normalize_utf8 returned that prefix as\nCow::Borrowed.\n\nUse ErrorReportingUtf8Chars in IsNormalizedSinkUtf8::write_char so that\nill-formed UTF-8 sequences are rejected rather than matched as U+FFFD.\n\nCo-authored-by: Mrmaxmeier \u003cMrmaxmeier@gmail.com\u003e\nCo-authored-by: Henri Sivonen \u003chsivonen@hsivonen.fi\u003e\n\n* agent-driven: Fix split_normalized_utf16 and normalize_utf16 on unpaired surrogates\n\nIsNormalizedSinkUtf16::write_char previously decoded self.expect with\nlossy UTF-16 iteration, so an unpaired surrogate matched the U+FFFD\nemitted by the normalizer. As a result, split_normalized_utf16 included\nunpaired surrogates in the normalized prefix, and normalize_utf16\nreturned Cow::Borrowed containing unpaired surrogates instead of\nreplacing them with U+FFFD.\n\nUse ErrorReportingUtf16Chars in IsNormalizedSinkUtf16::write_char so\nthat unpaired surrogates are rejected rather than matched as U+FFFD.\n\nCo-authored-by: Henri Sivonen \u003chsivonen@hsivonen.fi\u003e\n\n* agent-driven: Validate U+FFFD trie value in normalizer constructors\n\nThe UTF-8 normalization fast paths in normalize_utf8_to rely on U+FFFD\nhaving NON_ROUND_TRIP_MARKER set in the decomposition trie so that UTF-8\ndecoding errors (which yield U+FFFD) fail the passthrough check before\npassing slices to str::from_utf8_unchecked. Validate this invariant when\nloading DecompositionData in try_new_nfd_unstable, try_new_nfkd_unstable,\nand try_new_uts46_decomposed_unstable.\n\n---------\n\nCo-authored-by: Mrmaxmeier \u003cMrmaxmeier@gmail.com\u003e\nCo-authored-by: Henri Sivonen \u003chsivonen@hsivonen.fi\u003e"
    },
    {
      "commit": "8880a0d73c33f00b6b500d2a2ad3fe0fb65c1bde",
      "tree": "5fcf76eadc04fbb671a3ea6929bec1a5522ee4cf",
      "parents": [
        "3b405833c4f4d61ffcbc3fb166cc8634881bcd93"
      ],
      "author": {
        "name": "Manish Goregaokar",
        "email": "manishsmail@gmail.com",
        "time": "Tue Oct 20 16:37:03 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 16:37:03 2026"
      },
      "message": "Use DiplomatWrite16 to support normalizing utf16-to-utf16 (#8595)\n\nWe now have the ability to \"write\" utf16 data to e.g. a `std::u16string`\n\nOne issue: this is helpful but not perfect for Chromium/V8 until\nhttps://github.com/unicode-org/icu4x/issues/8594 is resolved. Should we\nwait for that? It would be nice to have this in the next release but I\ndon\u0027t wish to rush things.\n\n\nIf this works we can add it to other APIs that write large strings.\n\n## Changelog\n\nicu_capi: Add utf-16 writing APIs for Normalizer"
    },
    {
      "commit": "3b405833c4f4d61ffcbc3fb166cc8634881bcd93",
      "tree": "24b7288f84138aa5b21ffb3a47633db9decb52ab",
      "parents": [
        "e078031999870d4f263635c319a79cb19543ccfc"
      ],
      "author": {
        "name": "Manish Goregaokar",
        "email": "manishsmail@gmail.com",
        "time": "Tue Oct 20 16:35:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 16:35:30 2026"
      },
      "message": "Fix ixdtf annotation and timezone parsing with Cursor::next_if (#8623)\n\nFixes https://github.com/unicode-org/icu4x/issues/8620\n\nProgress on https://github.com/unicode-org/icu4x/issues/8622\n\n\nThis introduces `Cursor::next_if`, whcih is better architecture than\nnext-and-check (buggy) or peek-and-advance (prone to messing up), see\nhttps://github.com/unicode-org/icu4x/issues/8622.\n\nThis is not all of the improvements I plan here, but I wanted to make\nthe bugfix a separate PR from the refactors.\n\n## Changelog\n\nixdtf: Fix validation of annotation and timezone segments around"
    },
    {
      "commit": "e078031999870d4f263635c319a79cb19543ccfc",
      "tree": "9531b58fa870c3a0ff024f974aea0037ea32f11b",
      "parents": [
        "61172fdf332e9fcd1d89a036811406e466b17f5d"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Fri Oct 16 16:00:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 16:00:21 2026"
      },
      "message": "Bump zip (#8614)\n\nVersion 8 has been yanked, which breaks CI.\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "61172fdf332e9fcd1d89a036811406e466b17f5d",
      "tree": "931248501e6bc6b5ae3dff3bd85d634dc43e565d",
      "parents": [
        "6e74c7cb226790ee5b62d061629d98e3887c394c"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Fri Oct 16 15:36:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 15:36:09 2026"
      },
      "message": "Revert \"Update benchmark action to sffc-bot fork supporting interactive zoom \u0026 pan\" (#8612)\n\nReverts unicode-org/icu4x#8378\n\nCI is failing. Will investigate later.\n\nhttps://github.com/unicode-org/icu4x/actions/runs/38917595231"
    },
    {
      "commit": "6e74c7cb226790ee5b62d061629d98e3887c394c",
      "tree": "8039aa0a53c5f4bbac01c855bd1ca4234a49ccd3",
      "parents": [
        "ddec72453ae27e1a848efa609acf69783dc7f2e7"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Fri Oct 16 14:39:54 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 14:39:54 2026"
      },
      "message": "Update benchmark action to sffc-bot fork supporting interactive zoom \u0026 pan (#8378)\n\nUpdates `.github/workflows/artifacts-build.yml` to use\n`sffc-bot/github-action-benchmark` (commit\n`3886ebdfab795a7954d8e47822f4a2de6bb12f1e`) which adds interactive\nChart.js X-axis zooming, mouse drag selection box, horizontal panning,\nand reset zoom controls to the performance, memory, and binary size\nbenchmark dashboards.\n\nUpstream PR: https://github.com/gregtatum/github-action-benchmark/pull/1\n\n### Interactive Visual Screencast\n\n![Interactive Drag-to-Zoom \u0026 Pan\nDemo](https://raw.githubusercontent.com/sffc-bot/github-action-benchmark/assets/benchmark_zoom_demo_v2.gif)\n\n🤖 This pull request was created by an AI agent working with @sffc.\n\n## Changelog\n- [ci] Update benchmark action to sffc-bot fork supporting interactive\nzoom \u0026 pan"
    },
    {
      "commit": "ddec72453ae27e1a848efa609acf69783dc7f2e7",
      "tree": "931248501e6bc6b5ae3dff3bd85d634dc43e565d",
      "parents": [
        "50fe237b579b76b0cc807a2eac5a0e97041405f9"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Thu Oct 15 17:16:10 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 17:16:10 2026"
      },
      "message": "Changelog (#8607)"
    },
    {
      "commit": "50fe237b579b76b0cc807a2eac5a0e97041405f9",
      "tree": "f883fcf161ad80bf5bfa751324c78b2f488a2c44",
      "parents": [
        "83c7b94f02f45e4a1d7e0d1b6300f90a258db9ef"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Thu Oct 15 15:54:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 15:54:20 2026"
      },
      "message": "Update lock files (#8608)\n\n#8604 \n\n## Changelog\n\nN/A"
    },
    {
      "commit": "83c7b94f02f45e4a1d7e0d1b6300f90a258db9ef",
      "tree": "e1a7a78f0ec92fdf108b567c9925e49782a495d6",
      "parents": [
        "5ac177bd66141bbec5350542eee188c2712c9703"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Thu Oct 15 11:29:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 11:29:20 2026"
      },
      "message": "Format docs (#8606)\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "5ac177bd66141bbec5350542eee188c2712c9703",
      "tree": "709ff456eb85321b4c4172ef06ab8e3c0099f1a9",
      "parents": [
        "bdbc8a953cd66147f51f9ce610e311c4a16ade7d"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Thu Oct 15 10:33:54 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 10:33:54 2026"
      },
      "message": "Run clippy on docs (#8605)\n\n#8604 \n\n## Changelog\n\nN/A"
    },
    {
      "commit": "bdbc8a953cd66147f51f9ce610e311c4a16ade7d",
      "tree": "0dc2b2dd540ad07dd5536da3db4f827a7c8af34b",
      "parents": [
        "bb3e1f9a0c966f7334aa400066f520f64f3dc3d6"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Thu Oct 15 08:54:31 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 08:54:31 2026"
      },
      "message": "Migrate display names coverage to CLDR pathCoverage (#8598)\n\nFixes #8362\n\nReplaces the temporary JSON files added in #8233 with the txt files in CLDR JSON 49.\n\nCo-authored-by: Gemini \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "bb3e1f9a0c966f7334aa400066f520f64f3dc3d6",
      "tree": "d16854ab01bebf71e312b3a861e8f35bd089d7fc",
      "parents": [
        "c575c843300125559c4451d92aa50ff7d4bb3ec5"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Wed Oct 14 12:11:15 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 12:11:15 2026"
      },
      "message": "Fix script coverage for kek in coverageByXPath (#8602)"
    },
    {
      "commit": "c575c843300125559c4451d92aa50ff7d4bb3ec5",
      "tree": "7a84445fce55101e5e957dc8174a75587adb5645",
      "parents": [
        "571f15d2991c7701fc1b98443d19595d98b5ee2e"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Oct 14 11:13:42 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 11:13:42 2026"
      },
      "message": "Bump postcss-selector-parser from 7.1.5 to 7.1.6 in /tools/web-demo (#8566)\n\nBumps\n[postcss-selector-parser](https://github.com/postcss/postcss-selector-parser)\nfrom 7.1.5 to 7.1.6.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/postcss/postcss-selector-parser/releases\"\u003epostcss-selector-parser\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.6\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: parse flat selectors in linear time, closing a CPU exhaustion\nvulnerability (\u003ca\nhref\u003d\"https://github.com/advisories/GHSA-rj75-hqrm-r3gf\"\u003eGHSA-rj75-hqrm-r3gf\u003c/a\u003e,\nreported by Wayde Shi)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/postcss/postcss-selector-parser/blob/main/CHANGELOG.md\"\u003epostcss-selector-parser\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.6 - 2026-09-03\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: parse flat selectors in linear time, closing a CPU exhaustion\nvulnerability (\u003ca\nhref\u003d\"https://github.com/advisories/GHSA-rj75-hqrm-r3gf\"\u003eGHSA-rj75-hqrm-r3gf\u003c/a\u003e,\nreported by Wayde Shi)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/postcss/postcss-selector-parser/commit/4eb3468e754f9f94d2092d103767bae98aa41438\"\u003e\u003ccode\u003e4eb3468\u003c/code\u003e\u003c/a\u003e\n7.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/postcss/postcss-selector-parser/commit/62b191792df0a0bc56062e5a875bc74aae2a51cd\"\u003e\u003ccode\u003e62b1917\u003c/code\u003e\u003c/a\u003e\nfix: parse flat selectors in linear time, closing a CPU exhaustion\nvulnerability\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/postcss/postcss-selector-parser/compare/7.1.5...7.1.6\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dpostcss-selector-parser\u0026package-manager\u003dnpm_and_yarn\u0026previous-version\u003d7.1.5\u0026new-version\u003d7.1.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts\npage](https://github.com/unicode-org/icu4x/network/alerts).\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "571f15d2991c7701fc1b98443d19595d98b5ee2e",
      "tree": "f03bc6c37bd46ea304c1e0e7bca63276b5765c5c",
      "parents": [
        "e6552f3359bc95f7ada34a7bbb9df0276cf0f34d"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Wed Oct 14 11:12:57 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 11:12:57 2026"
      },
      "message": "Add documentation and comments for Uts35DateTimePatternTokenizer and reference::Parser (#8515)\n\nFollow-up to #8511 addressing post-merge review feedback from\n@Manishearth:\n- Document `Uts35DateTimePatternTokenizer` and `Token` variants with\nexamples.\n- Add inline comments explaining nested quote parity and `debug_assert!`\nmessages in `Uts35DateTimePatternTokenizer::step`.\n- Document `Parser::parse` (UTS #35 date format pattern syntax) and\n`Parser::parse_generic` (UTS #35 date-time combination/glue pattern\nsyntax and how it differs from `parse`).\n\n🤖 This pull request was created by an AI agent working with @sffc.\n\n## Changelog (N/A)\n\nCo-authored-by: Gemini \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "e6552f3359bc95f7ada34a7bbb9df0276cf0f34d",
      "tree": "4193440bab4fad28b047e614786e7ecb2d10b995",
      "parents": [
        "0ed63819496400618a151403296280ae48a2a8e1"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Wed Oct 14 10:50:55 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 10:50:55 2026"
      },
      "message": "Tweak locale selection in dowload-repo-sources (#8600)\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "0ed63819496400618a151403296280ae48a2a8e1",
      "tree": "f332d932fea062029f289b5088618b06a86a9627",
      "parents": [
        "3bffefe3a4ef80614278932dc89d597c9b4073a5"
      ],
      "author": {
        "name": "Younies Mahmoud",
        "email": "younies.mahmoud@gmail.com",
        "time": "Wed Oct 14 10:28:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 10:28:09 2026"
      },
      "message": "feat(currency): Fall back from narrow symbol to standard symbol before ISO code (#8486) (#8487)"
    },
    {
      "commit": "3bffefe3a4ef80614278932dc89d597c9b4073a5",
      "tree": "fad215c211d971242d0f519835f32eccaefb7b86",
      "parents": [
        "2bb3e37da56cc7acba8fa0e26038934b4405bfaf"
      ],
      "author": {
        "name": "Kamthorn Krairaksa",
        "email": "kamthorn@users.noreply.github.com",
        "time": "Wed Oct 14 06:14:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 06:14:04 2026"
      },
      "message": "Enable the Thai collator test cases that were commented out (#8601)\n\nFixes #2013.\n\nThe three cases commented out in `test_th_corner_cases` and\n`test_th_reordering` pass on current `main` and match ICU4C 78.2, so\nthis enables them and removes the TODOs.\n\n## Changelog (N/A)\n\nTests only.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-authored-by: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "2bb3e37da56cc7acba8fa0e26038934b4405bfaf",
      "tree": "15a584e4714efb31e79fca40d8033565227d5c73",
      "parents": [
        "4ebfb4b486c5f7ab6a277702ff6f7f07789f8358"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Tue Oct 13 12:14:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 12:14:30 2026"
      },
      "message": "Expose `SerdeCache::read_and_parse` helper (#8597)\n\n## Changelog\n\n`icu_experimental`\n* `RuleCollection::register_source` now takes the source by reference"
    },
    {
      "commit": "4ebfb4b486c5f7ab6a277702ff6f7f07789f8358",
      "tree": "f26961543a0e81eba4b3f3be21d8cdc79c8df961",
      "parents": [
        "d47c050fe1913c1c58e2f6e68ca6b1136ebcdf22"
      ],
      "author": {
        "name": "Younies Mahmoud",
        "email": "younies.mahmoud@gmail.com",
        "time": "Tue Oct 13 11:41:47 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 11:41:47 2026"
      },
      "message": "fix(currency): use no-currency formatting when CLDR defines no currency symbol (CLDR-19771) (#8485)"
    },
    {
      "commit": "d47c050fe1913c1c58e2f6e68ca6b1136ebcdf22",
      "tree": "4d6a8cc9fa7970f2f5aaa80f74599039bd38a9e1",
      "parents": [
        "b0d5fefd5a48fe42a90ffc37ac55298ba63bed4f"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Tue Oct 13 11:25:42 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 11:25:42 2026"
      },
      "message": "Compress dictionary tries (#8548)\n\nWe currently use `Char16Trie` for `cjdict`, `khmerdict`, `laodict`, and\n`thaidict`. ICU4C only uses it for `cjdict`, the other three\ndictionaries are encoded as byte tries, because they use less than 256\ndifferent characters. We should do the same, using `ZeroTrie`.\n\n## Changelog\n\n`icu_collection`:\n  * Add `Char16Trie::iter2` to iterate over key-value pairs\n\n`icu_segmenter`:\n* Replaced `SegmenterDictionaryV1` data structs by `V2`. This affects\nthe signature of unstable constructors for `WordSegmenter` and\n`LineSegmenter`"
    },
    {
      "commit": "b0d5fefd5a48fe42a90ffc37ac55298ba63bed4f",
      "tree": "199bea25b8db9e11d5fec1bbcb5d3990303846f2",
      "parents": [
        "d89b5b7b31abbfb642f31a4f818f2ea0ce26d0d5"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Tue Oct 13 10:22:05 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 10:22:05 2026"
      },
      "message": "CLDR 49 beta 4 (#8596)\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "d89b5b7b31abbfb642f31a4f818f2ea0ce26d0d5",
      "tree": "8f62215526b28039c3976ecee620ce6ae33b59b8",
      "parents": [
        "991f7fe216e4f45bf97a843ac80187d6d5da2833"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Tue Oct 13 07:22:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 07:22:51 2026"
      },
      "message": "Port CodePointTrieBuilder to pure Rust and remove wasm/icu4c features (#8540)\n\nThe builder itself is fully vibe coded.\n\n## Changelog\n\n`icu_collections`:\n* New `icu_collections::codepointtrie::CodePointTrieBuilder`\n\n`icu_codepointtrie_builder`\n* Retired crate"
    },
    {
      "commit": "991f7fe216e4f45bf97a843ac80187d6d5da2833",
      "tree": "5b2fa06f297a894a1dc1efb2f75250705218b879",
      "parents": [
        "9004ca955c925bc386d7671e344321b01769b616"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Tue Oct 13 07:21:42 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 07:21:42 2026"
      },
      "message": "Fix Rust 1.100 lints (#8592)\n\nSome useful catches.\n\nOne instance of `cargo::unused_depedencies` still triggers and actually\ncannot be silenced: https://github.com/rust-lang/cargo/issues/17510\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "9004ca955c925bc386d7671e344321b01769b616",
      "tree": "bdec21102cd62a08f8aba46c5edd5f14d257f3ec",
      "parents": [
        "1045db8feebd03cac53cb3708adbc3f90ddfbf74"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Mon Oct 12 21:18:06 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 12 21:18:06 2026"
      },
      "message": "JSON-bake-roundtrip `MonthNames` (#8591)\n\n#8550\n\nSlightly more complex than #8576. The first commit tweaks datagen so its\nJSON output is actually revertible, which also slightly increases data\nsize.\n \n## Changelog\n\nN/A"
    },
    {
      "commit": "1045db8feebd03cac53cb3708adbc3f90ddfbf74",
      "tree": "d6646e26e1d76727ff740183fa294d57cce105a9",
      "parents": [
        "08349780f579504dcf0a38339a71a23e448d53c7"
      ],
      "author": {
        "name": "Manish Goregaokar",
        "email": "manishsmail@gmail.com",
        "time": "Fri Oct 09 19:31:37 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 19:31:37 2026"
      },
      "message": "Linearize relativetime data (#8571)\n\nPart of https://github.com/unicode-org/icu4x/issues/802\n\nWe don\u0027t actually use ZeroMaps that often, and relativetime data is\nalways in a tight consecutive range `-2, -1, 0, 1, 2` (or similar)\n\nMinor data size win.\n\n\n## Changelog: N/A\n\nWe should make one big relativetime polish changelog entry"
    },
    {
      "commit": "08349780f579504dcf0a38339a71a23e448d53c7",
      "tree": "d3e175a03fcc86833ce1ac9caa9dd89c8f166818",
      "parents": [
        "af505c5cd0a45e4dabe1dfe4475521f241fa9063"
      ],
      "author": {
        "name": "Manish Goregaokar",
        "email": "manishsmail@gmail.com",
        "time": "Fri Oct 09 18:50:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 18:50:21 2026"
      },
      "message": "Expose Decimal::equals and PluralOperands::from_significand_and_exponent in FFI (#8565)\n\nExposes FFI APIs needed by V8\u0027s ECMA-402 `Intl.PluralRules`\nimplementation:\n\n1. **`PluralOperands`** (`ffi/capi/src/pluralrules.rs`):\n- `PluralOperands::from_significand_and_exponent(significand: \u0026Decimal,\nexponent: u8) -\u003e Box\u003cPluralOperands\u003e` (gated on `decimal` + `unstable`)\nso callers can construct operands with `c`/`e` exponents directly from a\n`Decimal` without string round-tripping.\n2. **`Decimal::equals`** (`ffi/capi/src/fixed_decimal.rs`):\n   - Structural equality comparison (`\u003d\u003d`) on `Decimal`.\n\n## Changelog\n\nicu_capi: Expose `PluralOperands::from_significand_and_exponent` and\n`Decimal::equals`"
    },
    {
      "commit": "af505c5cd0a45e4dabe1dfe4475521f241fa9063",
      "tree": "98cf2b37984e2b4c553a0cea6d926e6c4137bc9c",
      "parents": [
        "29d1b3724c91079e9954354da2779ff02a40bc53"
      ],
      "author": {
        "name": "Manish Goregaokar",
        "email": "manishsmail@gmail.com",
        "time": "Fri Oct 09 18:25:35 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 18:25:35 2026"
      },
      "message": " Modernize RelativeTimeFormatterOptions and add GroupingStrategy (#8573)\n\nPart of #802\n\nNot sure if we should do this, but it feels like we should have\nGroupingStrategy on relativetime.\n\nThis brings this options bag closer in line with the API of other\noptions bags. It adds `default()`, `with_*` methods, and `From` impls,\nwhich appears to be standard.\n\n## Changelog: N/A\n\nWe should have one big relativetime changelog entry"
    },
    {
      "commit": "29d1b3724c91079e9954354da2779ff02a40bc53",
      "tree": "d82b4fe4b1970d65c1d849dc292b06d1404bd085",
      "parents": [
        "bce0cccbee47b0710192888351c2aa0bd0246542"
      ],
      "author": {
        "name": "Manish Goregaokar",
        "email": "manishsmail@gmail.com",
        "time": "Fri Oct 09 18:18:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 18:18:52 2026"
      },
      "message": "FFI for category_for, categories, and resolve_range on PluralRulesWithRanges (#8583)\n\nExposes `category_for`, `categories`, and `resolve_range` on\n`PluralRulesWithRanges` so C/C++ callers only need to store a single\n`icu4x::PluralRulesWithRanges` instance.\n\n\nThis could also be done by adding a `.rules()` that returns\n`\u0026PluralRules`. Either works.\n\n## Changelog\n\nicu_capi: Expose `category_for`, `categories`, and `resolve_range` on\n`PluralRulesWithRanges`"
    },
    {
      "commit": "bce0cccbee47b0710192888351c2aa0bd0246542",
      "tree": "aaa4d2c27edc4fe0ed49df054247268c074e1536",
      "parents": [
        "cefc56f8d005b534359cdb1d1db899ff2cf907eb"
      ],
      "author": {
        "name": "Manish Goregaokar",
        "email": "manishsmail@gmail.com",
        "time": "Fri Oct 09 15:45:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 15:45:32 2026"
      },
      "message": "fix (relativetime): Fix FormattedRelativeTime::write_to_parts and export parts module (#8570)\n\nPart of https://github.com/unicode-org/icu4x/issues/802\n\nwrite_to_parts is doing a regular write, this is incorrect.\n\n\n## Changelog: N/A\n\n\u003c!-- Please fill in according to documents/process/changelog.md --\u003e"
    },
    {
      "commit": "cefc56f8d005b534359cdb1d1db899ff2cf907eb",
      "tree": "6832dd89a10b2658d7cda89d8432dd1d76d29cd6",
      "parents": [
        "ccf724b7d536732304666414d14e7c8a5e4ca26e"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Oct 09 15:21:00 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 15:21:00 2026"
      },
      "message": "Bump rustls from 0.23.43 to 0.23.45 (#8589)"
    },
    {
      "commit": "ccf724b7d536732304666414d14e7c8a5e4ca26e",
      "tree": "c01bb29529c5d90c75706e4c80abe185e4a70d18",
      "parents": [
        "64a13fcdcf4d055ef73e28fdc450ab074c5974e9"
      ],
      "author": {
        "name": "Manish Goregaokar",
        "email": "manishsmail@gmail.com",
        "time": "Fri Oct 09 14:57:13 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 14:57:13 2026"
      },
      "message": "Implement human-readable serde deserialization for TimezonePeriods (#8554)\n\nDepends on https://github.com/unicode-org/icu4x/pull/8552 and\nhttps://github.com/unicode-org/icu4x/pull/8553\n\nNeeds moving some datagen code to the crate since it\u0027s useful for\nconstruction.\n\n\ncc #6752, since the TODO mentioned it (but this doesn\u0027t actually fix\nthat issue)\n\n## Changelog\n\nicu_time: Implement human-readable serde deserialization for\nTimezonePeriods"
    },
    {
      "commit": "64a13fcdcf4d055ef73e28fdc450ab074c5974e9",
      "tree": "d781c82fd439e440091330fb79ddb89aecb5f1dc",
      "parents": [
        "77a3b6ddfb99024fabd04c3078c1a151aa41707d"
      ],
      "author": {
        "name": "Manish Goregaokar",
        "email": "manishsmail@gmail.com",
        "time": "Fri Oct 09 14:56:23 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 14:56:23 2026"
      },
      "message": "Update Diplomat (#8580)\n\nWant to pull in https://github.com/rust-diplomat/diplomat/pull/1290\n\n## Changelog: N/A"
    },
    {
      "commit": "77a3b6ddfb99024fabd04c3078c1a151aa41707d",
      "tree": "f94027cd84d57de66790ef2084eb229b0e873087",
      "parents": [
        "6dd9153808a34fe7713647cc949468d5243129cb"
      ],
      "author": {
        "name": "Younies Mahmoud",
        "email": "younies.mahmoud@gmail.com",
        "time": "Fri Oct 09 14:33:10 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 14:33:10 2026"
      },
      "message": "Fix stale references and broken links in docs (#8560)"
    },
    {
      "commit": "6dd9153808a34fe7713647cc949468d5243129cb",
      "tree": "fe1ee6c45eab2c9a436d4d23fdcd5004850e4574",
      "parents": [
        "1334407e5e9a011017accf12a0415e10f08547c3"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Fri Oct 09 10:20:22 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 10:20:22 2026"
      },
      "message": "Align `Char16Trie`\u0027s \"iterator\" API with `ZeroTrie`\u0027s \"cursor\" API (#8547)\n\nThe cursor naming makes much more sense, it\u0027s not an iterator in the\n`Iterator` sense.\n\n## Changelog\n\n- `icu_collections`\n- Add `Char16Trie::cursor` API, deprecating `Char16Trie::iter` (which\nwas not an `Iterator`)"
    },
    {
      "commit": "1334407e5e9a011017accf12a0415e10f08547c3",
      "tree": "55de98ed37d7ae3bc046808a8893eb78f6708be1",
      "parents": [
        "436f666f87c0dbb18b5aab39478b80f6d324e0bc"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Thu Oct 08 22:11:02 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 08 22:11:02 2026"
      },
      "message": "JSON-bake-roundtrip `YearNames` (#8576)\n\n#8550\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "436f666f87c0dbb18b5aab39478b80f6d324e0bc",
      "tree": "1f955b047d83cf8231178267e94e0824545c9a3d",
      "parents": [
        "c801a4092818d67bc4ac544a801b8b8dda53871c"
      ],
      "author": {
        "name": "Kamthorn Krairaksa",
        "email": "kamthorn@users.noreply.github.com",
        "time": "Thu Oct 08 22:10:42 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 08 22:10:42 2026"
      },
      "message": "Let line break rules decide the break at the end of a complex run (#8574)\n\n## Summary\n\nFixes #7218. Fixes #8243.\n\nThe V1 and V3 line segmenters return the dictionary/LSTM breakpoint at\nthe end\nof a complex (SA) run as is, which bypasses the UAX #14 rules for the\npair of\ncharacters around the run end. This gives breaks before closing\npunctuation,\nspaces and other characters that must not start a line:\n\n| Input | Before | After |\n|---|---|---|\n| `ไทย!` | `ไทย\\|!` | `ไทย!` |\n| `แดง (อังกฤษ: Red` | `แดง\\| \\|(อังกฤษ\\|: \\|Red` | `แดง \\|(อังกฤษ:\n\\|Red` |\n| `“ไทย”` | `“ไทย\\|”` | `“ไทย”` |\n| `ລາວ! ລາວ` | `ລາວ\\|! \\|ລາວ` | `ລາວ! \\|ລາວ` |\n\nFollowing @makotokato\u0027s suggestion in #7232, the iterator now stops on\nthe last\ncharacter of the run and lets the rule table decide the boundary with\nthe\nfollowing character, where SA resolves to AL. Breaks inside the run are\nunchanged. This is about 20 lines each in `line/v1.rs` and `line/v3.rs`,\nwith no\nhard-coded character lists.\n\nThe fall-through has to happen on every `None` from the complex handler,\nnot\nonly when the iterator moved. Otherwise V3 breaks a two-code-point run\nending in\na combining mark (`ปี` → `ป|ี`), because V3 skips LB9 for SA × SA_MC_MN.\n\nThe #7218 and #8243 inputs now pass on V1/17, so `V1_17_KNOWN_FAILURES`\nis\nempty. The ill-formed UTF-8/UTF-16 expectations in\n`complex_line_break_encodings` now match\n`complex_line_break_encodings_neo`.\nA new test, `complex_run_end_follows_rules`, covers punctuation, spaces,\nZWSP,\nNBSP, newlines and Lao on V1/V3 with dictionary and LSTM.\n\nNotes for review:\n- Thai directly followed by Latin letters or digits (`ไทยabc`, `ไทย123`)\nno\nlonger breaks at the script boundary (LB28/LB23). This matches V2 and\nUAX #14.\n- Breaks before `ๆ`/`ฯ` come from the LSTM output itself and are not\naddressed\n  here.\n\n## Changelog\n\nicu_segmenter: Fix line breaks at the end of Southeast Asian (SA) runs\nin the V1 and V3 line segmenters\n- Breaks at the end of Thai, Lao, Khmer and Myanmar runs now follow the\nUAX #14\nrules, so lines no longer break before closing punctuation, spaces, or a\nword joiner.\n- Thai directly followed by Latin letters or digits no longer breaks,\nmatching V2.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nCo-authored-by: Claude Code \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "c801a4092818d67bc4ac544a801b8b8dda53871c",
      "tree": "bd0064b19616be8555cd814cedd268abf034fc5e",
      "parents": [
        "76ccde03f40d78b27cc319638b2f1b76dc4b8fc1"
      ],
      "author": {
        "name": "Manish Goregaokar",
        "email": "manishsmail@gmail.com",
        "time": "Thu Oct 08 20:50:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 08 20:50:04 2026"
      },
      "message": "Fix -0 handling in RelativeTimeFormatter with Numeric::Auto (#8579)\n\n`RelativeTimeFormatter::format` extracts the input\u0027s sign and strips it\nfrom the stored `Decimal`.\n\n\nIn `Numeric::Auto` mode, `FormattedRelativeTime::write_to_parts` checks\nfor single integer digit values (`magnitude_range() \u003d\u003d (0..\u003d0)`) and\nconverts it to a signed i8 offset (`if self.is_negative { -(digit as i8)\n} else { digit as i8 }`)\nto look up special relative strings in\nRelativeTimePatternData::relatives (such as 0 -\u003e \"today\" or \"now\").\n\nWhen the input is -0, self.is_negative is true and digit is 0. However,\nnegating 0i8 doesn\u0027t do anything so we still match the +0 entry.\n\nOn the other hand, in `Numeric::Always` mode (and for any other negative\ninput, as well as ECMA-402 Intl.RelativeTimeFormat), -0 has `is_negative\n\u003d\u003d true` and formats using the past plural pattern (\"0 days ago\" / \"0\nseconds ago\").\n\nThis guards the relatives lookup with `!(self.is_negative \u0026\u0026 digit \u003d\u003d\n0)` so that -0 skips the relative-type-0 lookup and falls through to the\npast plural pattern consistently.\n\n\n\n## Changelog: N/A\n\nWe should do one big relativetime changelog entry"
    },
    {
      "commit": "76ccde03f40d78b27cc319638b2f1b76dc4b8fc1",
      "tree": "46ffb9725ecde0f0060956169a37be3ed01e8771",
      "parents": [
        "d78aa75a2115d1f1e2eed8b69569ad5635f1d196"
      ],
      "author": {
        "name": "Manish Goregaokar",
        "email": "manishsmail@gmail.com",
        "time": "Thu Oct 08 20:41:28 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 08 20:41:28 2026"
      },
      "message": "datetime: Implement fallback to single-value formatting when there is no diff during range formatting (#8480)\n\nStep 5 of https://github.com/unicode-org/cldr/pull/6098\n\nDraft since I just had the agent bang this out and haven\u0027t really looked\nclosely.\n\n\n## Changelog\n\n\ndatetime: Implement fallback to single-value formatting when there is no\ndiff during range formatting"
    },
    {
      "commit": "d78aa75a2115d1f1e2eed8b69569ad5635f1d196",
      "tree": "bb9693ff469819c5e90e707334bfba81ba6cf812",
      "parents": [
        "150b05b2385af77cca4989d967fe64d6df88f05e"
      ],
      "author": {
        "name": "Manish Goregaokar",
        "email": "manishsmail@gmail.com",
        "time": "Thu Oct 08 08:27:47 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 08 08:27:47 2026"
      },
      "message": "cleanup (relativetime): Remove MARKER_FILTERS and unused serde allocations in relativetime datagen (#8569)\n\nCleanup discovered when going through this component.\n\nPart of https://github.com/unicode-org/icu4x/issues/802\n\n## Changelog: N/A"
    },
    {
      "commit": "150b05b2385af77cca4989d967fe64d6df88f05e",
      "tree": "5d49cb4198ba6aa32d37170e7f1da709c283ce7d",
      "parents": [
        "fd61b03264703729135faefa5b4d45dabd00b0d1"
      ],
      "author": {
        "name": "Manish Goregaokar",
        "email": "manishsmail@gmail.com",
        "time": "Wed Oct 07 20:32:12 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 20:32:12 2026"
      },
      "message": "Fix VariantOffsets and UtcOffset human-readable serde roundtrip (#8552)\n\nTwo issues:\n\n- `VariantOffsets::serialize` uses `\"{:+02}:{:02}\"` on `hours_part()`,\nwhich pads to width 2 _including the sign_ (emitting \"+5:00\" instead of\n\"+05:00\") and loses the negative sign when `hours_part() \u003d\u003d 0` (emitting\n\"+0:30\" for -00:30).\n- `UtcOffset::try_from_str` rejects `±hhmmss / ±hh:mm:ss` offsets with\nseconds, which `VariantOffsets::serialize` emits when `seconds_part() !\u003d\n0`.\n\n\n## Changelog\n\nicu_time: VariantOffsets and UtcOffset human-readable serde roundtrip\n - New trait impl: `Writeable for UtcOffset`"
    },
    {
      "commit": "fd61b03264703729135faefa5b4d45dabd00b0d1",
      "tree": "d35b6fd4f2adff41268cd433185227ebf43f496a",
      "parents": [
        "d8f0ea2a8d843ea1f31385733e10d2a3685dbc64"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Wed Oct 07 20:29:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 20:29:04 2026"
      },
      "message": "Deduplicate plurals in UnitEssentialsV1 (#8564)\n\nThis is not using `PluralElements` and is doing it wrong.\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "d8f0ea2a8d843ea1f31385733e10d2a3685dbc64",
      "tree": "f22d68db91d103189876a38636316a77ddee232f",
      "parents": [
        "87126942a35440348e943028283f4018365a0fc9"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Wed Oct 07 20:28:41 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 20:28:41 2026"
      },
      "message": "CLDR 49 beta 3 (#8559)\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "87126942a35440348e943028283f4018365a0fc9",
      "tree": "16dec43f8259f779c6e7bfb04f7ac75fd8fb507b",
      "parents": [
        "a5a141da0b3f9f233f6d93cb572c53b534cf4f15"
      ],
      "author": {
        "name": "Manish Goregaokar",
        "email": "manishsmail@gmail.com",
        "time": "Wed Oct 07 20:04:49 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 20:04:49 2026"
      },
      "message": "Support seconds in ZoneNameTimestamp human-readable serde deserialization (#8553)\n\n`ZoneNameTimestamp::serialize` emits 19-byte `\"YYYY-MM-DD HH:MM:SS\"`\nstrings when the timestamp has non-zero seconds (such as\n`ZoneNameTimestamp::far_in_past()`), but\n`ZoneNameTimestamp::deserialize` rejected any string with `length !\u003d\n16`.\n\n\n## Changelog\n\nicU_time: Support seconds in ZoneNameTimestamp human-readable serde\ndeserialization\n\n---------\n\nCo-authored-by: Robert Bastian \u003c4706271+robertbastian@users.noreply.github.com\u003e"
    },
    {
      "commit": "a5a141da0b3f9f233f6d93cb572c53b534cf4f15",
      "tree": "c6af35c7b3f85e082a8acc21569af5febe8e6ff7",
      "parents": [
        "904cdf5d2242ae28787b8da4be7c11fd9e6da954"
      ],
      "author": {
        "name": "Manish Goregaokar",
        "email": "manishsmail@gmail.com",
        "time": "Wed Oct 07 19:33:39 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 19:33:39 2026"
      },
      "message": "Fix human-readable serde deserialization of CollationSpecialPrimaries (#8551)\n\nCollationSpecialPrimaries::serialize renames the concatenated field to\n\"last_primaries\", whereas CollationSpecialPrimaries::deserialize omitted\nrename \u003d \"last_primaries\" and borrowed \u0026\u0027data ZeroSlice\u003cu16\u003e, which\nfails to deserialize from human-readable JSON sequences.\n\nAdd rename \u003d \"last_primaries\" and deserialize via ZeroVec\u003c\u0027data, u16\u003e so\nboth zero-copy binary formats and human-readable JSON formats\nround-trip.\n\n\n## Changelog\n\nicu_collator: Fix human-readable serde deserialization of\nCollationSpecialPrimaries"
    },
    {
      "commit": "904cdf5d2242ae28787b8da4be7c11fd9e6da954",
      "tree": "a59e77166e816d7e153043318b89629c67a4178a",
      "parents": [
        "c0ca1452d85464f352e5da7fde15de5590a2ba8d"
      ],
      "author": {
        "name": "Manish Goregaokar",
        "email": "manishsmail@gmail.com",
        "time": "Wed Oct 07 17:44:45 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 17:44:45 2026"
      },
      "message": "Make VarZeroVecOwned mutation operations panic-safe (#8535)\n\nFixes #8493\n\n\n## Changelog\n\nzerovec: Make VarZeroVecOwned mutation operations panic-safe"
    },
    {
      "commit": "c0ca1452d85464f352e5da7fde15de5590a2ba8d",
      "tree": "2afa3ed48c414064357b7b2b0494d7663ea9c3eb",
      "parents": [
        "2fa9afb76966a6fdfa6b3b337e05b5c132459e37"
      ],
      "author": {
        "name": "moulins",
        "email": "arthur.heuillard@orange.fr",
        "time": "Wed Oct 07 17:43:48 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 17:43:48 2026"
      },
      "message": "Implement `AsRef\u003cT\u003e` for `Yoke\u003cimpl AsRef\u003cT\u003e, _\u003e` (#8518) (#8542)\n\nCloses #8518.\n\n----------\n\nCompared to the linked issue:\n- No `AsMut` impl as `Yoke\u003c\u0026mut T, _\u003e` isn\u0027t a thing at all\n- ~~I added an `AsRef` impl for `Yoke\u003cCow\u003c\u0027_, T\u003e\u003e` as it also seems\nuseful~~\n- Impl is generic across all `impl AsRef` types\n\n\n## Changelog\n\n- `yoke`: Implement `AsRef\u003cT\u003e` for `Yoke\u003cimpl AsRef\u003cT\u003e, _\u003e`"
    },
    {
      "commit": "2fa9afb76966a6fdfa6b3b337e05b5c132459e37",
      "tree": "53bedd9fdef42e19d00058479b3b8c5c80624469",
      "parents": [
        "5460227a4b0bdbe932305a28f2330c8bfa4c2e20"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Tue Oct 06 15:13:56 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 06 15:13:56 2026"
      },
      "message": "Use better types in dictionary data struct  (#8545)\n\nThe data struct shouldn\u0027t be a raw `ZeroVec`.\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "5460227a4b0bdbe932305a28f2330c8bfa4c2e20",
      "tree": "c5c0c0a4e0656bb74a277d6c4ea4f591dd46be27",
      "parents": [
        "78fb6da344e5e476b0e7087b14b1884d9de600e0"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Mon Oct 05 17:46:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 05 17:46:32 2026"
      },
      "message": "Test CPT round tripping (#8544)\n\nSee #8540.\n\n## Changelog\n\n`icu_collections`\n* Add `CodePointTrie::null_value()` accessor"
    },
    {
      "commit": "78fb6da344e5e476b0e7087b14b1884d9de600e0",
      "tree": "fd480269aef412908944aa59b4b437dd7c5235cb",
      "parents": [
        "a8b9716885051a88cfc969d1a42b85bffe211095"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Mon Oct 05 11:30:19 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 05 11:30:19 2026"
      },
      "message": "Clean up datagen warnings (#8538)\n\n* Avoid logging \"filter applied multiple times\" in `icu_provider_export`\n* Fix warning for non-flexible day periods (am, pm, noon, midnight) not\nbeing listed in rules\n* Fix `IterableDataProvider\u003cSegmenterLstmV1\u003e`\n* Suppress spammy \"conflicting fields\" warning\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "a8b9716885051a88cfc969d1a42b85bffe211095",
      "tree": "bad266b1e34841cdf293b68569254ad7180bd174",
      "parents": [
        "fe2b931521a2c3e90846908faeb4fd8ee22efecb"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Mon Oct 05 11:20:24 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 05 11:20:24 2026"
      },
      "message": "Fix `use_icu4c` (#8541)\n\nFixes #8501\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "fe2b931521a2c3e90846908faeb4fd8ee22efecb",
      "tree": "f81a81edacb1aa82b1d26b5583da115c41bb500f",
      "parents": [
        "72d8af9ab4619e57bf8c6fa048e53b469f5df4d4"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Fri Oct 02 19:16:05 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 02 19:16:05 2026"
      },
      "message": "Consolidate segmenter tests into readable data files (#8534)\n\nMove complex-script, rule-based, and other default-option segmentation\ntests out of Rust code and the UCD-format `*ExtraTest.txt` files into\nreadable data files, where each line is the expected segments separated\nby \u0027|\u0027 (with `\\u{XXXX}` escapes):\n\n* `LineBreakLstm.txt` / `LineBreakDictionary.txt`\n* `WordBreakLstm.txt` / `WordBreakDictionary.txt`\n* `GraphemeBreak.txt`\n* `SentenceBreak.txt`\n\nThese are run as unit tests in `line.rs`, `word.rs`, `grapheme.rs` and\n`sentence.rs`. The data files contain the output of the neo\nimplementation at Unicode 18; inputs that the v1/17 implementations are\nknown to fail are listed in the tests and skipped (asserting that they\nstill fail).\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "72d8af9ab4619e57bf8c6fa048e53b469f5df4d4",
      "tree": "aa1d921d4be97a3d47ba4963e9f80511a1b8dc15",
      "parents": [
        "fa73e0bff634a76a95cdf20c444f99fe45189e49"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Thu Oct 01 23:37:56 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 23:37:56 2026"
      },
      "message": "Implement remaining FieldSetBuilder conversions and integration tests in fieldbag (#8532)\n\nCo-authored-by: Gemini \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "fa73e0bff634a76a95cdf20c444f99fe45189e49",
      "tree": "c0c60fc9f448fa70c18cc3ff9a172e7aef3f7574",
      "parents": [
        "ee6681c44a8c44ccb77e97a4e43d4f48508db51c"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Thu Oct 01 21:38:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 21:38:32 2026"
      },
      "message": "Refresh PRI 555 files (#8537)\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "ee6681c44a8c44ccb77e97a4e43d4f48508db51c",
      "tree": "65a0702e52daab3e7b49c3fe022e4f062329a069",
      "parents": [
        "c61c7a00030e680638da3d27fddfc0b46b842310"
      ],
      "author": {
        "name": "Sidney Cammeresi",
        "email": "sac@readyset.io",
        "time": "Thu Oct 01 19:47:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 19:47:08 2026"
      },
      "message": "collator: Skip trailing NO_CE byte when outputting collation keys (#8536)\n\nIn ICU4C, the trailing NO_CE (0x01) is dropped when copying to the\nbuffer. This oversight from the original port of the code was previously\nfixed for the case level, but not generally.\n\nCloses #8509\n\n## Changelog\n\ncollator: Don\u0027t output a trailing NO_CE (0x01) byte when generating sort\nkeys in order to match ICU4C\u0027s pre-existing behavior. THIS FIX CHANGES\nSORT KEY OUTPUT INCOMPATIBLY!"
    },
    {
      "commit": "c61c7a00030e680638da3d27fddfc0b46b842310",
      "tree": "4cb483d65a7b6c8aa70a5089c9dc8cdecfd7889b",
      "parents": [
        "9c0d3450f087715618398deb80e28320e76d0d5d"
      ],
      "author": {
        "name": "Kamthorn Krairaksa",
        "email": "kamthorn@users.noreply.github.com",
        "time": "Thu Oct 01 14:36:15 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 14:36:15 2026"
      },
      "message": "Fix missing terminal breakpoint in the dictionary segmenter (#8523)\n\n## Summary\n\nFixes #8522.\n\nThe neo (V2) dictionary segmenter loses a breakpoint when the text ends\npartway\nthrough a longer dictionary word, i.e. the last dictionary match is\nfollowed by\na tail that is a prefix of another dictionary word but not a word\nitself.\n\nThis is not specific to Thai. It affects every script that goes through\n`DictionaryBreakIterator`. Checking every prefix of one sentence per\nscript with\n`WordSegmenter::new_neo_for_non_complex_scripts` + `load_dictionary()`\non `main`:\n\n| Script   | Prefixes with a dropped final break |\n|----------|-------------------------------------|\n| Thai     | 20 / 61 |\n| Lao      | 14 / 56 |\n| Khmer    | 25 / 67 |\n| Myanmar  | 32 / 62 |\n| Japanese | 9 / 33  |\n\nWith this change all of them are 0. I did not hit the problem with the\nChinese\nsentence I tried, but I have not looked for a Chinese case specifically.\n\nWord segmenter, for example:\n\n```rust\nlet mut segmenter \u003d\n    WordSegmenter::new_neo_for_non_complex_scripts(WordBreakInvariantOptions::default());\nsegmenter.load_dictionary();\n\nlet breaks: Vec\u003cusize\u003e \u003d segmenter.segment_str(\"อินฟลูเอนเซอร์\").collect();\n// before: [0, 9, 21, 30, 36]        \u003c- the final \"ร์\" (bytes 36..42) is dropped\n// after:  [0, 9, 21, 30, 36, 42]\n```\n\nThe line segmenter still ends at the end of the text, but loses the last\ndictionary breakpoint before it: `ผู้ใ` gives `[0, 12]` instead of `[0,\n9, 12]`.\n\nThe V1 constructors (`new_dictionary`) are unaffected.\n\n## Root cause\n\n`DictionaryBreakIterator::next()` in\n`components/segmenter/src/complex/dictionary.rs`\nhas three exit paths:\n\n1. `TrieResult::FinalValue`: a full dictionary match; returns the\nbreakpoint.\n2. `TrieResult::NoMatch`: no match mid-input; rewinds `self.iter` /\n`self.grapheme_iter` to `previous_match`, then returns\n`intermediate_length`.\n3. End of input with a pending `intermediate_length \u003e 0`: returns\n   `intermediate_length` **without rewinding**.\n\nBecause the end-of-input branch does not rewind, `self.iter` is already\nexhausted when the caller asks for the next breakpoint, so the text\nafter the\nlast match is never segmented.\n\nThe V1 rule iterator (`rule_segmenter_v1.rs`) compensates by emitting\n`self.len`\nitself at the end of the text, which is why only the neo path is\naffected.\n\nThis is the remaining half of the fix started in #8195 (\"Fix grapheme\niterator\ndesync when dictionary segmenter rewinds\"), which added the rewind to\nthe\n`NoMatch` branch only.\n\n## Solution\n\nApply the same rewind in the end-of-input branch that the `NoMatch`\nbranch\nalready performs, so the next call resumes after the matched word.\n\n## Testing\n\nThe tests do not pin specific segmentations, since any input that\ntriggers this\nends in an incomplete word and its segmentation depends on the\ndictionary data.\nInstead each test checks every prefix of one sentence per script, so\nsome\nprefixes always end inside a dictionary word:\n\n- `complex::dictionary::tests::dictionary_terminal_break`: the last\nbreak of\n  `DictionaryBreakIterator` is at the end of the text (Thai, Lao, Khmer,\n  Myanmar, Japanese).\n- `word::dictionary_terminal_break`: the neo `WordSegmenter` output\nmatches V1\nfor Thai, Lao, Khmer and Myanmar (UTF-8 and UTF-16), and the last break\nis at\nthe end of the text. For Japanese only the last break is checked, since\nV1\n  and neo segment Japanese differently by design.\n- `line::tests::dictionary_terminal_break`: the neo `LineSegmenter`\noutput\n  matches V1 for Thai, Lao, Khmer and Myanmar.\n\nAll three fail without the code change and pass with it.\n\n```\ncargo fmt --all -- --check\ncargo clippy -p icu_segmenter --all-targets --all-features\ncargo test -p icu_segmenter --all-features\n```\n\n## Changelog\n\nicu_segmenter: Fix dropped breakpoints at the end of the text in the\ndictionary segmenter\n  - When the text ends partway through a longer dictionary word, the neo\nsegmenters (`new_neo_for_non_complex_scripts` + `load_dictionary`) now\n    segment the remaining text instead of dropping it. Affects all\n    dictionary-segmented scripts (Thai, Lao, Khmer, Myanmar, Japanese).\n\n---------\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "9c0d3450f087715618398deb80e28320e76d0d5d",
      "tree": "d8847e683e110f845d1613f6d4034ee47f4cef1d",
      "parents": [
        "1007ab7bb9052d900cbb19d644cf2eba4d76af7b"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Wed Sep 30 23:01:22 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 30 23:01:22 2026"
      },
      "message": "Complete UTS 35 skeleton parsing, serialization, and field doctests in fieldbag (#8527)\n\nCo-authored-by: Gemini \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "1007ab7bb9052d900cbb19d644cf2eba4d76af7b",
      "tree": "8377ed2fbada4099d5c13f3e50df961508491e56",
      "parents": [
        "a59ab860d4bda548e94dfbf992d87fe1f761bc55"
      ],
      "author": {
        "name": "Kamthorn Krairaksa",
        "email": "kamthorn@users.noreply.github.com",
        "time": "Wed Sep 30 13:30:53 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 30 13:30:53 2026"
      },
      "message": "Add Thai word segmentation regression tests (#8519)\n\n## Summary\n\nAdds Thai word segmentation tests whose expected values were verified\nagainst ICU4C\n(ICU 78, via Node\u0027s `Intl.Segmenter` with `granularity: \"word\"`).\n\n- Extends `word_break_th` with 26 cases where every constructor\n(auto/LSTM/dictionary/V2)\n  agrees and matches ICU4C.\n- Adds `word_break_th_dictionary` with 21 cases where the dictionary\nmodel matches ICU4C\nbut the LSTM-based constructors segment differently, protecting the\ndictionary model\nagainst regressions. This includes `กระเพรา` from discussion #3522\n(which was already\n  concluded to match ICU4C with the dictionary constructor).\n\nCoverage: compound words (รถไฟฟ้า, โรงพยาบาล, น้ำตาลทราย), loanwords\n(ซอฟต์แวร์, บล็อกเชน),\nvowel/tone composition (น้ำ, กำลัง, เก้า), Thai digits (๑๐๐), `ๆ` / `ฯ`\n/ `ฯลฯ`,\nThai–English–number mixing, URLs/emails, and the WPT case.\n\n## Not asserted (ICU4X vs ICU4C differences found while preparing this)\n\n- `aภาษาไทยภาษาไทยb`: ICU4C glues Latin script to Thai; ICU4X separates.\nThe existing\n  `word_break_th` intentionally asserts ICU4X behavior.\n- `พ.ศ. ๒๕๖๘`: ICU4C `พ.ศ|.| |๒๕๖๘` vs ICU4X `พ|.|ศ|.| |๒๕๖๘`.\n- `ภาษาไทย123ภาษาอังกฤษ`: ICU4C glues digits to Thai words; ICU4X\nseparates digits.\n- Hashtags: syllable splitting differs between models.\n\n## Candidate bug found while preparing these tests (not fixed here)\n\n`อินฟลูเอนเซอร์` exposes a correctness bug on the V2 (\"neo\") dictionary\npath:\n\n- `WordSegmenter::new_dictionary(..)` → `[0, 9, 21, 30, 36, 42]`\n(`segment_utf16`: `[0, 3, 7, 10, 12, 14]`)\n- `WordSegmenter::new_neo_for_non_complex_scripts(..).load_dictionary()`\n→ `[0, 9, 21, 30, 36]` — the terminal breakpoint is missing\n- The raw `DictionaryBreakIterator` for the Thai dictionary already\nyields `[9, 21, 30, 36]`, i.e. the terminal break is lost inside the\ndictionary iterator. Other inputs ending in `ร์` show the same\n(`ฟลูเอนเซอร์` → `[12, 21, 27]` for len 33); `เอนเซอร์`, `คอมพิวเตอร์`,\n`ซอฟต์แวร์`, `ติวเตอร์`, `เซอร์ไพรส์`, `สิงคโปร์` are fine.\n\nSuspected cause: `components/segmenter/src/complex/dictionary.rs`,\n`DictionaryBreakIterator::next()` —\nthe end-of-input branch returns the pending `intermediate_length`\nwithout rewinding\n`self.iter`/`self.grapheme_iter` to `previous_match` (the `NoMatch`\nbranch does rewind), so the\ntext after the last intermediate match is never processed. The V1 rule\niterator appears to\ncompensate by emitting `self.len` at EOT; the V2 iterator trusts the\ndictionary list and loses\nthe break.\n\nA local one-hunk fix (same rewind in the EOT branch) fixes the repro and\nkeeps the entire\n`icu_segmenter` test suite green; rerunning the 53-case corpus with the\nfix changes only this\ninput. Happy to submit it as a separate PR if useful.\n\n(Also observed with temporary instrumentation: `grapheme_iter` can be\ndesynchronised from\n`self.iter` at the start of a later `next()` call — same family as #8195\n/\n`test_dictionary_grapheme_rewind`.)\n\n## Verification\n\n```\ncargo fmt --all -- --check\ncargo clippy -p icu_segmenter --all-targets --all-features\ncargo test -p icu_segmenter --all-features\n```\n\n## Changelog (N/A)\n\nTest-only change; no behavior changes."
    },
    {
      "commit": "a59ab860d4bda548e94dfbf992d87fe1f761bc55",
      "tree": "580bb11487f8df1b07887d30f7e703d4ed75ca63",
      "parents": [
        "cbac8cb4b96c49196979a123a9ae2c95fdf38042"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Wed Sep 30 13:19:22 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 30 13:19:22 2026"
      },
      "message": "Fix `yoke-derive` MSRV (#8528)\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "cbac8cb4b96c49196979a123a9ae2c95fdf38042",
      "tree": "344d728332116ac603418aa019edd4eb44ab9b3b",
      "parents": [
        "b18b9fc33964aa0820c54662692ff36ccba7d335"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Sep 30 13:10:25 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 30 13:10:25 2026"
      },
      "message": "Bump brace-expansion from 5.0.8 to 5.0.12 in /tools/web-demo (#8526)\n\nBumps [brace-expansion](https://github.com/juliangruber/brace-expansion)\nfrom 5.0.8 to 5.0.12.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/f3410159d768f56c9d9f4511d3e1b46425fc1099\"\u003e\u003ccode\u003ef341015\u003c/code\u003e\u003c/a\u003e\n5.0.12\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/33a5ef17b8d800bbfa8c52b14c39043b6aac1a96\"\u003e\u003ccode\u003e33a5ef1\u003c/code\u003e\u003c/a\u003e\nMerge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/82479277b90f2f86263e946f9ff89689b3734568\"\u003e\u003ccode\u003e8247927\u003c/code\u003e\u003c/a\u003e\n5.0.11\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/935d78f32f335b2ff76578e5c5e877d31ae9888c\"\u003e\u003ccode\u003e935d78f\u003c/code\u003e\u003c/a\u003e\nMerge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/df7682f386cdf2d7fef6067bc78ed70d824e1f3f\"\u003e\u003ccode\u003edf7682f\u003c/code\u003e\u003c/a\u003e\n5.0.10\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/1ade9de71f3a8719c82c61a7977121067bb55b02\"\u003e\u003ccode\u003e1ade9de\u003c/code\u003e\u003c/a\u003e\nnpm run format\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/6735c94873ca570bcdd6a0690033bdd3126379d3\"\u003e\u003ccode\u003e6735c94\u003c/code\u003e\u003c/a\u003e\nMerge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/4e7046543469d31e2b324b1bf14d8606d74f7f18\"\u003e\u003ccode\u003e4e70465\u003c/code\u003e\u003c/a\u003e\nchore: ensure prettier formatting (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/154\"\u003e#154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/fd7a5e34cfcd9a9df6e0ee17817807104392ecff\"\u003e\u003ccode\u003efd7a5e3\u003c/code\u003e\u003c/a\u003e\nBump ip-address from 10.2.0 to 10.4.0 (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/152\"\u003e#152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/commit/1790143e9aa05279b087b94104c03d3cb775e2e4\"\u003e\u003ccode\u003e1790143\u003c/code\u003e\u003c/a\u003e\nBump uuid and \u003ccode\u003e@​tapjs/processinfo\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/juliangruber/brace-expansion/issues/120\"\u003e#120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/juliangruber/brace-expansion/compare/v5.0.8...v5.0.12\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dbrace-expansion\u0026package-manager\u003dnpm_and_yarn\u0026previous-version\u003d5.0.8\u0026new-version\u003d5.0.12)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts\npage](https://github.com/unicode-org/icu4x/network/alerts).\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "b18b9fc33964aa0820c54662692ff36ccba7d335",
      "tree": "f490c9c6918a7d2692356f1946de858e867a31e3",
      "parents": [
        "91457a4954287800a0b77732db4261c584bf25ce"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Tue Sep 29 23:59:14 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 29 23:59:14 2026"
      },
      "message": "Initial fieldbag \u003c\u003d\u003e fieldset code (#8517)"
    },
    {
      "commit": "91457a4954287800a0b77732db4261c584bf25ce",
      "tree": "e18fe03f36ad24bedee2119876121c329370a011",
      "parents": [
        "0cb40c347c03204825cfab864480f222be5a1c01"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Tue Sep 29 16:07:10 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 29 16:07:10 2026"
      },
      "message": "Remove numbering system override warning (#8525)\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "0cb40c347c03204825cfab864480f222be5a1c01",
      "tree": "c111aa8032c1de3b68b4f91453d6ceaadd045c04",
      "parents": [
        "e3f78b26bb76dfa1e25fc8dae5e83e3e01b9be30"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Tue Sep 29 07:33:05 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 29 07:33:05 2026"
      },
      "message": "Add `TinyAsciiStr::default` (#8524)\n\nWe already have `TinyAsciiStr::EMPTY` and\n`UnvalidatedTinyAsciiStr::default()`. `TinyAsciiStr::EMPTY` is annoying\nbecause clippy will yell at you if you write `\u0026mut TinyAsciiStr::EMPTY`,\nwhereas `\u0026mut TinyAsciiStr::default()` is fine.\n\n## Changelog\n\n- `tinystr`\n  - Add `impl Default for TinyAsciiStr\u003cN\u003e`"
    },
    {
      "commit": "e3f78b26bb76dfa1e25fc8dae5e83e3e01b9be30",
      "tree": "fa7007d47f803778db5adb9a03bbcf000c03586c",
      "parents": [
        "499002b68a169585eeb3ba13608abad66f6d3720"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Tue Sep 29 07:31:22 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 29 07:31:22 2026"
      },
      "message": "Update to ICU RC (#8521)\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "499002b68a169585eeb3ba13608abad66f6d3720",
      "tree": "eae3d23b104a9ecec0e2e7f60fc29e5389231247",
      "parents": [
        "41bdba404541ffc8b091b99b9ddd0b5a27d283eb"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Wed Sep 23 21:13:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 23 21:13:52 2026"
      },
      "message": "Add quote handling to Uts35DateTimePatternTokenizer and share with reference::Parser (#8511)\n\nCo-authored-by: Gemini \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "41bdba404541ffc8b091b99b9ddd0b5a27d283eb",
      "tree": "d4c0ab244f763f436481cc348ceb53acad8fb708",
      "parents": [
        "d1bf2f27ddeabbb61ee50f7cf1dac151aaa0d692"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Wed Sep 23 17:06:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 23 17:06:52 2026"
      },
      "message": "TZDB 2026d (#8508)"
    },
    {
      "commit": "d1bf2f27ddeabbb61ee50f7cf1dac151aaa0d692",
      "tree": "d8e0dd0c76a9b46d10c0844a32331a60b8794e73",
      "parents": [
        "ab310386ded7b3f0dd09705acc160f95eba90f8c"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Wed Sep 23 15:12:48 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 23 15:12:48 2026"
      },
      "message": "CLDR 49 beta 1 (#8514)\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "ab310386ded7b3f0dd09705acc160f95eba90f8c",
      "tree": "b7300f106082f1d1df1b03eec0bab3cc997bcef3",
      "parents": [
        "9c05bc6ee749de52c584f9e8acee0509d58b63a5"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Tue Sep 22 16:52:25 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 22 16:52:25 2026"
      },
      "message": "Don\u0027t fail datagen CI for Cargo.lock (#8513)\n\nIt should only report diffs in the `provider/data` directory. The `tidy`\njob already reports out-of-date `Cargo.lock`s.\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "9c05bc6ee749de52c584f9e8acee0509d58b63a5",
      "tree": "12f4aa8c42c977fbef071f144cdb803f339c0c4d",
      "parents": [
        "953ef6f1c6e091d95a45aa5627bfc53a75918e7a"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Mon Sep 21 21:59:47 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 21 21:59:47 2026"
      },
      "message": "Initial code structure for icu_datetime::fieldbag (#8503)\n\n#8434\n\nNo AI was used in writing this PR.\n\n## Changelog\n\nicu_datetime: New module `fieldbag` for expressing field-by-field models for datetime formats."
    },
    {
      "commit": "953ef6f1c6e091d95a45aa5627bfc53a75918e7a",
      "tree": "a5f4c9d0823ceaa5fef125ac3f4ca149d6ad44c3",
      "parents": [
        "b064861e0c2700485b852302aacce92b26633d5f"
      ],
      "author": {
        "name": "Martin Chrástek",
        "email": "chrastek12@gmail.com",
        "time": "Fri Sep 18 13:08:00 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 18 13:08:00 2026"
      },
      "message": "fix: UnicodeSet parser to support surrogate code points (#8507)\n\nThis PR fixes #3893 – The UnicodeSet parser now supports surrogate code\npoints (U+D800–U+DFFF) in escape sequences like `\\uD800`, `\\x{D800}`,\nand `\\U0000D800`.\n\n## Problem\n\nThe unescaping code in `icu_unicodeset_parser` only worked for Unicode\nscalar values (Rust `char`s). Escape sequences for surrogate code points\n(e.g., `icu_unicodeset_parser::parse(r\"[^\\uD800-\\uE0FF]\")`) incorrectly\nreturned an `InvalidEscape` error.\n\n## Solution\n\nChanged the internal representation from `char` to `u32` throughout the\nparser\u0027s escape handling, while preserving the public API at boundaries:\n\n- **`parse_hex_digits_into_code_point`** now returns `u32` and validates\n`num \u003c\u003d char::MAX` instead of using `char::try_from`\n- **`SingleOrMultiChar`** variants hold `u32` instead of `char`\n- All builder calls use `add32`/`add_range32` instead of\n`add_char`/`add_range`\n- **String contexts** (`{\\uD800}`) still reject surrogates with\n`InvalidEscape`, since Rust\u0027s `String` cannot represent them\n- **Public API** (`VariableValue::Char`,\n`ParseErrorKind::UnexpectedChar`) unchanged\n\n## Testing\n\nAdded `test_surrogate_code_points` covering:\n- Single surrogate (`\\uD800`)\n- Surrogate range (`\\uD800-\\uD8FF`)\n- Complement with surrogates (`[^\\uD800-\\uE0FF]` — the exact failing\ncase from the issue)\n- Hex bracketed (`\\x{D800}`), `\\U` escape (`\\U0000D800`)\n- Multi-escape (`\\x{D800 D801 D802}`)\n- Surrogates correctly rejected in string contexts\n\n## Changelog\n\nicu_properties: Fix UnicodeSet parser to support surrogate code points\nin escape sequences\n- Escape sequences like `\\uD800`, `\\x{D800}`, and `\\U0000D800` now parse\ncorrectly\n  - Surrogates in string contexts (e.g., `{\\uD800}`) are still rejected"
    },
    {
      "commit": "b064861e0c2700485b852302aacce92b26633d5f",
      "tree": "61d8f23ef4c3d14c88bc26c890df34bf03aa9621",
      "parents": [
        "891e494c4f9a53330750ed212a4f7d56e0cfca6f"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Thu Sep 17 17:03:11 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 17 17:03:11 2026"
      },
      "message": "Update scorecard.yml (#8504)\n\nThis is the latest workflow file from\nhttps://github.com/ossf/scorecard-action#manual-action-setup\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "891e494c4f9a53330750ed212a4f7d56e0cfca6f",
      "tree": "e3fe08b7ec569f62e61e081dba798ac3ce337d76",
      "parents": [
        "b16c7c4957897eb3e9c07c0485bd17a0c9a6e29a"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Thu Sep 17 14:36:31 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 17 14:36:31 2026"
      },
      "message": "Bump askama (#8502)\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "b16c7c4957897eb3e9c07c0485bd17a0c9a6e29a",
      "tree": "23f487fb79ef48efeae1d880b60ea731858c4820",
      "parents": [
        "9fe8782f06500c17e6509aeec6d522fc9b6478d0"
      ],
      "author": {
        "name": "Henri Sivonen",
        "email": "hsivonen@hsivonen.fi",
        "time": "Wed Sep 16 22:21:38 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 16 22:21:38 2026"
      },
      "message": "Retain trie value for Hangul syllables in push_decomposed_starter (#8484)\n\n## Changelog\n\nicu_collator: Retain trie value for Hangul syllables in\npush_decomposed_starter\n* Retain marker for Hangul syllables when decomposing everything except\nHangul syllables in lookahead."
    },
    {
      "commit": "9fe8782f06500c17e6509aeec6d522fc9b6478d0",
      "tree": "33ab752281890669516d0da2b3c4345a2cafd4ab",
      "parents": [
        "cf8ed88da34b3165bbd6afa974f847152f4f2b22"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Wed Sep 16 18:53:42 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 16 18:53:42 2026"
      },
      "message": "Update BidiMirroring.txt test data for Unicode 18.0 (#8500)"
    },
    {
      "commit": "cf8ed88da34b3165bbd6afa974f847152f4f2b22",
      "tree": "2b30f2f5579a8a3d7c5e6bc19e0190cb1408918e",
      "parents": [
        "a82b27cc8210c13d879728046c68687dbce80487"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Wed Sep 16 17:24:24 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 16 17:24:24 2026"
      },
      "message": "Inherit day width from stock patterns only for Short MD formats (#8497)\n\n## Changelog\n\n* icu_provider_source: Always select numeric day for Medium and Long\nyearless date patterns in datagen, inheriting day width from stock\npatterns only for Short width."
    },
    {
      "commit": "a82b27cc8210c13d879728046c68687dbce80487",
      "tree": "240c10402a758aaae4234475e6f7c9da8217a45a",
      "parents": [
        "9597ec17b717dfc343f52fbd8b14d440a29805f9"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Wed Sep 16 13:27:58 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 16 13:27:58 2026"
      },
      "message": "Format amounts with the separators of their currency (#8481)\n\nReplaces #8441\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "9597ec17b717dfc343f52fbd8b14d440a29805f9",
      "tree": "86ec46c3b2e8de4b509dd845f75d048909a46ffd",
      "parents": [
        "c1eef4fdaeb0f188bf3d215736848d06ff3c51e7"
      ],
      "author": {
        "name": "xtqqczze",
        "email": "45661989+xtqqczze@users.noreply.github.com",
        "time": "Wed Sep 16 12:31:25 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 16 12:31:25 2026"
      },
      "message": "refactor(workspace): bump `clap` to v4.6.7 (#8498)"
    },
    {
      "commit": "c1eef4fdaeb0f188bf3d215736848d06ff3c51e7",
      "tree": "cc739e8cdfedce90db43c0d78a954151a2ce9c09",
      "parents": [
        "80d122ed148c83dfdf9aeb76c663c2a100c1c443"
      ],
      "author": {
        "name": "Shane F. Carr",
        "email": "shane@unicode.org",
        "time": "Tue Sep 15 21:29:47 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 15 21:29:47 2026"
      },
      "message": "Update version for derive crates (#8477)\n\n#8293"
    },
    {
      "commit": "80d122ed148c83dfdf9aeb76c663c2a100c1c443",
      "tree": "611e5ecbc37b7b231064e674c941143525647f9d",
      "parents": [
        "b94aad383ec6ab6e3c263022257bbb0ca101243c"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Tue Sep 15 14:17:45 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 15 14:17:45 2026"
      },
      "message": "Move properties codegen sources (#8494)\n\nIt\u0027s not test data.\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "b94aad383ec6ab6e3c263022257bbb0ca101243c",
      "tree": "bb2fdf2bbba696a4ec5fa168be01a3f43bc4e237",
      "parents": [
        "e6056f3df7467e36adfe847a9d4e44858dd0ed77"
      ],
      "author": {
        "name": "Robert Bastian",
        "email": "4706271+robertbastian@users.noreply.github.com",
        "time": "Mon Sep 14 17:04:41 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 14 17:04:41 2026"
      },
      "message": "Always check for vanguard/ziguard diffs (#8491)\n\nCurrently testdata tzdb does not match actual tzdb, because we generate\n`rearguard.zi` and `vanguard.zi` in `cargo make download-repo-sources`.\nWe then generate bakeddata with testdata tzdb, which is suboptimal (i.e\nwith https://github.com/unicode-org/icu4x/pull/8450).\n\nInstead, generate these files at runtime, if `awk` is available, and\nskip the check otherwise (as is currently done). This does not result in\ndata diffs, just whether warnings are printed. Github CI has `awk`, as\ndo most developer machines, so we\u0027ll see the warnings.\n\n\n## Changelog\n\nN/A"
    },
    {
      "commit": "e6056f3df7467e36adfe847a9d4e44858dd0ed77",
      "tree": "bf8df45ebccc710d656f2454574a93572ec4c18a",
      "parents": [
        "ef1b7c5dad47951994804ce3741ff5f822f77cbc"
      ],
      "author": {
        "name": "Younies Mahmoud",
        "email": "younies.mahmoud@gmail.com",
        "time": "Sat Sep 12 11:40:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 12 11:40:08 2026"
      },
      "message": "refactor(currency): replace TinyAsciiStr\u003c1\u003e with CurrencySymbolWidth enum (#8488)\n\n### Stack\n\n1. #8488 (👈 This PR)\n2. #8487\n\n```mermaid\ngraph TD\n    main[\"unicode-org:main\"]\n    pr1[\"PR 1 (#8488): Refactor TinyAsciiStr\u003c1\u003e to CurrencySymbolWidth enum (This PR)\"]\n    pr2[\"PR 2 (#8487): Fall back narrow symbol to standard symbol\"]\n    main --\u003e pr1\n    pr1 --\u003e pr2\n    style pr1 stroke:#2ea043,stroke-width:3px\n```\n\n---\n\n## Description\n\nRefactors the representation of currency symbol width in `components/experimental` from a stringly-typed `TinyAsciiStr\u003c1\u003e` (`\"s\"` and `\"n\"`) to a dedicated, type-safe enum `CurrencySymbolWidth`:\n\n- Defines `pub enum CurrencySymbolWidth { Short, Narrow }` with `as_tinystr()` and `as_str()` helper methods.\n- Updates `CurrencySymbolsV1::make_attributes` to accept `CurrencySymbolWidth`.\n- Updates `CurrencySymbolsV1::SHORT` and `NARROW` constants to be `CurrencySymbolWidth::Short` and `CurrencySymbolWidth::Narrow`.\n- Updates internal constructors in `formatter.rs` (`try_new_essential` and `try_new_essential_unstable`) to take `CurrencySymbolWidth`.\n\n## Memory / Performance Notes\n\nZero runtime overhead. The enum is `Copy` and compiles to a 1-byte integer representation, maintaining zero-allocation properties across data requests.\n\n## Changelog\n\nN/A"
    }
  ],
  "next": "ef1b7c5dad47951994804ce3741ff5f822f77cbc"
}
