Commit Graph

54575 Commits

Author SHA1 Message Date
Jonathan Schwender
301f7da52e Rename nightly.yml to release.yml (#42772)
The workflow is now used both for regular releases and nightly releases.

Testing: Not tested, it's a simple rename and nothing should rely on the
name `nightly.yml` (grep search)

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
(cherry picked from commit f99d9689b8)
v0.0.5
2026-02-28 10:57:09 +01:00
Martin Robinson
8fb635fbbf Backport: servoshell: Foward WindowEvent::Focused events to egui (#42470)
When doing event handling on desktop servoshell, ensure that
`WindowEvent::Focused(true)` is forwarded to egui. This makes it so that
egui knows to show the text cursor in the URL bar input field.

Testing: We currently do not have a way to test visual behavior at this
level of servoshell.
Fixes: #42091.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
(cherry picked from commit 489c0f0159)
2026-02-10 13:00:07 +08:00
Jonathan Schwender
0c786948d6 Update servoshell to 0.0.5.
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2026-02-03 16:40:03 +01:00
Servo WPT Sync
c197caff99 Sync WPT with upstream (01-02-2026) (#42267)
Automated downstream sync of changes from upstream as of 01-02-2026
[no-wpt-sync]

Signed-off-by: WPT Sync Bot <ghbot+wpt-sync@servo.org>
2026-02-01 01:31:35 +00:00
Martin Robinson
db2a7cbe2a layout: Add support for -webkit-text-security (#42181)
This change adds support for the unspecified `-webkit-text-security`
property. All major browsers support this property. The benefit of
adding this property is that the first addition of a prefixed CSS
property will allow us to start running MotionMark.

This depends on servo/stylo#295.

Testing: Three new Servo-specific tests are added for this change. There
are a few `-webkit-text-security` tests in WPT, but they do not seem
to test basic functionality.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2026-01-31 19:12:59 +00:00
Sam
6237aa4677 Merge DomObject proc-macro into #[dom_struct] (#42262)
DomObject derive should not be used standalone so let's just inline it
into dom_struct macro. This will help me with
https://github.com/servo/servo/issues/26488#issuecomment-3824301234

This should (I did not test) also improve compile times, because we do
one macro expansion less on dom_struct.

Testing: It compiles.

---------

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
2026-01-31 18:06:25 +00:00
Oriol Brufau
8637ee6388 layout: Simplify logic for border specificity (#42264)
When CSS tables collapse borders, we need to compare their specificities
to determine which border wins. One thing that the specificity takes
into account is the border-style. We were manually mapping each possible
BorderStyle to its priority, but Stylo already provides Ord, so we can
just use that instead.

Testing: Not needed, no behavior change

Signed-off-by: Oriol Brufau <obrufau@igalia.com>
2026-01-31 16:18:02 +00:00
Euclid Ye
624e9b49e1 css: Enable registered custom properties with CSSOM but stay unanimatable (#42136)
Many websites use Tailwind CSS script which utilizes registered custom
properties.
This PR makes such websites look as expected, such as #42129.

Before: 
<img width="485" height="120" alt="image"
src="https://github.com/user-attachments/assets/428000b1-eed1-4f10-bbf8-eca9e7b630f5"
/>

After:
<img width="487" height="82" alt="image"
src="https://github.com/user-attachments/assets/ab016cbf-9c00-4bd8-adc8-be28f13e42e5"
/>


Testing: Updated existing WPT results.
Fixes: #42129
Fixes: #41417 

Stylo Companion: https://github.com/servo/stylo/pull/293

---------

Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
2026-01-31 14:11:35 +00:00
Martin Robinson
1900ebc447 script: Do not consider a node an ancestor of itself in Node::is_ancestor_of (#42263)
This change fixes a crash in options collections due to the fact that a
`<select>` element was being considered an ancestor of itself. This
regression likely introduced in #40776.

This change also fills in the specification text for
`HTMLOptionCollect::Add`.

Testing: This change adds a WPT crash test.
Fixes: #41080.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2026-01-31 10:22:23 +00:00
Tim van der Lippe
e5af3ee964 script: Fix timing of frozen base URL (#42255)
Make it runs at the correct time and then also performs checks for its
scheme. The CSP check is left for a follow-up PR.

Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
2026-01-31 05:34:59 +00:00
Gae24
9c4d17e9e1 script: support JSON modules (#42138)
With import attributes enabled we can now support non javascript
modules, for now we are limited to json ones.
Switch `GlobalScope` `modulemap` to be keyed by the tuple url and
module's type.

Testing: Enabled a new directory, new tests should pass

---------

Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
Co-authored-by: Josh Matthews <josh@joshmatthews.net>
2026-01-31 01:18:51 +00:00
webbeef
58b56edf97 dom: reduce traversal in CompareDocumentPosition (#42260)
We can avoid doing 2 traversals and stop at the first matching child we
find. This ensures we are never doing the longest iteration.

Testing: covered by WPT

Signed-off-by: webbeef <me@webbeef.org>
2026-01-31 01:18:30 +00:00
Martin Robinson
68fa945f38 constellation: Gracefully handle non-existent WebViews in history changes (#42238)
Due to timing issues, history changes for closed `WebView`s can be
processed in the constellation. The best way to handle this would be to
move these operations to be methods on the `ConstellationWebView`, but
that is a larger refactor. This changes makes it so that the current
code handles this situation more gracefully.

Testing: It is difficult to test this issue because it requires opening
and
closing WebViews and is difficult to reproduce. This is a speculative
fix.
Fixes: #41079.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2026-01-30 18:13:30 +00:00
Sam
8ed35f1ce9 script: Add basic memory pressure reporting to SpiderMonkey (#42180)
By reporting memory usage of rust objects back to SM it can trigger GC
sooner and release more memory (I hope that we could use this to avoid
OOB in webgpu in the future).

Currently we use simple `size_of::<DomStruct>() +
size_of::<Box<DomStruct>>()` but it's possible to override reported
memory with `update_memory_size(self, nbytes);` on reflector. This is
mostly useful for canvases and buffers which usually have large
associated data.

Testing: None, but I am wondering if we can connect this to
`about:memory`.
Fixes: #42168

---------

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
2026-01-30 18:11:06 +00:00
Narfinger
db052c4990 script: Change some HashSets to FxHashSet (#42257)
This changes 3 occurences of HashSet to FxHashSet for speed
improvements:
- dom/notifications::pending_request_ids: Pending Request ids are
Uuid::new_v4, hence, not user assignable.
- script_thread: painters_generating_frames: These are pipeline ids and,
hence, ideal for FxHash.
- script_thread:: docs_with_no_blocking_loads: These are Dom<Document>
and their hash is the ptr address, so ideal for FxHash.

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>

Testing: These do not change functionality.

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
2026-01-30 17:02:58 +00:00
Euclid Ye
34c644d5b8 webdriver: Wait indefinitely with None timeout (#42184)
So far for `None`
[timeout](https://w3c.github.io/webdriver/#dfn-timeouts-configuration),
we've treated it effectively as no wait which is wrong:
https://github.com/web-platform-tests/wpt/pull/57332#issuecomment-3804242966.

This PR makes all `None` timeouts wait indefinitely. The funny part is,
we somehow have only done it correctly for `pageload`:
https://w3c.github.io/webdriver/#dfn-timeouts-configuration

Testing: We add test for script execution with `None` script timeout.

---------

Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
2026-01-30 09:54:07 +00:00
Narfinger
8173d821be script/storage: Switch remaining instances of bincode to postcard (#42236)
Because of the deprecation of bincode we are switching to postcard
(which will already be used by ipc-channel).
This changes all usages to postcard.

Sadly there are still some dependencies using bincode, so we are
probably increasing the binary size.

Currently we do not modify the deny.toml because we have dependencies
that depend on bincode.

Testing: Compilation should be enough for test.

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
2026-01-30 07:23:38 +00:00
Euclid Ye
962fde45f2 ci: Add 30 mins timeout to bootstrap of bencher, android, ohos, linux UT & WPT (#42249)
Also increases timeout from 10 mins to 30mins for linux build job.
Fixes: #42247

---------

Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
2026-01-30 05:36:10 +00:00
dependabot[bot]
ecb4549e11 build: bump zerocopy from 0.8.35 to 0.8.36 (#42246)
Bumps [zerocopy](https://github.com/google/zerocopy) from 0.8.35 to
0.8.36.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/google/zerocopy/releases">zerocopy's
releases</a>.</em></p>
<blockquote>
<h2>v0.8.36</h2>
<!-- raw HTML omitted -->
<h2>What's Changed</h2>
<ul>
<li>Add generic <code>Ptr::try_with</code> by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2946">google/zerocopy#2946</a></li>
<li>[pointer] Fix bug in <code>try_cast_into_no_leftover</code> by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2937">google/zerocopy#2937</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/google/zerocopy/compare/v0.8.35...v0.8.36">https://github.com/google/zerocopy/compare/v0.8.35...v0.8.36</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="1803e2c814"><code>1803e2c</code></a>
Release 0.8.36 (<a
href="https://redirect.github.com/google/zerocopy/issues/2948">#2948</a>)</li>
<li><a
href="a5aa985619"><code>a5aa985</code></a>
[pointer] Fix bug in <code>try_cast_into_no_leftover</code> (<a
href="https://redirect.github.com/google/zerocopy/issues/2937">#2937</a>)</li>
<li><a
href="d161a87fc5"><code>d161a87</code></a>
Add generic <code>Ptr::try_with</code> (<a
href="https://redirect.github.com/google/zerocopy/issues/2946">#2946</a>)</li>
<li><a
href="381021b662"><code>381021b</code></a>
Commit <code>Cargo.lock</code> and <code>tools/Cargo.lock</code> (<a
href="https://redirect.github.com/google/zerocopy/issues/2932">#2932</a>)</li>
<li>See full diff in <a
href="https://github.com/google/zerocopy/compare/v0.8.35...v0.8.36">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=zerocopy&package-manager=cargo&previous-version=0.8.35&new-version=0.8.36)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

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


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-30 03:57:26 +00:00
minghuaw
611f3ef162 script: Ensure web fonts in shadow root stylesheets are downloaded (#42151)
Added calls to download web font from stylesheet when stylesheets are
added to shadow root.

Testing: Manual testing. Added a new WPT testcase

---------

Signed-off-by: Minghua Wu <michael.wu1107@gmail.com>
2026-01-30 02:14:43 +00:00
Taym Haddadi
c847e6bc5e wpt: Add a test ensuring non-autoplay audio stays paused after a back navigation (#42109)
Testing: New WPT test added.
Fixes: #41281

---------

Signed-off-by: Taym Haddadi <haddadi.taym@gmail.com>
2026-01-29 22:14:57 +00:00
Tim van der Lippe
1133eb229a wpt: Use Webdriver for all WPT runs (#41511)
All other browsers use a single configuration for their browser
invocations on WPT. Servo historically had two: servo and servodriver.
Now that we run WPT on Servo GitHub CI with Webdriver using the
servodriver, we can align our configuration with theirs.

The existing "servo" configuration is renamed to "servo_legacy" and
"servodriver" is then renamed to "servo". This way, we preserve the
"servo" product name as defined on wpt.fyi, but we do use its webdriver
configuration.

Since webdriver is not fully working yet for debugging purposes, we keep
the "servo_legacy" configuration now. In the future, once the debugging
story has improved, we can remove "servo_legacy".

All in all, this ensures that both on local, Servo GitHub CI and on
wpt.fyi we all use the exact same configuration. I tested this locally
by running the following test:

```
./mach test-wpt tests/wpt/tests/css/css-overflow/scrollbar-gutter-dynamic-004.html
```

This does times out with the servo binary and works with the servodriver
binary.

Running the servo_legacy configuration is done via the `--servo-legacy`
flag:

```
./mach test-wpt tests/wpt/mozilla/tests/mozilla/caption.html --servo-legacy
```

Fixes #40751

---------

Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
2026-01-29 20:47:03 +00:00
Domenico Rizzo
2c770c162c [26488] Refactors GPUCanvasContext to manage context dropping. (#42243)
Moves the `Drop` implementation for `GPUCanvasContext` to a new
`DroppableGPUCanvasContext` struct.

This ensures the context destruction logic is correctly handled, as the
`GPUCanvasContext` struct itself is a DOM struct and should not have a
drop implementation. This change aligns with the requirement that DOM
types should not implement Drop.

Testing: No tests added
Fixes: #26488

Signed-off-by: Domenico Rizzo <domenico.rizzo@gmail.com>
2026-01-29 18:02:31 +00:00
Luke Warlow
bd779d141a script: Add support for :open pseudo-class (#42195)
Add support for `:open` pseudo-class. This is supported on dialog,
details and select elements.


Stylo PR: servo/stylo#297
Testing: WPTs but also
`data:text/html,<select><option>123</option></select><style>:open {
background-color: red; }</style>`. There are some tests that now error,
these previously failed due to missing `:open` and now make it further
along hitting test_driver.send_keys() which causes them to error
Fixes: #41277.

---------

Signed-off-by: Luke Warlow <lwarlow@igalia.com>
2026-01-29 17:08:51 +00:00
Euclid Ye
9e3cb9c42e mach (Android): Use CC instead of forcing CMake to build aws-lc-sys (#42232)
In #41912, the bump of `aws-lc-sys` breaks the Android build, as it
replaces CMake build with cc builder for all platforms. As fallback, we
use CMake for Android only.

Another bump of it today #42226 is supposed to fix the issue:

> Fix building for older Android targets by
[@​justsmth](https://github.com/justsmth) in
[aws/aws-lc-rs#1013](https://redirect.github.com/aws/aws-lc-rs/pull/1013)

, but it [does
not](https://github.com/servo/servo/actions/runs/21467527086/job/61832707394).

After investigation, we properly set up environment variable to make
sure C/C++ compiler bundled with NDK can be used.
This makes Android consistent with other platforms.

Testing:
https://github.com/servo/servo/actions/runs/21468482975/job/61835557765

---------

Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
2026-01-29 14:15:10 +00:00
Martin Robinson
d6197ee2f0 script: Clear layout data on shadow root during attachShadow (#42237)
When a node has `attachShadow()` successfully called on it, its
descendants are no longer in the flat tree. This change makes it so that
the layout data of these descendants is cleared during `attachShadow()`
so that the node is no longer considered to have a layout box.

Testing: This change includes a new WPT crash test.
Fixes: #42215.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2026-01-29 13:08:39 +00:00
Martin Robinson
9a48e7b9d5 base: When normalizing RopeIndex ensure it does not intersect a character (#42240)
When doing operations on `RopeIndex` that need to make slices of lines,
this change makes it so that the resulting index does not intersect a
character. This is important because Rust will panic if you attempt to
slice a string that way.

Testing: This change adds a WPT crash test and a `Rope` unit test.
Fixes: #42217.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2026-01-29 12:01:39 +00:00
Narfinger
f250e706b2 devcontainer: Use copy instead of mount for package list (#42223)
Selinux enabled systems have stricter permissions and a bind mount might
not work correctly. Hence, we copy the package list.

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>

Testing: Build the devcontainer on fedora machine.

---------

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
2026-01-29 10:49:32 +00:00
Narfinger
3ecde12e81 layout: Do not send display lists over a ipc::bytes_channel() (#41178)
This improves the sending (and receiving) of displaylist.
- In the case that we are not in IPC mode, we essentially replace
serialization with a clone of 'DisplayListInfo'.
This the desktop total time spend in the receiving the DisplayList by
half and increases the sending slightly.
Perfetto shows for sending 51_354_000 vs 71_476_000 and receiving from
440_455_008 vs 194_509_000). All numbers are on desktop machines but
mobile phones on different tests are similar big improvements.

- More surprisingly, in the IPC cases. we still get a slight improvement
in this case too. We go from the overall handling case from 24_842_000
to 30_989_752 (handle displaylist) but a significant decrease in the
send decrease in the sending from 88_199_572 to 23_025_033.
The reason is a bit of a mystery to me.

This also makes the code cleaner as we do not have to implement the
GenericByteReceiver channel.

Testing: It essentially just changes types and how they are serialized.

---------

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
2026-01-29 09:47:05 +00:00
Steven Novaryo
c90d7d0a64 script: Ensure UA shadow DOM is initialized on <textarea> bind to tree (#42233)
Ensure that the UA shadow DOM for `<textarea>` is initialized when we
are binding to a tree.

Testing: New WPT.
Fixes: #42231

---------

Signed-off-by: Jo Steven Novaryo <steven.novaryo@gmail.com>
2026-01-29 08:37:53 +00:00
Gae24
dfed00367a script: Enable module scripts import attributes (#42185)
While working on #42138 I found out that import attributes are an opt-in
feature, which can be enabled by `ContextOptionsRef`'s
`compileOptions_`.
This is likely the reason why `GetRequestedModuleSpecifier` wouldn't
fail.
Now we catch any `GetRequestedModuleSpecifier` exception and pass it to
`load_state`.

Testing: Covered by existing tests

---------

Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
2026-01-29 07:46:02 +00:00
dependabot[bot]
f1440d3b29 build: bump aws-lc-rs from 1.15.3 to 1.15.4 (#42226)
Bumps [aws-lc-rs](https://github.com/aws/aws-lc-rs) from 1.15.3 to
1.15.4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/aws/aws-lc-rs/releases">aws-lc-rs's
releases</a>.</em></p>
<blockquote>
<h2>aws-lc-rs v1.15.4</h2>
<h2>What's Changed</h2>
<ul>
<li>HKDF: Fewer allocations by <a
href="https://github.com/justsmth"><code>@​justsmth</code></a> in <a
href="https://redirect.github.com/aws/aws-lc-rs/pull/1011">aws/aws-lc-rs#1011</a></li>
<li>aws-lc-sys v0.37.0 aligns with <a
href="https://github.com/aws/aws-lc/releases/tag/v1.67.0">AWS-LC
v1.67.0</a> by <a
href="https://github.com/justsmth"><code>@​justsmth</code></a> in <a
href="https://redirect.github.com/aws/aws-lc-rs/pull/1016">aws/aws-lc-rs#1016</a></li>
</ul>
<h3>Build Improvements</h3>
<ul>
<li>Fix non-CMake <code>*-windows-gnullvm</code> cross-compilation by <a
href="https://github.com/AlexTMjugador"><code>@​AlexTMjugador</code></a>
in <a
href="https://redirect.github.com/aws/aws-lc-rs/pull/1010">aws/aws-lc-rs#1010</a></li>
<li>Fix building for older Android targets by <a
href="https://github.com/justsmth"><code>@​justsmth</code></a> in <a
href="https://redirect.github.com/aws/aws-lc-rs/pull/1013">aws/aws-lc-rs#1013</a></li>
<li>Support Windows 7 by <a
href="https://github.com/justsmth"><code>@​justsmth</code></a> in <a
href="https://redirect.github.com/aws/aws-lc-rs/pull/1000">aws/aws-lc-rs#1000</a></li>
</ul>
<h3>Issues Being Closed</h3>
<ul>
<li>Android Build Failure with cc-builder -- <a
href="https://redirect.github.com/aws/aws-lc-rs/issues/1006">aws/aws-lc-rs#1006</a></li>
<li>aws-lc-sys build faild on
ghcr.io/cross-rs/x86_64-pc-windows-msvc-cross:local -- <a
href="https://redirect.github.com/aws/aws-lc-rs/issues/1004">aws/aws-lc-rs#1004</a></li>
<li>Windows 7 support? Missing ProcessPrng -- <a
href="https://redirect.github.com/aws/aws-lc/issues/1997">aws/aws-lc#1997</a></li>
</ul>
<h2>Other Merged PRs</h2>
<ul>
<li>Prepare aws-lc-rs v1.15.4 by <a
href="https://github.com/justsmth"><code>@​justsmth</code></a> in <a
href="https://redirect.github.com/aws/aws-lc-rs/pull/1018">aws/aws-lc-rs#1018</a></li>
<li>target-specific cc_builder files not needed by <a
href="https://github.com/justsmth"><code>@​justsmth</code></a> in <a
href="https://redirect.github.com/aws/aws-lc-rs/pull/1003">aws/aws-lc-rs#1003</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/AlexTMjugador"><code>@​AlexTMjugador</code></a>
made their first contribution in <a
href="https://redirect.github.com/aws/aws-lc-rs/pull/1010">aws/aws-lc-rs#1010</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/aws/aws-lc-rs/compare/v1.15.3...v1.15.4">https://github.com/aws/aws-lc-rs/compare/v1.15.3...v1.15.4</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="13ff670d7f"><code>13ff670</code></a>
Prepare aws-lc-rs v1.15.4 (<a
href="https://redirect.github.com/aws/aws-lc-rs/issues/1018">#1018</a>)</li>
<li><a
href="9227112be7"><code>9227112</code></a>
Prepare aws-lc-sys v0.37.0 (<a
href="https://redirect.github.com/aws/aws-lc-rs/issues/1016">#1016</a>)</li>
<li><a
href="97a963f7db"><code>97a963f</code></a>
HKDF: Fewer allocations (<a
href="https://redirect.github.com/aws/aws-lc-rs/issues/1011">#1011</a>)</li>
<li><a
href="4d96702258"><code>4d96702</code></a>
target-specific cc_builder files not needed (<a
href="https://redirect.github.com/aws/aws-lc-rs/issues/1003">#1003</a>)</li>
<li><a
href="16fb367f40"><code>16fb367</code></a>
Support Windows 7 (<a
href="https://redirect.github.com/aws/aws-lc-rs/issues/1000">#1000</a>)</li>
<li><a
href="855f5caeb9"><code>855f5ca</code></a>
Fix building for older Android targets (<a
href="https://redirect.github.com/aws/aws-lc-rs/issues/1013">#1013</a>)</li>
<li><a
href="ba7b312235"><code>ba7b312</code></a>
Fix non-CMake <code>*-windows-gnullvm</code> cross-compilation (<a
href="https://redirect.github.com/aws/aws-lc-rs/issues/1010">#1010</a>)</li>
<li>See full diff in <a
href="https://github.com/aws/aws-lc-rs/compare/v1.15.3...v1.15.4">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=aws-lc-rs&package-manager=cargo&previous-version=1.15.3&new-version=1.15.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

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


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-29 02:10:25 +00:00
dependabot[bot]
babf735a20 build: bump iana-time-zone from 0.1.64 to 0.1.65 (#42225)
Bumps [iana-time-zone](https://github.com/strawlab/iana-time-zone) from
0.1.64 to 0.1.65.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/strawlab/iana-time-zone/blob/main/CHANGELOG.md">iana-time-zone's
changelog</a>.</em></p>
<blockquote>
<h2>[0.1.65] - 2026-01-28</h2>
<h3>Changed</h3>
<ul>
<li>Add wasi support (<a
href="https://redirect.github.com/strawlab/iana-time-zone/pull/190">#190</a>)</li>
<li>Add support for emscripten (<a
href="https://redirect.github.com/strawlab/iana-time-zone/pull/189">#189</a>)</li>
<li>Add s390x target to Rust CI workflow (<a
href="https://redirect.github.com/strawlab/iana-time-zone/pull/182">#182</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="3726968181"><code>3726968</code></a>
Bump version number to 0.1.65</li>
<li><a
href="f0c7cd4a33"><code>f0c7cd4</code></a>
CI: add github release workflow for trusted publishing</li>
<li><a
href="7ef287061f"><code>7ef2870</code></a>
Merge pull request <a
href="https://redirect.github.com/strawlab/iana-time-zone/issues/190">#190</a>
from bschoenmaeckers/wasi</li>
<li><a
href="5c72c92ac5"><code>5c72c92</code></a>
CI: test wasi</li>
<li><a
href="06ad6d8f3d"><code>06ad6d8</code></a>
Add wasi support</li>
<li><a
href="3e5688c9f0"><code>3e5688c</code></a>
Merge pull request <a
href="https://redirect.github.com/strawlab/iana-time-zone/issues/189">#189</a>
from bschoenmaeckers/emscripten</li>
<li><a
href="4c0e9698f7"><code>4c0e969</code></a>
Pin actions to hash</li>
<li><a
href="b55c8dd061"><code>b55c8dd</code></a>
Add ci job</li>
<li><a
href="187c2a972d"><code>187c2a9</code></a>
Drop <code>emscripten-functions</code> dependency</li>
<li><a
href="a9ddeda718"><code>a9ddeda</code></a>
Use <code>emscripten_functions</code></li>
<li>Additional commits viewable in <a
href="https://github.com/strawlab/iana-time-zone/compare/v0.1.64...v0.1.65">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=iana-time-zone&package-manager=cargo&previous-version=0.1.64&new-version=0.1.65)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

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


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-29 02:07:27 +00:00
dependabot[bot]
e337b3e710 build: bump zerocopy from 0.8.34 to 0.8.35 (#42227)
Bumps [zerocopy](https://github.com/google/zerocopy) from 0.8.34 to
0.8.35.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/google/zerocopy/releases">zerocopy's
releases</a>.</em></p>
<blockquote>
<h2>v0.8.35</h2>
<!-- raw HTML omitted -->
<h2>What's Changed</h2>
<ul>
<li>[transmute] Remove <code>SizeEq</code> super-trait bound by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2920">google/zerocopy#2920</a></li>
<li>[transmute] Remove some <code>SizeEq</code> impls by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2922">google/zerocopy#2922</a></li>
<li>Introduce <code>ProjectField</code> trait by <a
href="https://github.com/jswrenn"><code>@​jswrenn</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2886">google/zerocopy#2886</a></li>
<li>[derive] In tests, assert hygiene of output by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2918">google/zerocopy#2918</a></li>
<li>Replace <code>unsafe_with_size_eq!</code> with
<code>transmute_with</code> by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2923">google/zerocopy#2923</a></li>
<li>Introduce <code>ReadOnly&lt;T&gt;</code> which is unconditionally
<code>Immutable</code> by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2866">google/zerocopy#2866</a></li>
<li>[transmute] Encode cast in <code>TryTransmuteFromPtr</code> params
by <a href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2921">google/zerocopy#2921</a></li>
<li>[projection] Clarify comment explaining fallibility by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2939">google/zerocopy#2939</a></li>
<li>[project] Support projecting enum tags by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2940">google/zerocopy#2940</a></li>
<li>Use <code>ReadOnly</code> in <code>TryFromBytes::is_bit_valid</code>
by <a href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2873">google/zerocopy#2873</a></li>
<li>[derive] Allow <code>TryFromBytes</code> on
non-<code>Immutable</code> unions by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2876">google/zerocopy#2876</a></li>
<li>[util] <code>use</code> more items to make code more concise by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2942">google/zerocopy#2942</a></li>
<li>Simplify <code>try_transmute!</code> (and friends) internals by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2938">google/zerocopy#2938</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/google/zerocopy/compare/v0.8.34...v0.8.35">https://github.com/google/zerocopy/compare/v0.8.34...v0.8.35</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="29d3ee4a51"><code>29d3ee4</code></a>
Release 0.8.35 (<a
href="https://redirect.github.com/google/zerocopy/issues/2945">#2945</a>)</li>
<li><a
href="971ea9b756"><code>971ea9b</code></a>
Simplify <code>try_transmute!</code> (and friends) internals (<a
href="https://redirect.github.com/google/zerocopy/issues/2938">#2938</a>)</li>
<li><a
href="7dedd50d82"><code>7dedd50</code></a>
[util] <code>use</code> more items to make code more concise (<a
href="https://redirect.github.com/google/zerocopy/issues/2942">#2942</a>)</li>
<li><a
href="84eaf29461"><code>84eaf29</code></a>
[derive] Allow <code>TryFromBytes</code> on non-<code>Immutable</code>
unions (<a
href="https://redirect.github.com/google/zerocopy/issues/2876">#2876</a>)</li>
<li><a
href="a7d3fdab40"><code>a7d3fda</code></a>
Use <code>ReadOnly</code> in <code>TryFromBytes::is_bit_valid</code> (<a
href="https://redirect.github.com/google/zerocopy/issues/2873">#2873</a>)</li>
<li><a
href="b66e6cf3c2"><code>b66e6cf</code></a>
[project] Support projecting enum tags (<a
href="https://redirect.github.com/google/zerocopy/issues/2940">#2940</a>)</li>
<li><a
href="1876c9d7e6"><code>1876c9d</code></a>
[ci] Replace Rust caching with generic caching (<a
href="https://redirect.github.com/google/zerocopy/issues/2931">#2931</a>)</li>
<li><a
href="1f5eea23ee"><code>1f5eea2</code></a>
[projection] Clarify comment explaining fallibility (<a
href="https://redirect.github.com/google/zerocopy/issues/2939">#2939</a>)</li>
<li><a
href="4f2643c88c"><code>4f2643c</code></a>
[ci] Roll <code>cargo-llvm-cov</code> to 0.8.0 (<a
href="https://redirect.github.com/google/zerocopy/issues/2929">#2929</a>)</li>
<li><a
href="5fcf3722a5"><code>5fcf372</code></a>
[transmute] Encode cast in <code>TryTransmuteFromPtr</code> params (<a
href="https://redirect.github.com/google/zerocopy/issues/2921">#2921</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/google/zerocopy/compare/v0.8.34...v0.8.35">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=zerocopy&package-manager=cargo&previous-version=0.8.34&new-version=0.8.35)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

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


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-29 00:57:30 +00:00
Andreu Botella
b0399561d6 layout: Support content: <image> on non-pseudo-elements (#41480)
Per CSS-CONTENT-3, one of the possible values of the `content` CSS
property is `<content-replacement>`, which evaluates to a single
`<image>`. This value is also allowed on regular elements, not just on
pseudo-elements, and it will make the element into a replaced element
representing the given image, discarding its contents.

This patch implements this in `traverse_element`: if the `display` value
is not `none` or `contents`, we first check whether the `contents`
property should make the element replaced, and if it shouldn't, then we
check whether the element itself is replaced or a widget.

Per the spec, an invalid image must be treated as representing a
transparent black image with zero natural width and height – in
particular, it must not show a broken image icon. We added the method
`ReplacedContents::zero_sized_invalid_image` to implement this.

This patch adds support for image URL references, but not for color
gradients, which are treated as invalid images. The reason for this is
that currently Servo does not support gradients in
`ReplacedContentKind`. This is left as a follow-up change.

Testing: Some of the existing `css/css-content/element-replacement*` WPT
tests now pass with this patch. We also added some new ones dealing with
replacing the document root.

Fixes: #41479

Signed-off-by: Andreu Botella <andreu@andreubotella.com>
2026-01-28 17:46:18 +00:00
Luke Warlow
0da3103a55 layout: Properly propagate baselines of flex items that do not participate in baseline alignment (#42038)
Fix baseline propagation from flex containers

Flex item layout previously conflated baselines that got propagated and
baseline alignment within flex.

Testing: Before and after layout of the manual test cases.


[test.html](https://github.com/user-attachments/files/24796669/test.html)
(from original issue)

<img width="645" height="464" alt="image"
src="https://github.com/user-attachments/assets/57ef6fe7-963c-44b7-96ef-6c81132c9b96"
/>


[test2.html](https://github.com/user-attachments/files/24796679/test2.html)
(from Oriol's comment)

<img width="164" height="299" alt="image"
src="https://github.com/user-attachments/assets/54dc8cf6-8b0c-4077-8eca-fd18b11f2584"
/>


Fixes: #41905

---------

Signed-off-by: Luke Warlow <lwarlow@igalia.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
2026-01-28 16:36:42 +00:00
Euclid Ye
185b9e7e97 wpt: Unskip css-properties-values-api tests (#42222)
This will allow us to see the test improvements from #42136.

Testing: Existing WPT

---------

Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
2026-01-28 16:27:32 +00:00
Martin Robinson
da7027a6df layout: Ensure legacy alignment-related presentational hints match specification (#42220)
The legacy alignment presentation hints differed from the specification
in a way that was breaking them when dealing with `<img>`. The culprit
seems to be the selector `img[type = image i]` which seems a little
nonsensical. This change makes the CSS in `presentational-hints.css`
match what is found in the specification.

There is still an issue with "bottom" alignment of replaced elements and
more investigation is necessary to understand what specified or
unspecified behavior we are failing to implement.

Testing: This fixes a variety of WPT tests.
Fixes: #41048.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2026-01-28 16:12:00 +00:00
eri
6e781aaf74 devtools: Remove unsupported serde annotations from shared/devtools.rs (#42219)
There were some `#[serde(untagged)]` and `#[serde(skip*)]` annotations
in the shared devtools types. These are needed for correct JSON
serialization when sending messages to Firefox, but they fail in
multiprocess mode since we are sharing them through the IPC channel with
bincode, which doesn't support certain serde tags.

The workaround is to keep all shared types free from problematic
annotations, and defining wrapping types that are only used in the
devtools crate.

One instance are console messages and page errors. They have been moved
to `console.rs`, with `shared/devtools` only keeping the parts that are
needed for communication between threads.

The other instance are auto margins. Now the final message is built in
`page_style.rs`.

Apologies since both of them were introduced by me, I wasn't aware that
we were limited by bincode in multiprocess mode. A warning has been
added to `shared/devtools` listing the problematic annotations that
shouldn't be used in this file.

Testing: `mach test-devtools` and manual testing using `--multiprocess`.
Fixes: #42170

Signed-off-by: eri <eri@igalia.com>
2026-01-28 15:48:59 +00:00
Jonathan Schwender
6b12ecf26b Increase stylo stack size in asan and debug builds (#42115)
This bumps stylo to allow configuring the stack size of the stylo
threads, which fixes crashes with asan and debug builds.

Testing: Manual testing with `--with-asan` and with the debug profile.
Fixes: #40814

---------

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2026-01-28 15:39:49 +00:00
Luke Warlow
aad7424150 Update details to support ::details-content pseudo element. (#42107)
Update details to support `::details-content` pseudo element.

This is currently not element-backed but will support the basic styling.

This replaces the existing `::-servo-details-content` styling.

Testing: WPTs and manually using
https://demo.lukewarlow.dev/css-forms.html

<img width="159" height="66" alt="image"
src="https://github.com/user-attachments/assets/8e72e7f3-2b49-43c6-9a4e-dbea0586739e"
/>

Stylo PR: https://github.com/servo/stylo/pull/292

Signed-off-by: Luke Warlow <lwarlow@igalia.com>
2026-01-28 14:52:50 +00:00
Narfinger
d41bb930e1 painter: Insert a cache for animation with smarter updates (#41956)
This inserts a cache in painter that keeps data for animating images in
Painter.
We then can send cheap ImageUpdate::UpdateAnimation to just get the
required bytes from the cache.

There are some warts with the current design:
- ImageUpdate::AddImage only adds images in the cache that have the data
in SerializableImageData::Raw. Potentially there could be image
animations in other ways which then for a following
ImageUpdate::UpdateAnimation we do not have the data. We can probably
fix this on the sender side.

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>

Testing: Tested on the usecase in
https://github.com/servo/servo/issues/41818 and WPT test here:
https://github.com/Narfinger/servo/actions/runs/21063721427
Fixes: https://github.com/servo/servo/issues/41818

---------

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
2026-01-28 14:07:27 +00:00
Martin Robinson
3b60a0784b mach: Do not track the uv.lock file (#42214)
This is a temporary fix until a more complete solution, such
as the one from #42169, works consistently.

Testing: This should be tested by the CI run.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2026-01-28 12:13:03 +00:00
Martin Robinson
dd292e6ba9 deps: Switch to the webrender@0.68 from crates.io (#42213)
This switches Servo to the version of WebRender published on crates.io.

Testing: This change should not change behavior.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2026-01-28 11:39:49 +00:00
Olexandr88
1165f7cde7 ci: bump upload-artifact to v6 (#42212)
Bump GitHub Actions upload-artifact to v6 across workflows

---------

Signed-off-by: Olexandr88 <radole1203@gmail.com>
2026-01-28 11:11:33 +00:00
Steven Novaryo
45c39d7496 script: Notify PinchZoom resizes to ScriptThread's VisualViewport (#41754)
Continuing the implementation of `VisualViewport`, the resizing of
`PinchZoom` should be notified to `ScriptThread` to update the
`VisualViewport` interface and to fire the appropriate JS event. Top
level `Window`/`Pipeline` would have a `VisualViewport` interface that
mirrors the `PinchZoom` viewport, while nested `Window` would have a
default value that represent layout viewport of the relevant iframe. The
`VisualViewport` of an iframe is updated after each reflow that
calculate the rectangle of the iframe.

The updates of DOM's `VisualViewport` occurs immediately (instead of
waiting for the event loop like the viewport) but integrates with the
event loop for the JS events. This behavior would helps with the fact
that `VisualViewport` needs to be updated both when it is scrolled or
resized.

Testing: Existing WPTs and new unit test.
Part of: https://github.com/servo/servo/issues/41341

---------

Signed-off-by: Jo Steven Novaryo <steven.novaryo@gmail.com>
2026-01-28 09:33:55 +00:00
Narfinger
67c0ce7e75 CI/mach: Run wpt tests, smoketest and devtools tests in multiprocess mode (#41684)
According to discussions in
https://servo.zulipchat.com/#narrow/channel/263398-general/topic/GenericChannel.20and.20testing.20of.20ipc-mode/with/565017052
it would be a good idea to test servo in multiprocess
mode as more channels are switched to GenericChannel.
This changes the test-wpt, test-webdriver and smoketest to have a
multiprocess argument for most tests.


Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>

Testing: WPT test run here:
https://github.com/Narfinger/servo/actions/runs/20713369574

---------

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
2026-01-28 08:56:18 +00:00
dependabot[bot]
55a278819f build: bump zerocopy from 0.8.33 to 0.8.34 (#42198)
Bumps [zerocopy](https://github.com/google/zerocopy) from 0.8.33 to
0.8.34.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/google/zerocopy/releases">zerocopy's
releases</a>.</em></p>
<blockquote>
<h2>v0.8.34</h2>
<!-- raw HTML omitted -->
<h2>What's Changed</h2>
<ul>
<li>Generate trait implementations for tuples by <a
href="https://github.com/jswrenn"><code>@​jswrenn</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2862">google/zerocopy#2862</a></li>
<li>Simplify MutationCompatible impls by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2877">google/zerocopy#2877</a></li>
<li>[derive] Refactor is_bit_valid tests by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2879">google/zerocopy#2879</a></li>
<li>[derive] Unify handling of #[allow] attributes by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2882">google/zerocopy#2882</a></li>
<li>Rename <code>HasField::project</code> to
<code>HasField::project_raw</code> by <a
href="https://github.com/jswrenn"><code>@​jswrenn</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2884">google/zerocopy#2884</a></li>
<li>Introduce <code>HasField::project_inner</code> by <a
href="https://github.com/jswrenn"><code>@​jswrenn</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2885">google/zerocopy#2885</a></li>
<li>[derive] Fix unused variable bug in tests by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2891">google/zerocopy#2891</a></li>
<li>[derive] Rename module ext -&gt; util by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2892">google/zerocopy#2892</a></li>
<li>Tighten impl of CastUnsized by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2887">google/zerocopy#2887</a></li>
<li>Simplify projection methods by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2895">google/zerocopy#2895</a></li>
<li>Fix stale comments by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2896">google/zerocopy#2896</a></li>
<li>[derive] Split repr(C) logic from derive_known_layout_inner by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2888">google/zerocopy#2888</a></li>
<li>[derive] Move find_zero_variant to enum module by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2889">google/zerocopy#2889</a></li>
<li>[derive] Introduce Ctx type by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2890">google/zerocopy#2890</a></li>
<li>[derive] Improve hygiene testing by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2898">google/zerocopy#2898</a></li>
<li>[derive] Factor out <code>core_reexport</code> path generation by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2899">google/zerocopy#2899</a></li>
<li>[derive] Refactor into more modules by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2901">google/zerocopy#2901</a></li>
<li>[derive] Store output test goldens in separate files by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2904">google/zerocopy#2904</a></li>
<li>[derive] Automatically bless output test output by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2905">google/zerocopy#2905</a></li>
<li>[cast] Fix safety comment bug for CastUnsized by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2908">google/zerocopy#2908</a></li>
<li>Clarify semantics of size-preserving transmutes by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2911">google/zerocopy#2911</a></li>
<li>Make SizeEq safe by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2907">google/zerocopy#2907</a></li>
<li>[tools] Remove now-obsolete <code>rm Cargo.lock</code> by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2916">google/zerocopy#2916</a></li>
<li>[derive] Avoid ambiguities referring to associated items by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/2917">google/zerocopy#2917</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
made their first contribution in <a
href="https://redirect.github.com/google/zerocopy/pull/2914">google/zerocopy#2914</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/google/zerocopy/compare/v0.8.33...v0.8.34">https://github.com/google/zerocopy/compare/v0.8.33...v0.8.34</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c358fd5d33"><code>c358fd5</code></a>
[derive] Avoid ambiguities referring to associated items (<a
href="https://redirect.github.com/google/zerocopy/issues/2917">#2917</a>)</li>
<li><a
href="da40b0afbd"><code>da40b0a</code></a>
[ci] Work around bugs in <code>nextest</code> and <code>llvm-cov</code>
(<a
href="https://redirect.github.com/google/zerocopy/issues/2924">#2924</a>)</li>
<li><a
href="dce155c9b6"><code>dce155c</code></a>
[tools] Remove now-obsolete <code>rm Cargo.lock</code> (<a
href="https://redirect.github.com/google/zerocopy/issues/2916">#2916</a>)</li>
<li><a
href="8f361d9467"><code>8f361d9</code></a>
Vendor dependencies (<a
href="https://redirect.github.com/google/zerocopy/issues/2883">#2883</a>)</li>
<li><a
href="43736bd82e"><code>43736bd</code></a>
Upgrade GitHub Actions to latest versions (<a
href="https://redirect.github.com/google/zerocopy/issues/2914">#2914</a>)</li>
<li><a
href="5754fd78f3"><code>5754fd7</code></a>
Make SizeEq safe (<a
href="https://redirect.github.com/google/zerocopy/issues/2907">#2907</a>)</li>
<li><a
href="d6fd7f3079"><code>d6fd7f3</code></a>
Clarify semantics of size-preserving transmutes (<a
href="https://redirect.github.com/google/zerocopy/issues/2911">#2911</a>)</li>
<li><a
href="6aae3de31d"><code>6aae3de</code></a>
[ci] Check for orphaned UI test .stderr files (<a
href="https://redirect.github.com/google/zerocopy/issues/2909">#2909</a>)</li>
<li><a
href="7cc13f19f0"><code>7cc13f1</code></a>
[cast] Fix safety comment bug for CastUnsized (<a
href="https://redirect.github.com/google/zerocopy/issues/2908">#2908</a>)</li>
<li><a
href="5c67d2c8d8"><code>5c67d2c</code></a>
[derive] Automatically bless output test output (<a
href="https://redirect.github.com/google/zerocopy/issues/2905">#2905</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/google/zerocopy/compare/v0.8.33...v0.8.34">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=zerocopy&package-manager=cargo&previous-version=0.8.33&new-version=0.8.34)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

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


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-28 08:19:32 +00:00
dependabot[bot]
21fa2be64c build: bump clap from 4.5.54 to 4.5.55 (#42200)
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.54 to 4.5.55.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/releases">clap's
releases</a>.</em></p>
<blockquote>
<h2>v4.5.55</h2>
<h2>[4.5.55] - 2026-01-27</h2>
<h3>Fixes</h3>
<ul>
<li>Fix inconsistency in precedence between positionals with a
<code>value_terminator(&quot;--&quot;)</code> and escapes
(<code>--</code>) where <code>./foo -- bar</code> means the first arg is
empty, rather than escaping future args</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's
changelog</a>.</em></p>
<blockquote>
<h2>[4.5.55] - 2026-01-27</h2>
<h3>Fixes</h3>
<ul>
<li>Fix inconsistency in precedence between positionals with a
<code>value_terminator(&quot;--&quot;)</code> and escapes
(<code>--</code>) where <code>./foo -- bar</code> means the first arg is
empty, rather than escaping future args</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="4c039309b6"><code>4c03930</code></a>
chore: Release</li>
<li><a
href="fb948a25ff"><code>fb948a2</code></a>
docs: Update changelog</li>
<li><a
href="0f602396a3"><code>0f60239</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6057">#6057</a>
from GilShoshan94/master</li>
<li><a
href="83d4206ff1"><code>83d4206</code></a>
test: Update fixture to cover all cases + styling</li>
<li><a
href="b13274d869"><code>b13274d</code></a>
fix: Rename <code>pvs</code> to <code>dvs</code> for default values</li>
<li><a
href="df92ea02bb"><code>df92ea0</code></a>
feat(help): Allow styling for inline context</li>
<li><a
href="0e535e518d"><code>0e535e5</code></a>
chore(deps): Update compatible (dev) (<a
href="https://redirect.github.com/clap-rs/clap/issues/6054">#6054</a>)</li>
<li><a
href="de57287f30"><code>de57287</code></a>
chore(deps): Update Rust Stable to v1.88 (<a
href="https://redirect.github.com/clap-rs/clap/issues/6048">#6048</a>)</li>
<li><a
href="5504a13468"><code>5504a13</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6047">#6047</a>
from clap-rs/revert-6045-cleanup-docsrs</li>
<li><a
href="c1c243c924"><code>c1c243c</code></a>
Revert &quot;Cleanup docs.rs related issues&quot;</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.5.54...clap_complete-v4.5.55">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.5.54&new-version=4.5.55)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

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


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Euclid Ye <euclid.ye@huawei.com>
2026-01-28 08:15:33 +00:00
Rocketjumper
e950e5c2ca layout: Suppress soft wrap opportunities between NU/AL/AI/ID characters to respect word-break: keep-all (#42088)
This change modifies `LineBreaker` to properly handle `word-break:
keep-all` by adjusting the arguments passed to
`icu_segmenter::LineSegmenter`.

- [CSS
specification](https://drafts.csswg.org/css-text/#valdef-word-break-keep-all)
- Stylo PR : servo/stylo#289

Testing: Created a WPT test for this change, specifically:
`tests/wpt/tests/css/css-text/word-break/word-break-keep-all-011.html`.
Fixes: #42047

---------

Signed-off-by: Richard Tjokroutomo <richard.tjokro2@gmail.com>
2026-01-28 08:11:33 +00:00