Add support for temporary storage via a new config option
`temporary_storage`
and a corresponding command-line argument `--temporary-storage`.
When enabled, client storage uses a storage directory
(e.g. `clientstorage/temporary/<uuid>`) instead of the shared default
location.
This can be used to provide isolation between concurrent servo
instances.
This is especially useful for WPT runs, where multiple Servo instances
may
execute in parallel and would otherwise share the same storage, leading
to
cross-test interference.
Based on that, this PR also updates the WPT runner to enable temporary
storage
by default.
Testing: Manual testing and a full try run.
Signed-off-by: Jan Varga <jvarga@igalia.com>
This change creates a new "type bundle" trait, which holds all of the
concrete implementations of the layout DOM types. The benefit here is
that each implementation of a layout DOM type needs a single associated
type. In addition, and most importantly, `Layout` itself only needs to
parameterized over a single type (the concrete type bundle). This will
make parameterizing layout a lot friendlier.
The downside is that extracting the concrete type from the type bundle
is a bit ugly in Rust, so the change also exposes some type aliases to
make this nicer. In the future, default associated types can make
things a bit simpler as well.
Testing: This should not change behavior so no new tests are necessary.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
When reporting an exception attempt to extract `ErrorInfo` from the
stack of the exception.
Testing: Covered by existing tests, expectations updated.
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
In #44436, I neglected to remove some hard line break-related code from
the shaping code. This code is effectively dead code now that
hard line breaks never make it to this code path, so it can safely be
removed.
Testing: This should not change behavior, so existing tests should
suffice.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Refactored `HttpsState` by moving it from `Document` to `GlobalScope`
Testing: `./mach test-wpt
tests/wpt/tests/mixed-content/csp.https.window.js` & `./mach test-wpt
tests/wpt/tests/fetch/api/request/destination/fetch-destination.https.html`
passed locally. `./mach try` failed due to billing issue on my account.
Fixes: #44342
Signed-off-by: Sabb <sarafaabbas@gmail.com>
`Castable::is<T>()` calls `get_dom_class()` in a way that incurs a
roundtrip to the JS engine and
multiple pointer indirections:
self.reflector().get_jsobject().get() -> JSObject
Object.shape -> BaseShape.clasp -> JSClass
DOMJSClass.dom_class -> DOMClass
interface_chain[depth] == ID -> bool
Since the ID doesn't change after creation of reflectors, we can instead
store the ID on the reflector
and avoid most of that cost. The trick is to use a Depth First Search to
generate IDs that allow a
range check for `Castable::is<T>`. An example of IDs in the DFS looks
like:
EventTarget = 0
Node = 1
CharacterData = 2
Text = 3
CDATASection = 4
Comment = 5
ProcessingInstruction = 6
Document = 7
HTMLDocument = 8
XMLDocument = 9
Testing: Green try run at
https://github.com/webbeef/servo/actions/runs/24640508040 and manual
testing with general browsing.
Signed-off-by: webbeef <me@webbeef.org>
Debug mozjs builds don't like when we try to trace members of one global
object (realm) that originate from another global object (realm). This
triggers when we use `Dom<DebuggerGlobalScope>` in our global objects,
since all `Dom<T>` pointers are expected to in the same realm as the
containing object. To address this, we store a JS value of the debugger
global's reflector wrapped in the current global's relam, and use value
to reconstitute a `DebuggerGlobalScope` pointer as needed.
Testing: We don't run debug-mozjs in CI, but this change makes a bunch
of tests stop asserting.
Fixes: #44385
---------
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
Sets the accessibility role of nodes based on their DOM node type
(ignoring ARIA roles and computed styles for now), for a small subset of
roles.
This change also re-works some details of accessibility tree building:
- Set the `root` property for the accesskit tree to the node ID for the
root DOM node, rather than creating a placeholder root node which
contains the root DOM node.
- Since we now map the `<body>` node to the `RootWebArea` role, this
required a small change to the accessibility test logic to do a tree
walk to find the `RootWebArea` node, which used to be the first child
since we artificially set the placeholder root node to be the
`RootWebArea` node.
- Have `update_node_and_children()` return a bool indicating whether any
node was updated.
- Split the code updating the node itself into its own function,
`update_node()`, which takes a DOM node and returns a tuple containing
the accessibility node ID and a bool indicating whether the node
required updating
- Add an `assert_node_by_id()` method to retrieve an accessibility node
based on its ID.
Testing: See new tests added in this PR.
---------
Signed-off-by: Alice Boxhall <alice@igalia.com>
Co-authored-by: delan azabani <dazabani@igalia.com>
Also port `TextDecoderStream`, `TextEncoderStream`, `CompressionStream`
and `DecompressionStream` to `reflect_dom_object_with_proto_and_cx`.
Testing: It compiles
Part of #40600
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
Bumps [grid](https://github.com/becheran/grid) from 1.0.0 to 1.0.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/becheran/grid/releases">grid's
releases</a>.</em></p>
<blockquote>
<h2>v1.0.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Add non-allocating delete_row and delete_col methods by <a
href="https://github.com/Copilot"><code>@Copilot</code></a> in <a
href="https://redirect.github.com/becheran/grid/pull/70">becheran/grid#70</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/Copilot"><code>@Copilot</code></a> made
their first contribution in <a
href="https://redirect.github.com/becheran/grid/pull/70">becheran/grid#70</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/becheran/grid/compare/v1.0.0...v1.0.1">https://github.com/becheran/grid/compare/v1.0.0...v1.0.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="8caa81908f"><code>8caa819</code></a>
chore: Release grid version 1.0.1</li>
<li><a
href="e879d4100b"><code>e879d41</code></a>
Add safety checks for empty input in insert_row and insert_col
methods</li>
<li><a
href="be213bd352"><code>be213bd</code></a>
Add safety checks for grid dimension overflow in expand and prepend
methods</li>
<li><a
href="e77e0c0241"><code>e77e0c0</code></a>
style: format test assertions for better readability</li>
<li><a
href="781d36c5d8"><code>781d36c</code></a>
Add comprehensive tests for delete methods including equivalence
tests</li>
<li><a
href="9bf8d0b96f"><code>9bf8d0b</code></a>
Add delete_row and delete_col methods to avoid allocation</li>
<li><a
href="da542e1ca6"><code>da542e1</code></a>
chore: fix pipeline formatting</li>
<li><a
href="875f418b55"><code>875f418</code></a>
chore: auto generate release notes</li>
<li>See full diff in <a
href="https://github.com/becheran/grid/compare/v1.0.0...v1.0.1">compare
view</a></li>
</ul>
</details>
<br />
[](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 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)
You can disable automated security fix PRs for this repo from the
[Security Alerts page](https://github.com/servo/servo/network/alerts).
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Added basic fields required by firefox remote debugging protocol for
stylesheets- `StyleSheetData`
Enabled stylesheets in devtools watcher, made stylesheet request return
an empty array for now.
Testing: No change in behaviour and tests
Fixes: part of #44315
Signed-off-by: Rover track <rishan.pgowda@gmail.com>
Propagate `&mut JSContext` in `DebuggerGlobalScope::fire_add_debugee`
Testing: Successful build is enough
Fixes: Part of #42638
Opened to reduces the complexity of #44254
Signed-off-by: Emmanuel Paul Elom <elomemmanuel007@gmail.com>
We are probably not anywhere close to reproducible builds, but we should
try to follow best practices where trivially possible.
See also: https://reproducible-builds.org/docs/source-date-epoch/
Firefox devtools expects the build_id to be provided in a datetime
specific format.
This PR also switches the time to UTC instead of `Local`, since there
seems to be no clear reason to use Local, and SOURCE_DATE_EPOCH is UTC.
Testing: No functional changes, the devtools build_id is not covered by
any tests.
Fixes: #44458
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Propagate `&mut JSContext` in
`DebuggerGlobalScope::fire_get_possible_breakpoints` and related call
sites.
Testing: Successful build is enough
Fixes: Part of #42638
Opened to reduces the complexity of #44254
Signed-off-by: Emmanuel Paul Elom <elomemmanuel007@gmail.com>
To comply with the Gamepad spec, this commit changes the type of Gamepad
axes from Float64Array to CachedFrozenArray as per [Gamepad
Interface](https://w3c.github.io/gamepad/#gamepad-interface).
Fixes: #44336
Testing: automated tests are not possible because the axes values can
only be accessed with a real gamepad attached.
Signed-off-by: log101 <ffrknerdm@gmail.com>
Propagate `&mut JSContext` in `XMLHttpRequest::change_ready_state`
Testing: Successful build is enough
Fixes: Part of #42638
Opened to reduces the complexity of #44254
Signed-off-by: Emmanuel Paul Elom <elomemmanuel007@gmail.com>
When reloading, the pipeline is closed before we get the chance to set
accessibility inactive, which we do for pipelines which stick around in
the bfcache. We don't need to panic if we're trying to de-activate
accessibility and the pipeline is already closed.
Trying to activate accessibility on a closed pipeline is an error we
should investigate, but probably also not a panic-worthy condition.
Testing: Not sure how to test this beyond manual testing. Manual
testing: run servoshell with `--pref accessibility_enabled` and reload
any page.
Signed-off-by: Alice Boxhall <alice@igalia.com>
Replaced `GamepadButtonList` interface with a frozen array of gamepad
buttons to match the gamepad webidl specification.
Testing: No idlharness tests possible since the values can't be accessed
without a real gamepad.
Fixes: #44333
---------
Signed-off-by: Rover track <rishan.pgowda@gmail.com>
Bumps [jiff](https://github.com/BurntSushi/jiff) from 0.2.23 to 0.2.24.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/BurntSushi/jiff/blob/master/CHANGELOG.md">jiff's
changelog</a>.</em></p>
<blockquote>
<h1>0.2.24 (2026-04-23)</h1>
<p>This release primarily adds a new <code>memory_usage</code> routine
for reporting
heap allocation sizes for the <code>TimeZone</code> and
<code>Zoned</code> types. This
release also acknowledges and updates the timeline expectations for a
Jiff 1.0 release in <code>README.md</code>.</p>
<p>Enhancements:</p>
<ul>
<li><a
href="https://redirect.github.com/BurntSushi/jiff/issues/520">#520</a>:
Add <code>memory_usage</code> to the <code>TimeZone</code> and
<code>Zoned</code> types.</li>
<li><a
href="https://redirect.github.com/BurntSushi/jiff/pull/535">#535</a>:
Improve comment in <code>Span::checked_add</code> example.</li>
</ul>
<p>Bug fixes:</p>
<ul>
<li><a
href="https://redirect.github.com/BurntSushi/jiff/pull/541">#541</a>:
Update Jiff 1.0 timeline.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="2cc55b285d"><code>2cc55b2</code></a>
0.2.24</li>
<li><a
href="c6542f109e"><code>c6542f1</code></a>
changelog: 0.2.24</li>
<li><a
href="ec3c2ec962"><code>ec3c2ec</code></a>
api: add <code>TimeZone::memory_usage</code> and
<code>Zoned::memory_usage</code></li>
<li><a
href="bc752b63ed"><code>bc752b6</code></a>
docs: improve comment in <code>Span::checked_add</code> example</li>
<li><a
href="f6c8a55ef4"><code>f6c8a55</code></a>
readme: update 1.0 timeline</li>
<li><a
href="97314c11d4"><code>97314c1</code></a>
docs: fix typo</li>
<li><a
href="bad71d8d5d"><code>bad71d8</code></a>
docs: typo</li>
<li>See full diff in <a
href="https://github.com/BurntSushi/jiff/compare/jiff-static-0.2.23...jiff-static-0.2.24">compare
view</a></li>
</ul>
</details>
<br />
[](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 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>
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.185 to 0.2.186.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/libc/releases">libc's
releases</a>.</em></p>
<blockquote>
<h2>0.2.186</h2>
<h3>Added</h3>
<ul>
<li>Apple: Add <code>KEVENT_FLAG_*</code> constants (<a
href="https://redirect.github.com/rust-lang/libc/pull/5070">#5070</a>)</li>
<li>Linux: Add <code>PR_SET_MEMORY_MERGE</code> and
<code>PR_GET_MEMORY_MERGE</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/5060">#5060</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>CI: Migrate FreeBSD CI from Cirrus CI to GitHub Actions (<a
href="https://redirect.github.com/rust-lang/libc/pull/5058">#5058</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/libc/blob/0.2.186/CHANGELOG.md">libc's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/rust-lang/libc/compare/0.2.185...0.2.186">0.2.186</a>
- 2026-04-24</h2>
<h3>Added</h3>
<ul>
<li>Apple: Add <code>KEVENT_FLAG_*</code> constants (<a
href="https://redirect.github.com/rust-lang/libc/pull/5070">#5070</a>)</li>
<li>Linux: Add <code>PR_SET_MEMORY_MERGE</code> and
<code>PR_GET_MEMORY_MERGE</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/5060">#5060</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>CI: Migrate FreeBSD CI from Cirrus CI to GitHub Actions (<a
href="https://redirect.github.com/rust-lang/libc/pull/5058">#5058</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="42620ffc41"><code>42620ff</code></a>
[0.2] libc: Release 0.2.186</li>
<li><a
href="9db2eaaaae"><code>9db2eaa</code></a>
apple: add KEVENT_FLAG_* constants</li>
<li><a
href="38409392ff"><code>3840939</code></a>
Add PR_SET_MEMORY_MERGE and PR_GET_MEMORY_MERGE for linux</li>
<li><a
href="f697deb944"><code>f697deb</code></a>
chore: migrate from Cirrus CI to GHA</li>
<li>See full diff in <a
href="https://github.com/rust-lang/libc/compare/0.2.185...0.2.186">compare
view</a></li>
</ul>
</details>
<br />
[](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 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>
This will allow us not to need to repeatedly borrow `self` when
reading/updating individual `AccessibilityNode`s.
Testing: No behaviour change, covered by existing `accessibility` test.
---------
Signed-off-by: Alice Boxhall <alice@igalia.com>
Co-authored-by: delan azabani <dazabani@igalia.com>
This change makes it so that hard line breaks are not shaped during
inline formatting context creation. Instead they are a separate variant
of a new `TextRunItem` enum. This will make it easier to start
linebreaking later in the flow of inline layout.
Testing: This fixes three WPT tests, likely because we are now properly
using the BiDi level of BiDi control characters. One test starts
failing, but
it depends on tab rendering, which we do not currently support properly.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
While working on this, I realised that the `current_state`
computation was wrong. Instead, the spec actually clearly
defines what to do, but I hadn't found it yet. The code
now correctly implements state computation and voila, it
also fixes the previous underline issue that I didn't
understand why it would fail.
Part of #25005
Testing: WPT
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
This means keeping nodes in a temporary map until the accesskit
TreeUpdate is accessed via `finalize()`. After `finalize()` is called,
any further attempts to use the object will panic.
Testing: Added a unit test.
---------
Signed-off-by: Alice Boxhall <alice@igalia.com>
Signed-off-by: delan azabani <dazabani@igalia.com>
Co-authored-by: delan azabani <dazabani@igalia.com>
Update jni-rs to 0.22, the main changes involve the introduction of
`with_env` within native methods, and updating uses of
`attach_current_thread`, which now requires a closure passed to it.
Callback object is now stored inside a `OnceLock`, since it would crash
when it was deleted, probably once a `WakeupCallback` was dropped:
```
JNI DETECTED ERROR IN APPLICATION: JNI ERROR (app bug): jobject is an invalid global reference: 0x2fc6 (deleted reference at index 382)
```
Also update android-activity and rustls-platform-verifier.
Testing: We don't have android tests in CI, manual testing is required
Fixes: Part of #40979
---------
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
Follow-up to #44443.
This helps investigating the cold-start timeline, and could be used
by tooling to A/B compare branches affecting the cold-start time.
Additionally also change the `handle_request::select` span, so that we
can see the blocked time (which was probably what was intended), since
the actual time spent on recv after select is insignificant.
Testing: Tracing output is not covered by automatic tests.
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Adds a profiling event at the startup of servoshell, right after
initializing the tracing subsystem. To support this, add macro
abstractions for tracing events.
The existing span (macros) have a start and an end, but for one-off
events, we don't need a span and hence it make sense to also add the
event macros.
The new event at startup is useful when measuring / optimizing general
startup time. Adding a timestamp as field, allows us to ground the
measurement and compare it against time measured outside of servo,
regardless of how the profiling backend (tracing-perfetto,
tracing-hitrace, future backends) save timestamps.
Testing: Build-testing: the HarmonyOS build enables the tracing feature.
On other platforms this is not the case in CI.
---------
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Implement the `Sanitizer.get()` method.
Same as the previous patches on Sanitizer API, the steps related to
processing instructions are marked as TODO. Support for process
instructions was recently added to the specification, and we will
implement it later when tests are ready.
Testing: Covered by WPT tests in
`sanitizer-api/sanitizer-get.tentative.html`
Fixes: Part of #43948
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
Companion PR to https://github.com/servo/mozjs/pull/735.
This bumps mozjs to the latest version 0.15.9. The changes were reviewed
in the linked PR.
Testing: This changes behavior when using `make` 4.4 and compiling mozjs
from source in CI. This path is not exercised in CI, since Ubuntu 24.04
still ships make 4.3.
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Bumps [typenum](https://github.com/paholg/typenum) from 1.19.0 to
1.20.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/paholg/typenum/releases">typenum's
releases</a>.</em></p>
<blockquote>
<h2>v1.20.0</h2>
<h2>Commits</h2>
<ul>
<li>77b877d: remove deprecated features, replace build script with
pre-generated tests (<a
href="https://redirect.github.com/paholg/typenum/issues/237">#237</a>)
(Cathal) <a
href="https://redirect.github.com/paholg/typenum/pull/237">#237</a></li>
<li>4d5f26b: Add tuple operations (<a
href="https://redirect.github.com/paholg/typenum/issues/242">#242</a>)
(grenewode) <a
href="https://redirect.github.com/paholg/typenum/pull/242">#242</a></li>
<li>c755e2f: Version 1.20.0 (Paho Lurie-Gregg)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/paholg/typenum/blob/main/CHANGELOG.md">typenum's
changelog</a>.</em></p>
<blockquote>
<h3>1.20.0 (2026-04-18)</h3>
<ul>
<li>[removed] Removed <code>no_std</code> feature flag (deprecated since
1.3.0)</li>
<li>[removed] Removed <code>force_unix_path_separator</code> feature
flag (deprecated since 1.17.0)</li>
<li>[changed] Replaced <code>build.rs</code> script with pre-generated
test files</li>
<li>[added] Indexing into tuples</li>
<li>[changed] MSRV now 1.41.0</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c755e2fd5d"><code>c755e2f</code></a>
Version 1.20.0</li>
<li><a
href="4d5f26b629"><code>4d5f26b</code></a>
Add tuple operations (<a
href="https://redirect.github.com/paholg/typenum/issues/242">#242</a>)</li>
<li><a
href="77b877d567"><code>77b877d</code></a>
remove deprecated features, replace build script with pre-generated
tests (<a
href="https://redirect.github.com/paholg/typenum/issues/237">#237</a>)</li>
<li>See full diff in <a
href="https://github.com/paholg/typenum/compare/v1.19.0...v1.20.0">compare
view</a></li>
</ul>
</details>
<br />
[](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 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>
Bumps [clap](https://github.com/clap-rs/clap) from 4.6.0 to 4.6.1.
<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.6.1</h2>
<h2>[4.6.1] - 2026-04-15</h2>
<h3>Fixes</h3>
<ul>
<li><em>(derive)</em> Ensure rebuilds happen when an read env variable
is changed</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.6.1] - 2026-04-15</h2>
<h3>Fixes</h3>
<ul>
<li><em>(derive)</em> Ensure rebuilds happen when an read env variable
is changed</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="14202755e5"><code>1420275</code></a>
chore: Release</li>
<li><a
href="d2c817d151"><code>d2c817d</code></a>
docs: Update changelog</li>
<li><a
href="f88c94e53d"><code>f88c94e</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6341">#6341</a>
from epage/sep</li>
<li><a
href="acbb822505"><code>acbb822</code></a>
fix(complete): Reduce risk of conflict with actual subcommands</li>
<li><a
href="a49fadbf4a"><code>a49fadb</code></a>
refactor(complete): Pull out subcommand separator</li>
<li><a
href="ddc008bbbc"><code>ddc008b</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6332">#6332</a>
from epage/update</li>
<li><a
href="497dc50aeb"><code>497dc50</code></a>
chore: Update compatible dependencies</li>
<li><a
href="dca2326243"><code>dca2326</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6331">#6331</a>
from clap-rs/renovate/j178-prek-action-2.x</li>
<li><a
href="54bdaa340e"><code>54bdaa3</code></a>
chore(deps): Update j178/prek-action action to v2</li>
<li><a
href="f0d30d961d"><code>f0d30d9</code></a>
chore: Release</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.6.0...clap_complete-v4.6.1">compare
view</a></li>
</ul>
</details>
<br />
[](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 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>
Bumps [rustls](https://github.com/rustls/rustls) from 0.23.38 to
0.23.39.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="05416057db"><code>0541605</code></a>
Cargo: version 0.23.38 -> 0.23.39</li>
<li><a
href="860798e729"><code>860798e</code></a>
Cargo: update semver compat deps</li>
<li><a
href="7b374684a2"><code>7b37468</code></a>
Take semver-compatible dependency updates</li>
<li><a
href="6134204146"><code>6134204</code></a>
Adapt to updated nightly features</li>
<li><a
href="d4b3ec5af3"><code>d4b3ec5</code></a>
Apply suggestions from clippy 1.95</li>
<li>See full diff in <a
href="https://github.com/rustls/rustls/compare/v/0.23.38...v/0.23.39">compare
view</a></li>
</ul>
</details>
<br />
[](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 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>
Bumps [dbus](https://github.com/diwic/dbus-rs) from 0.9.10 to 0.9.11.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="eb330f7e41"><code>eb330f7</code></a>
dbus: Release 0.9.11</li>
<li><a
href="610ada219e"><code>610ada2</code></a>
dbus-native: Fix compiler warning</li>
<li><a
href="00a70d0c40"><code>00a70d0</code></a>
Dbus: Fix compiler warnings</li>
<li><a
href="f24617ab50"><code>f24617a</code></a>
Merge pull request <a
href="https://redirect.github.com/diwic/dbus-rs/issues/515">#515</a>
from abyssdigger/patch-1</li>
<li><a
href="0d4ac9aa0a"><code>0d4ac9a</code></a>
Fix compiler warnings</li>
<li><a
href="686b50df7a"><code>686b50d</code></a>
dbus: Add documentation to Variant and match_signal</li>
<li><a
href="993045f6ef"><code>993045f</code></a>
Release dbus 0.9.10, libdbus-sys 0.2.7</li>
<li><a
href="debcde3363"><code>debcde3</code></a>
dbus/blocking.rs: add new connection by address</li>
<li><a
href="eee6bf5b2d"><code>eee6bf5</code></a>
Merge pull request <a
href="https://redirect.github.com/diwic/dbus-rs/issues/512">#512</a>
from mrdomino/bump-windows-sys</li>
<li><a
href="5061c6018e"><code>5061c60</code></a>
Bump windows-sys from 0.59.0 to 0.61.0</li>
<li>See full diff in <a
href="https://github.com/diwic/dbus-rs/compare/dbus-v0.9.10...dbus-v0.9.11">compare
view</a></li>
</ul>
</details>
<br />
[](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 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>
In DOM APIs, `Node.childNodes` is a `NodeList` that has an
`.item(index)` method that allows random access, but DOM nodes only
store pointers to their first/last child and next/previous sibling. The
previous implementation involved keeping a "last accessed" pointer, and
a significant amount of logic to find the requested index by walking
next/previous sibling pointers from whichever of last accessed, first
child, or last child is nearest. This logic sometimes incorrectly
assumed the (nullable) last accessed pointer to be present, causing a
panic in `Option::unwrap`.
Rather than try to fix that logic, this replaces entirely with the
approach suggested in #25206 and used [by
Firefox](https://searchfox.org/firefox-main/source/dom/base/nsChildContentList.h):
keep a cached `Vec` of pointers to all child nodes, created lazily when
needed, and invalidated whenever any part of it changes.
Testing: the first commit adds a failing WPT crashtest, the second
commit fixes it
Fixes: https://github.com/servo/servo/issues/25206
Fixes: https://github.com/servo/servo/issues/36764
---------
Signed-off-by: Simon Sapin <simon@igalia.com>
This moves Servo closer to the focus parts of the HTML specification.
The behavior should be the same as before, but now the code in `script`
matches the structure of the specification.
The main goal is to set us up for:
- Firing focus events in the right order on nested documents
- A proper implementation of the unfocusing steps.
Testing: This should not change behavior so is covered by existing
tests.
Signed-off-by: Martin Robinson <mrobinson@fastmail.fm>
Co-authored-by: Martin Robinson <mrobinson@fastmail.fm>
This PR makes minor cleanup in the media crates:
- Switch dependencies to workspace dependencies if they are already
included in the main Cargo.toml
- Switch from crate serde_derive to serde with feature flag derive.
- Switch from the separate crate for OnceCell to the std provided
LazyLock.
- Update num_complex
Testing: The only functional changes are either slight version bumps,
the replacement to LazyLock which is conservative and the num_complex
update which also shouldn't have any behavior changes.
---------
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Implement sanitizer configuration validation algorithm, and complete the
"set a configuration" algorithm.
The steps related to processing instructions are marked as TODO. Support
for process instructions was recently added to the specification, and we
will implement it later when tests are ready.
Specification:
- https://wicg.github.io/sanitizer-api/#sanitizerconfig-valid
- https://wicg.github.io/sanitizer-api/#sanitizer-set-a-configuration
Testing: Covered by WPT tests in
`sanitizer-api/sanitizer-config.tentative.html`
Fixes: Part of #43948
---------
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>