Add intermittent results for transitions related tests
These tests test the behavior of many properties and due to issues in
Servo, the results are incredibly unstable. Since the tests use large
property lists this leads to hundreds of failed subtests every run. We
let these tests either pass or fail so that results in the CI are
stable. The ultimate goal here is to fix the instability in Servo so
that these tests pass or fail consistently.
This change also adds support for intermittent expectations to the
ServoHandler. Before these kind of test results were interpreted as
unexpected results.
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes do not require tests because they just update test results.
<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
These tests test the behavior of many properties and due to issues in
Servo, the results are incredibly unstable. Since the tests use large
property lists this leads to hundreds of failed subtests every run. We
let these tests either pass or fail so that results in the CI are
stable. The ultimate goal here is to fix the instability in Servo so
that these tests pass or fail consistently.
This change also adds support for intermittent expectations to the
ServoHandler. Before these kind of test results were interpreted as
unexpected results.
Revert #29331 (Bump exr from 1.5.1 to 1.5.3)
This reverts commit 8a8a587908, reversing changes made to a01035e6fd.
Reason: breaks tidy:
```
./Cargo.lock:1: duplicate versions for package `half`
The following packages depend on version 1.8.2 from 'crates.io':
canvas 0.0.1
The following packages depend on version 2.2.1 from 'crates.io':
exr 1.5.3
```
<!-- Please describe your changes on the following line: -->
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [ ] ~~These changes fix #___ (GitHub issue number if applicable)~~
<!-- Either: -->
- [ ] There are tests for these changes OR
- [x] These changes do not require tests because they only affect dependency versions
<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
This reverts commit 8a8a587908, reversing
changes made to a01035e6fd.
Reason: breaks tidy:
```
./Cargo.lock:1: duplicate versions for package `half`
The following packages depend on version 1.8.2 from 'crates.io':
canvas 0.0.1
The following packages depend on version 2.2.1 from 'crates.io':
exr 1.5.3
```
Conditionally use certain GStreamer plugins
In old versions of GStreamer gstvideoconvertscale was split into two plugins, gstvideoscale and gstvideoconvert. This change makes the use of these three plugins conditional on their existence and has Windows use the two plugins from the older version of GStreamer. In addition, it starts to clean up the gstreamer.py file which is responsible for managing GStreamer libraries and plugins. This is the first change in a series of changes that seek to clean up the way these libraries are managed during the build.
<!-- Please describe your changes on the following line: -->
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes do not require tests because they should change behavior except for old GStreamer on Mac.
<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
In old versions of GStreamer gstvideoconvertscale was split into two
plugins, gstvideoscale and gstvideoconvert. This change makes the use of
these three plugins conditional on their existence and has Windows use
the two plugins from the older version of GStreamer. In addition, it
starts to clean up the gstreamer.py file which is responsible for
managing GStreamer libraries and plugins. This is the first change in a
series of changes that seek to clean up the way these libraries are
managed during the build.
Add support for the intermittent dashboard
<!-- Please describe your changes on the following line: -->
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes do not require tests because this is a CI change.
<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
HACKING_QUICKSTART: update vscode guide
This patch updates the vscode section of the hacking quickstart guide to:
* provide examples of errors that happen if vscode is misconfigured
* use the current rust-analyzer settings ids
* tell rust-analyzer to use mach for build scripts
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [ ] ~~These changes fix #___ (GitHub issue number if applicable)~~
<!-- Either: -->
- [ ] There are tests for these changes OR
- [x] These changes do not require tests because they only affect documentation
Bump spin from 0.9.4 to 0.9.5
Bumps [spin](https://github.com/mvdnes/spin-rs) from 0.9.4 to 0.9.5.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/mvdnes/spin-rs/blob/master/CHANGELOG.md">spin's changelog</a>.</em></p>
<blockquote>
<h1>[0.9.5] - 2023-02-07</h1>
<h3>Added</h3>
<ul>
<li><code>FairMutex</code>, a new mutex implementation that reduces writer starvation.</li>
<li>A MSRV policy: Rust 1.38 is currently required</li>
</ul>
<h3>Changed</h3>
<ul>
<li>The crate's CI now has full MIRI integration, further improving the confidence you can have in the implementation.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Ensured that the crate's abstractions comply with stacked borrows rules.</li>
<li>Unsoundness in the <code>RwLock</code> that could be triggered via a reader overflow</li>
<li>Relaxed various <code>Send</code>/<code>Sync</code> bound requirements to make the crate more flexible</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/mvdnes/spin-rs/commits">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 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 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>
Bump tinyvec_macros from 0.1.0 to 0.1.1
Bumps [tinyvec_macros](https://github.com/Soveu/tinyvec_macros) from 0.1.0 to 0.1.1.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/Soveu/tinyvec_macros/commits">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 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 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>
Use the new intermittent dashboard to report intermittents and get
information about open bugs. This is now used to filter out
known-intermittents from results. In addition, this also allows the
scripts to report bug information to the GitHub. Display that in all
output.
Bump exr from 1.5.1 to 1.5.3
Bumps [exr](https://github.com/johannesvollmer/exrs) from 1.5.1 to 1.5.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/johannesvollmer/exrs/releases">exr's releases</a>.</em></p>
<blockquote>
<h2>Various Performance Improvements by <a href="https://github.com/Shantsel"><code>@Shantsel</code></a></h2>
<p>Various Improvements in encoding and decoding speed, yay!</p>
<p>Huge thanks to <a href="https://github.com/Shnatsel"><code>@Shnatsel</code></a> for all of these:</p>
<ul>
<li>Faster Zip1 & Zip16 & PXR24 decoding (encoding unchaged yet) (by using a new dependency)</li>
<li>Faster RLE encoding and decoding (by utilizing cpu vectorization where supported)</li>
<li>Faster packing and unpacking of RLE & Zip1 & Zip16 images (by utilizing cpu vectorization where supported)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="2a27312290"><code>2a27312</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/johannesvollmer/exrs/issues/183">#183</a> from Shnatsel/zune-inflate</li>
<li><a href="213ac22da7"><code>213ac22</code></a> Merge branch 'master' into zune-inflate</li>
<li><a href="a3004cc984"><code>a3004cc</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/johannesvollmer/exrs/issues/181">#181</a> from Shnatsel/better-benches</li>
<li><a href="fc4ade2bf3"><code>fc4ade2</code></a> Merge branch 'master' into better-benches</li>
<li><a href="20df1fcf5e"><code>20df1fc</code></a> Merge branch 'master' into zune-inflate</li>
<li><a href="56f1d0a2cf"><code>56f1d0a</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/johannesvollmer/exrs/issues/180">#180</a> from Shnatsel/iterator-size-hint</li>
<li><a href="991e3e719b"><code>991e3e7</code></a> Upgrade to zune-inflate 0.2.3</li>
<li><a href="3c96df154e"><code>3c96df1</code></a> Merge remote-tracking branch 'origin/master' into zune-inflate</li>
<li><a href="5d084f8b07"><code>5d084f8</code></a> Saner benchmarking order</li>
<li><a href="73770a3ce8"><code>73770a3</code></a> Rename benchmarks for consistency and sort the list</li>
<li>Additional commits viewable in <a href="https://github.com/johannesvollmer/exrs/compare/v1.5.1...v1.5.3">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 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 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>
Add a "shmem" feature to selectors to avoid publishing that dependency
<!-- Please describe your changes on the following line: -->
Hopefully as a way to help #29105, this PR adds a `shmem` feature to the selectors crate. This is so that the crate can be released with that feature off by default, as the `ToShmem` derives are only of interest to Servo, I think.
All the places where servo's source code includes the selectors crate are made to turn on this feature.
Bump libdbus-sys from 0.2.2 to 0.2.4
Bumps [libdbus-sys](https://github.com/diwic/dbus-rs) from 0.2.2 to 0.2.4.
<details>
<summary>Commits</summary>
<ul>
<li><a href="1dab726dd1"><code>1dab726</code></a> Release libdbus-sys 0.2.4</li>
<li><a href="44246d3f1a"><code>44246d3</code></a> libdbus-sys vendored: Do not turn warnings into errors</li>
<li><a href="7c408602b5"><code>7c40860</code></a> dbus: Make stdfd compile on rust v1.65</li>
<li><a href="3cf507bb77"><code>3cf507b</code></a> Release dbus-crossroads 0.5.2</li>
<li><a href="ad81b09cb9"><code>ad81b09</code></a> Release libdbus 0.2.3, dbus 0.9.7</li>
<li><a href="ecb379de0b"><code>ecb379d</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/diwic/dbus-rs/issues/418">#418</a> from diwic/31-ownedfd</li>
<li><a href="65d0a443ac"><code>65d0a44</code></a> dbus: Remove io-lifetimes feature, add stdfd feature</li>
<li><a href="d913c608c6"><code>d913c60</code></a> crossroads: Fixup introspection of children</li>
<li><a href="bf1e745615"><code>bf1e745</code></a> crossroads: Fixup context lost in GetManagedObjects</li>
<li><a href="7fe3b49301"><code>7fe3b49</code></a> crossroads: Test multiple objects in async-property ObjectManager test</li>
<li>Additional commits viewable in <a href="https://github.com/diwic/dbus-rs/compare/libdbus-sys-v0.2.2...libdbus-sys-v0.2.4">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 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 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>
#26488 Move worklet drop implementation into single droppable member
Signed-off-by: Benjamin Freist <bfreist@soundhound.com>
<!-- Please describe your changes on the following line: -->
Hey @jdm ,
is this issue still free? I would like to start contributing to servo.
This patch is straight from PR 28302, I thought it would be good to start with a small part, I hope that's ok.
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [ ] These changes fix #___ (GitHub issue number if applicable)
<!-- Either: -->
- [ ] There are tests for these changes OR
- [x] These changes do not require tests because they will be checked by the compiler.
<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
Make two small improvements to try result comment
Sort the test names alphabetically so that they are stable between try runs and also include the action URL in the comment when possible.
<!-- Please describe your changes on the following line: -->
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes do not require tests because they just change CI.
<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
Aggregate unexpected results into logs
This makes it easier to run `update-wpt` based on results from the bots by writing a new version of the raw log that filters out all tests with expected results. Then aggregate this output into the filtered results archive. A future version of this could aggregate all unexpected results that were not filtered as intermittents.
<!-- Please describe your changes on the following line: -->
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes do not require tests because they are infrastructure changes.
<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
This makes it easier to run `update-wpt` based on results from the bots.
A future version of this could aggregate all unexpected results that
were not filtered as intermittents.
Bump typed-arena from 2.0.1 to 2.0.2
Bumps [typed-arena](https://github.com/SimonSapin/rust-typed-arena) from 2.0.1 to 2.0.2.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/SimonSapin/rust-typed-arena/blob/master/CHANGELOG.md">typed-arena's changelog</a>.</em></p>
<blockquote>
<h2>2.0.2</h2>
<p>Released 2023/01/08.</p>
<h3>Fixed</h3>
<ul>
<li>Various fixes for use under miri (soundness and provenance fixes).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="239d236e6d"><code>239d236</code></a> Prep release 2.0.2</li>
<li><a href="b92091aaab"><code>b92091a</code></a> Avoid invalidating provenance of outstanding references in <code>alloc_extend</code>. Fi...</li>
<li><a href="6e8f574228"><code>6e8f574</code></a> Remove <code>#[cfg_attr(miri, ignore)]</code> from tests</li>
<li><a href="6a3e6eef5b"><code>6a3e6ee</code></a> Enable miri in CI and bump MSRV</li>
<li><a href="80d469e7c6"><code>80d469e</code></a> Avoid intermediate slice reference in <code>uninitialized_array</code> (fixes <a href="https://github-redirect.dependabot.com/SimonSapin/rust-typed-arena/issues/54">#54</a>)</li>
<li><a href="afbe7b7256"><code>afbe7b7</code></a> Replace travis with github actions in the README's CI badge</li>
<li><a href="dad4f6d97e"><code>dad4f6d</code></a> Only run CI on {PRs against,pushes to master} and fix MSRV CI</li>
<li><a href="9560241e75"><code>9560241</code></a> Remove travis CI</li>
<li><a href="400b56b8cc"><code>400b56b</code></a> Run <code>rustfmt</code></li>
<li><a href="17738fbb7c"><code>17738fb</code></a> Convert CI to github actions</li>
<li>Additional commits viewable in <a href="https://github.com/SimonSapin/rust-typed-arena/compare/2.0.1...2.0.2">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 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 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>
Update fs_extra
<!-- Please describe your changes on the following line: -->
I noticed this warning in the log of my previous PR:
"warning: the following packages contain code that will be rejected by a future version of Rust: fs_extra v1.1.0".
So let's update that crate to get rid of the warning.
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [ ] `./mach build -d` does not report any errors
- [ ] `./mach test-tidy` does not report any errors
- [ ] These changes fix #___ (GitHub issue number if applicable)
<!-- Either: -->
- [ ] There are tests for these changes OR
- [ ] These changes do not require tests because ___
<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
Don't hold back the delivery of pending animation events
The script event loop can block for an indefinite period despite having pending animation-related events that it needs to deliver immediately.
The bug can cause a test timeout in `/css/css-transitions/events-001.html` but (to my knowledge) never manifested in `master` because any irrelevant messages received by the script thread afterward would unblock the event loop and cause it to process any pending animation-related events. We can reproduce the bug in `master` by removing [the `maybe_observe_paint_time` call][2] in `LayoutThread::compute_abs_pos_and_build_display_list`. This also explains the test failure [seen in #28708][1] because the same call is [commented out][3].
[1]: https://github.com/servo/servo/pull/28708#issuecomment-1080003778
[2]: 5448528279/components/layout_thread/lib.rs (L1156-L1157)
[3]: 03a41ffe32/components/layout_thread/lib.rs (L1186-L1187)
---
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [ ] These changes fix #___ (GitHub issue number if applicable)
---
- [x] There are tests for these changes OR
- [ ] These changes do not require tests because ___
Use crates.io release of raqote
<!-- Please describe your changes on the following line: -->
The latest raqote version has been published to crates.io now.
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [ ] `./mach build -d` does not report any errors
- [ ] `./mach test-tidy` does not report any errors
- [ ] These changes fix #___ (GitHub issue number if applicable)
<!-- Either: -->
- [ ] There are tests for these changes OR
- [ ] These changes do not require tests because ___
<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
Update gst plugin for videoconvert & videoscale elements
GStreamer 1.22 has [merged](d11f13f476 (0f8c6b125485c13b682ebcb8fd2f7266439ac317)) the 'gstvideoscale' and 'gstvideoconvert' plugins into a new 'gstvideoconvertscale' plugin. Since we hardcode the plugin names [here](https://github.com/servo/servo/blob/master/python/servo/gstreamer.py#L68) and [here](https://github.com/servo/servo/blob/master/python/servo/gstreamer.py#L71), to support packaging them with the binary, the builds on MacOS have started to fail since Homebrew upgraded to 1.22.
This PR is a temporary fix to allow CI builds to succeed & PRs to be merged.
I see code path in the packaging logic for Windows msvc also relies on these plugin names when media-stack is set to 'gstreamer' (I believe it is 'dummy' by default and on nightlies). Ideally, we should fix the packaging logic so that it can handle both older versions of GST (<1.22) and both mac & win platforms. I'll follow up on this with an new issue.
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix#29344
<!-- Either: -->
- [ ] There are tests for these changes OR
- [X] These changes do not require tests because we are only changing the release packaging logic.
<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
Fixes the test case `/_mozilla/css/css-transition-cancel-event
.html`, which was failing under a specific circumstance.
The observed sequence of events during the failing test run looks like
this:
1. Transitions start in `div1` and `div2`.
2. `div1` generates a `transitionend` event.
3. The `transitionend` event handler removes `div2` from DOM, cancelling
its ongoing transition.
4. `div2` is supposed to generate a `transitioncancel` event in a timely
manner, which it does not. The test fails as a result.
What is going on here? Here's a possible explaination:
1. During one invocation of `ScriptThread::handle_msgs`...
2. In step 2, `ScriptThread::update_animations_send_events` -> `Document
::update_for_new_timeline_value` detects the completion of the
transition, and in response, pends the `transitionend` event.
3. In step 3, `ScriptThread::update_animations_send_events` ->
`Animations::send_pending_events` calls the `transitionend` handler.
4. The `transitionend` event handler removes `div2`, thereby cancelling
its ongoing transition and triggering a reflow.
5. Reflow takes place. During this, `Animations::do_post_reflow_update`
-> `Animations::handle_canceled_animations` pends the
`transitioncancel` event (precursor to step 4).
6. Having discovering that there was no running animation, `Animations::
do_post_reflow_update` calls `self.update_running_animation_presence
(_, false)`, which sends `AnimationState::NoAnimationsPresent`.
7. The invocation of `ScriptThread::handle_msgs` ends, and another
starts. It blocks waiting for events.
8. Meanwhile, the compositor receives `AnimationState::
NoAnimationsPresent` and stops further generation of animation ticks.
9. With no events to wake it up, the script thread is stuck waiting
despite having the pending `transitioncancel` event (step 4).
The HTML specification [says][1] that "an event loop must continually
run [...] as long as it exists" and does not say it can block if there
is nothing to do. Blocking is merely optimization in a user agent
implementation. Pending animation-related events must be processed every
time a "rendering opportunity" arises unless the user agent has a reason
to believe that it "would have no visible effect".
Skipping the processing of animation-related events would have visible
effect if such events are indeed present. The correct implementation in
Servo, therefore, would be to request more animation ticks so that such
events are processed in a subsequent tick.
[1]: https://html.spec.whatwg.org/multipage/#event-loop-processing-model
This commit reverses the order of the `send_pending_events` and
`update_animation_timeline` calls in `ScriptThread::update_animations_
send_events` so that animation-related events pended by the latter are
processed by the former.
The new calling order is more compliant with the "update animations and
send events" algorithm steps from [the Web Animations specification][1].
The old implementation was prone to blocking for an indefinite period
while holding pending events. Due to complex interaction with other
events and timing behavior, I was only able to reproduce the problem
under the following conditions:
- *The `maybe_observe_paint_time` call in `LayoutThread::compute_abs_
pos_and_build_display_list` is removed from the code*. While
performance events may seem irrelevant to the issue, they would
bombard the script thread with events. *Any* extra messages received
would unblock the event loop and prevent the manifestation of the
issue. (But, of course, we aren't supposed to count on that to avoid
the issue.)
- Servo is running in a headless mode, which somehow makes it less
likely for the script thread to receive a `TickAllAnimations` event
after sending `AnimationState::NoAnimationsPresent`.
With the above conditions met and the stars aligned, you can reproduce
the problem by running the WPT test `/css/css-transitions/events-001.
html`.
[1]: https://drafts.csswg.org/web-animations-1/#update-animations-and-send-events
Bump euclid to 0.22
Major changes:
- All matrices are now stored in row major order. This means that parameters to rotation functions should no longer be negated.
- `post_...()` functions are now named `then()`. `pre_transform()` is removed, so `then()` is used and the order of operations changed.
In addition, this PR updates lyon_geom to the latest version.
<!-- Please describe your changes on the following line: -->
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix#27424
- [x] There are tests for these changes
<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
Output test results as GitHub comments
After filtering intermittents, output the results as JSON. Update the
GitHub workflow to aggregate this JSON data into an artifact and use the
aggregated data to generate a GitHub comment with details about the try
run. The idea here is that this comment will make it easier to track
intermittent tests and notice when a change affects a test marked as
intermittent -- either causing it to permanently fail or fixing it.
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes do not require tests because they modify the CI infrastructure.
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->