Skip to content

Upgrade to icu4x 2.0.0#37823

Open
nicoburns wants to merge 1 commit intomainfrom
upgrade-icu4x
Open

Upgrade to icu4x 2.0.0#37823
nicoburns wants to merge 1 commit intomainfrom
upgrade-icu4x

Conversation

@nicoburns
Copy link
Copy Markdown
Contributor

@nicoburns nicoburns commented Jul 2, 2025

  • Upgrade direct icu dependencies to 2.0.0.
  • Upgrade idna_adapter. This upgrades the version of icu4x from the url dependency (url itself does not need to be updated for this)
  • Upstream stylo has upgraded, and we are currently maintaining a downgrade patch which we can easily revert when we are ready to upgrade.
  • The icu dependency that comes from mozjs is not upgraded.

Testing: WPT tests

Signed-off-by: Nico Burns <[email protected]>
@nicoburns nicoburns added the T-linux-wpt Do a try run of the WPT label Jul 2, 2025
@github-actions github-actions bot removed the T-linux-wpt Do a try run of the WPT label Jul 2, 2025
@github-actions
Copy link
Copy Markdown

github-actions bot commented Jul 2, 2025

🔨 Triggering try run (#16014373315) for Linux (WPT)

@github-actions
Copy link
Copy Markdown

github-actions bot commented Jul 2, 2025

Test results for linux-wpt from try job (#16014373315):

Flaky unexpected result (20)
  • OK /FileAPI/url/url-with-fetch.any.worker.html (#21517)
    • FAIL [expected PASS] subtest: Revoke blob URL after calling fetch, fetch should succeed

      promise_test: Unhandled rejection with value: object "TypeError: Network error occurred"
      

  • TIMEOUT [expected OK] /_webgl/conformance/uniforms/out-of-bounds-uniform-array-access.html (#26225)
    • NOTRUN [expected PASS] subtest: Overall test
  • OK /fetch/metadata/generated/css-font-face.sub.tentative.html (#34624)
    • FAIL [expected PASS] subtest: sec-fetch-storage-access - Not sent to non-trustworthy cross-site destination

      promise_test: Unhandled rejection with value: object "Error: Failed to query for recorded headers."
      

  • OK /html/browsers/browsing-the-web/navigating-across-documents/005.html (#27062)
    • PASS [expected FAIL] subtest: Link with onclick navigation and href navigation
  • OK /html/browsers/browsing-the-web/navigating-across-documents/009.html (#24456)
    • PASS [expected FAIL] subtest: Link with onclick form submit to javascript url with document.write and href navigation
  • OK /html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html (#28066)
    • FAIL [expected PASS] subtest: 0041 set in href="" targeting a frame and clicked

      assert_equals: expected "A" but got ""
      

    • FAIL [expected PASS] subtest: 0080 00FF set in href="" targeting a frame and clicked

      assert_equals: expected "�ÿ" but got ""
      

    • FAIL [expected PASS] subtest: 0080 00FF 0100 set in href="" targeting a frame and clicked

      assert_equals: expected "�ÿĀ" but got ""
      

  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html (#20768)
    • PASS [expected FAIL] subtest: Tests that a fragment navigation in the unload handler will not block the initial navigation
  • OK /html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html (#28697)
    • PASS [expected FAIL] subtest: aElement.click() before the load event must NOT replace
  • OK /html/browsers/history/the-history-interface/traverse_the_history_3.html (#21383)
    • PASS [expected FAIL] subtest: Multiple history traversals, last would be aborted
  • PASS [expected FAIL] /html/canvas/element/manual/text/canvas.2d.disconnected.html (#30063)
  • TIMEOUT [expected OK] /html/interaction/focus/the-autofocus-attribute/document-with-fragment-empty.html (#28259)
    • TIMEOUT [expected FAIL] subtest: Autofocus elements in top-level browsing context's documents with empty fragments should work.

      Test timed out
      

  • TIMEOUT [expected OK] /html/interaction/focus/the-autofocus-attribute/document-with-fragment-nonexistent.html (#28259)
    • TIMEOUT [expected FAIL] subtest: Autofocus elements in top-level browsing context's documents with non-existent fragments should work.

      Test timed out
      

  • OK [expected CRASH] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html (#22647)
    • FAIL [expected TIMEOUT] subtest: Check that popups from a sandboxed iframe escape the sandbox if allow-popups-to-escape-sandbox is used

      assert_equals: It came from a sandboxed iframe expected "null" but got "http://web-platform.test:8000"
      

  • OK /html/semantics/forms/form-submission-0/multipart-formdata.window.html (#28725)
    • PASS [expected FAIL] subtest: multipart/form-data: Basic test (normal form)
  • OK /preload/prefetch-document.html (#37210)
    • FAIL [expected PASS] subtest: different-site document prefetch with 'as=document' should not be consumed

      assert_equals: expected 2 but got 1
      

  • TIMEOUT /preload/preload-resource-match.https.html
    • TIMEOUT [expected FAIL] subtest: Loading script (use-credentials) with link (no-cors) should discard the preloaded response

      Test timed out
      

    • NOTRUN [expected TIMEOUT] subtest: Loading script (use-credentials) with link (anonymous) should discard the preloaded response
  • OK [expected TIMEOUT] /webmessaging/with-ports/017.html (#24486)
    • PASS [expected TIMEOUT] subtest: origin of the script that invoked the method, about:blank
  • OK [expected TIMEOUT] /webmessaging/without-ports/017.html (#24486)
    • PASS [expected TIMEOUT] subtest: origin of the script that invoked the method, about:blank
  • OK /xhr/open-url-multi-window-5.htm (#23360)
    • FAIL [expected PASS] subtest: XMLHttpRequest: open() resolving URLs (multi-Window; 5)

      assert_throws_dom: function "function() {client.open("GET", "...") }" did not throw
      

  • OK /xhr/send-redirect.htm (#32026)
    • FAIL [expected PASS] subtest: XMLHttpRequest: send() - Redirects (basics) (301, GET, redirect.py%3Flocation%3Dcontent.py)

      assert_equals: expected (string) "GET" but got (object) null
      

Stable unexpected results that are known to be intermittent (19)
  • FAIL [expected PASS] /_mozilla/mozilla/sslfail.html (#10760)
  • TIMEOUT [expected OK] /_mozilla/mozilla/window_resizeTo.html (#36741)
    • TIMEOUT [expected PASS] subtest: Popup onresize event fires after resizeTo

      Test timed out
      

  • FAIL [expected PASS] /css/css-grid/grid-items/grid-auto-margin-and-replaced-item-001.html (#37162)
  • FAIL [expected PASS] /css/css-sizing/dynamic-available-size-iframe.html (#31559)
  • OK /html/browsers/browsing-the-web/navigating-across-documents/empty-iframe-load-event.html (#29066)
    • FAIL [expected PASS] subtest: Check execution order from nested timeout

      assert_equals: Expected nested setTimeout to run second expected true but got false
      

    • FAIL [expected PASS] subtest: Check execution order on load handler

      assert_equals: Expected onload to run first expected false but got true
      

  • OK /html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html (#28681)
    • PASS [expected FAIL] subtest: load &amp; pageshow events do not fire on contentWindow of &lt;iframe&gt; element created with src=''
    • PASS [expected FAIL] subtest: load &amp; pageshow events do not fire on contentWindow of &lt;iframe&gt; element created with src='about:blank'
  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.html (#29049)
    • PASS [expected FAIL] subtest: Same-origin navigation started from unload handler must be ignored
  • OK /html/browsers/browsing-the-web/navigating-across-documents/refresh/same-document-refresh.html (#34597)
    • FAIL [expected PASS] subtest: Same-Document Referrer from Refresh

      assert_equals: original page loads expected "http://web-platform.test:8000/html/browsers/browsing-the-web/navigating-across-documents/refresh/resources/refresh-with-section.sub.html?url=%23section" but got "http://web-platform.test:8000/html/browsers/browsing-the-web/navigating-across-documents/refresh/resources/refresh-with-section.sub.html?url=%23section#section"
      

  • TIMEOUT [expected OK] /html/interaction/focus/the-autofocus-attribute/document-with-fragment-top.html (#28259)
    • TIMEOUT [expected FAIL] subtest: Autofocus elements in top-level browsing context's documents with "top" fragments should work.

      Test timed out
      

  • TIMEOUT /html/interaction/focus/the-autofocus-attribute/supported-elements.html (#24145)
    • PASS [expected NOTRUN] subtest: Non-HTMLElement should not support autofocus
    • FAIL [expected NOTRUN] subtest: Host element with delegatesFocus should support autofocus

      assert_equals: expected Element node &lt;div autofocus=""&gt;&lt;/div&gt; but got Element node &lt;body&gt;&lt;div autofocus=""&gt;&lt;/div&gt;&lt;/body&gt;
      

    • TIMEOUT [expected NOTRUN] subtest: Host element with delegatesFocus including no focusable descendants should be skipped

      Test timed out
      

  • CRASH [expected TIMEOUT] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html (#22667)
  • OK [expected TIMEOUT] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html (#24057)
    • FAIL [expected TIMEOUT] subtest: Check that popups from a sandboxed iframe escape the sandbox if allow-popups-to-escape-sandbox is used

      assert_equals: It came from a sandboxed iframe expected "null" but got "http://web-platform.test:8000"
      

  • OK [expected TIMEOUT] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html (#24066)
  • TIMEOUT /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html (#22154)
    • NOTRUN [expected FAIL] subtest: Check that popups from a sandboxed iframe do not escape the sandbox
  • OK [expected TIMEOUT] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html (#24066)
  • OK /html/semantics/embedded-content/the-video-element/intrinsic_sizes.htm (#37173)
    • FAIL [expected PASS] subtest: default object size after src is removed

      assert_equals: expected "300px" but got "320px"
      

  • OK /html/semantics/scripting-1/the-script-element/module/dynamic-import/blob-url.any.html (#33948)
    • FAIL [expected PASS] subtest: Revoking a blob URL immediately after calling import will not fail

      promise_test: Unhandled rejection with value: object "TypeError: Dynamic import failed"
      

  • OK /preload/preload-error.sub.html (#37177)
    • FAIL [expected PASS] subtest: 404 (style): main

      assert_greater_than: http://web-platform.test:8000/preload/resources/dummy.css?pipe=status%28404%29&amp;label=style should be loaded expected a number greater than 0 but got 0
      

    • PASS [expected FAIL] subtest: 404 (script): main
    • FAIL [expected PASS] subtest: CORS (script): main

      assert_greater_than: http://not-web-platform.test:8000/preload/resources/dummy.js?pipe=header%28Access-Control-Allow-Origin%2C*%29&amp;label=script should be loaded expected a number greater than 0 but got 0
      

    • PASS [expected FAIL] subtest: 404 (xhr): main
    • PASS [expected FAIL] subtest: CORS (xhr): main
    • FAIL [expected PASS] subtest: Decode-error (style): main

      assert_greater_than: http://web-platform.test:8000/preload/resources/dummy.xml?pipe=header%28Content-Type%2Ctext%2Fcss%29&amp;label=style should be loaded expected a number greater than 0 but got 0
      

    • PASS [expected FAIL] subtest: Decode-error (script): main
  • OK [expected TIMEOUT] /resource-timing/tentative/document-initiated.html (#37785)
Stable unexpected results (3)
  • PASS [expected FAIL] /css/css-text/line-breaking/line-breaking-023.html
  • OK /url/IdnaTestV2.window.html
    • PASS [expected FAIL] subtest: ToASCII("≠ᢙ&gt;̸.솣-ᡴႠ")
    • PASS [expected FAIL] subtest: ToASCII("≠ᢙ≯.솣-ᡴႠ")
    • PASS [expected FAIL] subtest: ToASCII("𞤥󠅮.ᡄႮ")
    • PASS [expected FAIL] subtest: ToASCII("𞤥󠅮.ᡄႮ")
    • PASS [expected FAIL] subtest: ToASCII("𞤃󠅮.ᡄႮ")
    • PASS [expected FAIL] subtest: ToASCII("𞤃.ᡄႮ")
    • PASS [expected FAIL] subtest: ToASCII("𞤃󠅮.ᡄႮ")
    • PASS [expected FAIL] subtest: ToASCII("𞤥.ᡄႮ")
    • PASS [expected FAIL] subtest: ToASCII("ß。𐋳Ⴌྸ")
    • PASS [expected FAIL] subtest: ToASCII("ß。𐋳Ⴌྸ")
    • And 58 more unexpected results...
  • OK /url/toascii.window.html
    • PASS [expected FAIL] subtest: look᠎out.net (using URL)
    • PASS [expected FAIL] subtest: look᠎out.net (using URL.host)
    • PASS [expected FAIL] subtest: look᠎out.net (using URL.hostname)
    • PASS [expected FAIL] subtest: look᠎out.net (using &lt;a&gt;)
    • PASS [expected FAIL] subtest: look᠎out.net (using &lt;a&gt;.host)
    • PASS [expected FAIL] subtest: look᠎out.net (using &lt;a&gt;.hostname)
    • PASS [expected FAIL] subtest: look᠎out.net (using &lt;area&gt;)
    • PASS [expected FAIL] subtest: look᠎out.net (using &lt;area&gt;.host)
    • PASS [expected FAIL] subtest: look᠎out.net (using &lt;area&gt;.hostname)
    • PASS [expected FAIL] subtest: lookout.net (using URL)
    • And 26 more unexpected results...

@github-actions
Copy link
Copy Markdown

github-actions bot commented Jul 2, 2025

⚠️ Try run (#16014373315) failed.

@mrobinson
Copy link
Copy Markdown
Member

  | /home/runner/work/servo/servo/Cargo.lock:1: found 2 duplicate entries for crate 'icu_collections':
 icu_collections 1.5.0 registry+https://github.com/rust-lang/crates.io-index
icu_collections 2.0.0 registry+https://github.com/rust-lang/crates.io-index
Error: found 2 duplicate entries for crate 'icu_collections':
 icu_collections 1.5.0 registry+https://github.com/rust-lang/crates.io-index
icu_collections 2.0.0 registry+https://github.com/rust-lang/crates.io-index

  | /home/runner/work/servo/servo/Cargo.lock:1: found 2 duplicate entries for crate 'icu_normalizer':
 icu_normalizer 1.5.0 registry+https://github.com/rust-lang/crates.io-index
icu_normalizer 2.0.0 registry+https://github.com/rust-lang/crates.io-index
Error: found 2 duplicate entries for crate 'icu_normalizer':
 icu_normalizer 1.5.0 registry+https://github.com/rust-lang/crates.io-index
icu_normalizer 2.0.0 registry+https://github.com/rust-lang/crates.io-index

  | /home/runner/work/servo/servo/Cargo.lock:1: found 2 duplicate entries for crate 'icu_normalizer_data':
 icu_normalizer_data 1.5.1 registry+https://github.com/rust-lang/crates.io-index
icu_normalizer_data 2.0.0 registry+https://github.com/rust-lang/crates.io-index
Error: found 2 duplicate entries for crate 'icu_normalizer_data':
 icu_normalizer_data 1.5.1 registry+https://github.com/rust-lang/crates.io-index
icu_normalizer_data 2.0.0 registry+https://github.com/rust-lang/crates.io-index

  | /home/runner/work/servo/servo/Cargo.lock:1: found 2 duplicate entries for crate 'icu_properties':
 icu_properties 1.5.1 registry+https://github.com/rust-lang/crates.io-index
icu_properties 2.0.1 registry+https://github.com/rust-lang/crates.io-index
Error: found 2 duplicate entries for crate 'icu_properties':
 icu_properties 1.5.1 registry+https://github.com/rust-lang/crates.io-index
icu_properties 2.0.1 registry+https://github.com/rust-lang/crates.io-index

  | /home/runner/work/servo/servo/Cargo.lock:1: found 2 duplicate entries for crate 'icu_properties_data':
 icu_properties_data 1.5.1 registry+https://github.com/rust-lang/crates.io-index
icu_properties_data 2.0.1 registry+https://github.com/rust-lang/crates.io-index
Error: found 2 duplicate entries for crate 'icu_properties_data':
 icu_properties_data 1.5.1 registry+https://github.com/rust-lang/crates.io-index
icu_properties_data 2.0.1 registry+https://github.com/rust-lang/crates.io-index

  | /home/runner/work/servo/servo/Cargo.lock:1: found 2 duplicate entries for crate 'icu_provider':
 icu_provider 1.5.0 registry+https://github.com/rust-lang/crates.io-index
icu_provider 2.0.0 registry+https://github.com/rust-lang/crates.io-index
Error: found 2 duplicate entries for crate 'icu_provider':
 icu_provider 1.5.0 registry+https://github.com/rust-lang/crates.io-index
icu_provider 2.0.0 registry+https://github.com/rust-lang/crates.io-index

  | /home/runner/work/servo/servo/Cargo.lock:1: found 2 duplicate entries for crate 'icu_segmenter':
 icu_segmenter 1.5.0 registry+https://github.com/rust-lang/crates.io-index
icu_segmenter 2.0.0 registry+https://github.com/rust-lang/crates.io-index
Error: found 2 duplicate entries for crate 'icu_segmenter':
 icu_segmenter 1.5.0 registry+https://github.com/rust-lang/crates.io-index
icu_segmenter 2.0.0 registry+https://github.com/rust-lang/crates.io-index

  | /home/runner/work/servo/servo/Cargo.lock:1: found 2 duplicate entries for crate 'icu_segmenter_data':
 icu_segmenter_data 1.5.1 registry+https://github.com/rust-lang/crates.io-index
icu_segmenter_data 2.0.0 registry+https://github.com/rust-lang/crates.io-index
Error: found 2 duplicate entries for crate 'icu_segmenter_data':
 icu_segmenter_data 1.5.1 registry+https://github.com/rust-lang/crates.io-index
icu_segmenter_data 2.0.0 registry+https://github.com/rust-lang/crates.io-index

  | /home/runner/work/servo/servo/Cargo.lock:1: found 2 duplicate entries for crate 'litemap':
 litemap 0.7.5 registry+https://github.com/rust-lang/crates.io-index
litemap 0.8.0 registry+https://github.com/rust-lang/crates.io-index
Error: found 2 duplicate entries for crate 'litemap':
 litemap 0.7.5 registry+https://github.com/rust-lang/crates.io-index
litemap 0.8.0 registry+https://github.com/rust-lang/crates.io-index

  | /home/runner/work/servo/servo/Cargo.lock:1: found 2 duplicate entries for crate 'tinystr':
 tinystr 0.7.6 registry+https://github.com/rust-lang/crates.io-index
tinystr 0.8.1 registry+https://github.com/rust-lang/crates.io-index
Error: found 2 duplicate entries for crate 'tinystr':
 tinystr 0.7.6 registry+https://github.com/rust-lang/crates.io-index
tinystr 0.8.1 registry+https://github.com/rust-lang/crates.io-index

  | /home/runner/work/servo/servo/Cargo.lock:1: found 2 duplicate entries for crate 'writeable':
 writeable 0.5.5 registry+https://github.com/rust-lang/crates.io-index
writeable 0.6.1 registry+https://github.com/rust-lang/crates.io-index

  | /home/runner/work/servo/servo/Cargo.lock:1: found 2 duplicate entries for crate 'yoke':
 yoke 0.7.5 registry+https://github.com/rust-lang/crates.io-index
yoke 0.8.0 registry+https://github.com/rust-lang/crates.io-index

  | /home/runner/work/servo/servo/Cargo.lock:1: found 2 duplicate entries for crate 'yoke-derive':
 yoke-derive 0.7.5 registry+https://github.com/rust-lang/crates.io-index
yoke-derive 0.8.0 registry+https://github.com/rust-lang/crates.io-index

  | /home/runner/work/servo/servo/Cargo.lock:1: found 2 duplicate entries for crate 'zerotrie':
 zerotrie 0.1.3 registry+https://github.com/rust-lang/crates.io-index
zerotrie 0.2.2 registry+https://github.com/rust-lang/crates.io-index

  | /home/runner/work/servo/servo/Cargo.lock:1: found 2 duplicate entries for crate 'zerovec':
 zerovec 0.10.4 registry+https://github.com/rust-lang/crates.io-index
zerovec 0.11.2 registry+https://github.com/rust-lang/crates.io-index

  | /home/runner/work/servo/servo/Cargo.lock:1: found 2 duplicate entries for crate 'zerovec-derive':
 zerovec-derive 0.10.3 registry+https://github.com/rust-lang/crates.io-index
zerovec-derive 0.11.1 registry+https://github.com/rust-lang/crates.io-index

A lot of our dependencies still depend on 1.5.0. It would be good to know how this affects binary size.

@wusyong
Copy link
Copy Markdown
Member

wusyong commented Jul 2, 2025

icu4x contributed significant amount of binary size based on bloaty result. mozjs also contains its own icu4x (on 1.4) iirc.

@nicoburns
Copy link
Copy Markdown
Contributor Author

nicoburns commented Jul 2, 2025

It seems to be specifically mozjs and webdriver still pulling in icu4x 1.5. Both of these come from Mozilla upstream which seems to have upgraded to icu4x 2.0 last week (https://bugzilla.mozilla.org/show_bug.cgi?id=1960300). Which is also why we're running into this, because the latest upstream Stylo has upgraded.

For webdriver it looks like we might just need to request a new crates.io release.

For mozjs I'm not sure. Looks like the change hasn't hit the beta branch yet so I'd anticipate it landing in Firefox/SpiderMonkey 142 stable. @jdm @sagudev how soon do you think we might we be able to get access to a mozjs based on SpiderMonkey 142 and/or would it be feasible to backport the icu upgrade to our current Firefox branch (the change does not look small (1900 files changed) but it looks like it's mostly generated code (icu_capi) )?

@TimvdLippe
Copy link
Copy Markdown
Contributor

I looked into test failures for urlpattern and after a while discovered that we aren't at the latest version. Several PR's that wanted to upgrade that crate refer to this PR as blocker.

@jdm @sagudev Can you provide an update for the Mozjs upgrade to 142? That's tracked in servo/mozjs#588

I have posted to https://groups.google.com/a/mozilla.org/g/dev-webdriver to request a new release of the webdriver crate

@sagudev
Copy link
Copy Markdown
Member

sagudev commented Dec 12, 2025

Mozjs is currently tracking ESR channel (that is v140) and there are currently no plan to switch to anything else.

@TimvdLippe
Copy link
Copy Markdown
Contributor

Looks like the next ESR release is scheduled for October 2026: https://whattrainisitnow.com/calendar/

@mrobinson
Copy link
Copy Markdown
Member

Considering the importance of upgrading, if we indeed have to wait almost a year for this, I am in favor of patching our version of SpiderMonkey to upgrade to icu4x 2.0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants