Update winapi
<!-- 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: -->
- [ ] `./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. -->
build(deps): bump openssl from 0.10.29 to 0.10.30
Bumps [openssl](https://github.com/sfackler/rust-openssl) from 0.10.29 to 0.10.30.
<details>
<summary>Commits</summary>
<ul>
<li><a href="d8395ba415"><code>d8395ba</code></a> Release openssl v0.10.30</li>
<li><a href="ff4a2152dc"><code>ff4a215</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/sfackler/rust-openssl/issues/1306">#1306</a> from crdumoul/master</li>
<li><a href="78c77b288c"><code>78c77b2</code></a> Add SslStream::from_raw_parts</li>
<li><a href="164bb84bd1"><code>164bb84</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/sfackler/rust-openssl/issues/1299">#1299</a> from flokli/siganture</li>
<li><a href="3e12906302"><code>3e12906</code></a> sign.rs: fix typo in comment</li>
<li><a href="2f98f1c821"><code>2f98f1c</code></a> Fix CI branch</li>
<li><a href="f5c89a0b94"><code>f5c89a0</code></a> remove appveyor builds</li>
<li><a href="7546bfd148"><code>7546bfd</code></a> Ignore default verify paths test on windows</li>
<li><a href="60118dddad"><code>60118dd</code></a> test env lookup</li>
<li><a href="52c1b6fdc2"><code>52c1b6f</code></a> set vcpkg root</li>
<li>Additional commits viewable in <a href="https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.29...openssl-v0.10.30">compare view</a></li>
</ul>
</details>
<br />
[](https://dependabot.com/compatibility-score/?dependency-name=openssl&package-manager=cargo&previous-version=0.10.29&new-version=0.10.30)
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)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
</details>
build(deps): bump procedural-masquerade from 0.1.6 to 0.1.7
Bumps [procedural-masquerade](https://github.com/servo/rust-cssparser) from 0.1.6 to 0.1.7.
<details>
<summary>Commits</summary>
<ul>
<li><a href="3e911361d2"><code>3e91136</code></a> Auto merge of <a href="https://github-redirect.dependabot.com/servo/rust-cssparser/issues/274">#274</a> - servo:pretty-printing-agnostic, r=emilio</li>
<li><a href="2976bf450b"><code>2976bf4</code></a> Make procedural-masquerade resilient to macro input pretty-printing changes</li>
<li><a href="7c9854ebf5"><code>7c9854e</code></a> Auto merge of <a href="https://github-redirect.dependabot.com/servo/rust-cssparser/issues/267">#267</a> - servo:bump-smallvec, r=emilio</li>
<li><a href="ef8162e6b7"><code>ef8162e</code></a> Auto merge of <a href="https://github-redirect.dependabot.com/servo/rust-cssparser/issues/269">#269</a> - servo:nll, r=SimonSapin</li>
<li><a href="cfd59cabd5"><code>cfd59ca</code></a> Clean up a bit now that lifetimes are non-lexical.</li>
<li><a href="efc1b25b69"><code>efc1b25</code></a> Bump smallvec to 1.0, release new minor version (0.27.2)</li>
<li><a href="65d6c3e0a5"><code>65d6c3e</code></a> Auto merge of <a href="https://github-redirect.dependabot.com/servo/rust-cssparser/issues/265">#265</a> - servo:those-without-syn, r=nox</li>
<li><a href="d4af92c10b"><code>d4af92c</code></a> Simplify the implementation of ascii_case_insensitive_phf_map</li>
<li><a href="610cc2215c"><code>610cc22</code></a> Add support for attributes on match arms in match_ignore_ascii_case!</li>
<li><a href="5188d5e0b2"><code>5188d5e</code></a> Auto merge of <a href="https://github-redirect.dependabot.com/servo/rust-cssparser/issues/264">#264</a> - servo:those-without-syn, r=nox</li>
<li>Additional commits viewable in <a href="https://github.com/servo/rust-cssparser/compare/procedural-masquerade-v0.1.6...procedural-masquerade-v0.1.7">compare view</a></li>
</ul>
</details>
<br />
[](https://dependabot.com/compatibility-score/?dependency-name=procedural-masquerade&package-manager=cargo&previous-version=0.1.6&new-version=0.1.7)
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)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
</details>
build(deps): bump miow from 0.3.3 to 0.3.5
Bumps [miow](https://github.com/yoshuawuyts/miow) from 0.3.3 to 0.3.5.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/yoshuawuyts/miow/commits">compare view</a></li>
</ul>
</details>
<br />
[](https://dependabot.com/compatibility-score/?dependency-name=miow&package-manager=cargo&previous-version=0.3.3&new-version=0.3.5)
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)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
</details>
build(deps): bump rayon from 1.3.0 to 1.3.1
Bumps [rayon](https://github.com/rayon-rs/rayon) from 1.3.0 to 1.3.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/rayon-rs/rayon/blob/master/RELEASES.md">rayon's changelog</a>.</em></p>
<blockquote>
<h1>Release rayon 1.3.1 / rayon-core 1.7.1 (2020-06-15)</h1>
<ul>
<li>Fixed a use-after-free race in calls blocked between two rayon thread pools.</li>
<li>Collecting to an indexed <code>Vec</code> now drops any partial writes while unwinding,
rather than just leaking them. If dropping also panics, Rust will abort.
<ul>
<li>Note: the old leaking behavior is considered <em>safe</em>, just not ideal.</li>
</ul>
</li>
<li>The new <code>IndexedParallelIterator::step_by()</code> adapts an iterator to step
through items by the given count, like <code>Iterator::step_by()</code>.</li>
<li>The new <code>ParallelSlice::par_chunks_exact()</code> and mutable equivalent
<code>ParallelSliceMut::par_chunks_exact_mut()</code> ensure that the chunks always have
the exact length requested, leaving any remainder separate, like the slice
methods <code>chunks_exact()</code> and <code>chunks_exact_mut()</code>.</li>
</ul>
<h2>Contributors</h2>
<p>Thanks to all of the contributors for this release!</p>
<ul>
<li><a href="https://github.com/adrian5">@adrian5</a></li>
<li><a href="https://github.com/bluss">@bluss</a></li>
<li><a href="https://github.com/cuviper">@cuviper</a></li>
<li><a href="https://github.com/FlyingCanoe">@FlyingCanoe</a></li>
<li><a href="https://github.com/GuillaumeGomez">@GuillaumeGomez</a></li>
<li><a href="https://github.com/matthiasbeyer">@matthiasbeyer</a></li>
<li><a href="https://github.com/picoHz">@picoHz</a></li>
<li><a href="https://github.com/zesterer">@zesterer</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="a798276590"><code>a798276</code></a> Merge <a href="https://github-redirect.dependabot.com/rayon-rs/rayon/issues/769">#769</a></li>
<li><a href="4bce3c8f27"><code>4bce3c8</code></a> Update ci/compat-Cargo.lock</li>
<li><a href="c5b6e1cd28"><code>c5b6e1c</code></a> Release rayon 1.3.1 and rayon-core 1.7.1</li>
<li><a href="983866d421"><code>983866d</code></a> Merge <a href="https://github-redirect.dependabot.com/rayon-rs/rayon/issues/740">#740</a></li>
<li><a href="eac386f1e3"><code>eac386f</code></a> Merge <a href="https://github-redirect.dependabot.com/rayon-rs/rayon/issues/766">#766</a></li>
<li><a href="8f58a12b51"><code>8f58a12</code></a> Fix wrong examples of find_map variants</li>
<li><a href="b5e81efdda"><code>b5e81ef</code></a> Merge <a href="https://github-redirect.dependabot.com/rayon-rs/rayon/issues/759">#759</a></li>
<li><a href="94baa8232c"><code>94baa82</code></a> Add collect unwinding test for zero-sized elements</li>
<li><a href="b5869e4553"><code>b5869e4</code></a> Remove redundant Send impl for CollectFolder</li>
<li><a href="7a0c42e649"><code>7a0c42e</code></a> Move collect test to its own file</li>
<li>Additional commits viewable in <a href="https://github.com/rayon-rs/rayon/compare/rayon-core-v1.3.0...v1.3.1">compare view</a></li>
</ul>
</details>
<br />
[](https://dependabot.com/compatibility-score/?dependency-name=rayon&package-manager=cargo&previous-version=1.3.0&new-version=1.3.1)
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)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
</details>
build(deps): bump urlencoding from 1.0.0 to 1.1.1
Bumps [urlencoding](https://github.com/kornelski/rust_urlencoding) from 1.0.0 to 1.1.1.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/kornelski/rust_urlencoding/commits">compare view</a></li>
</ul>
</details>
<br />
[](https://dependabot.com/compatibility-score/?dependency-name=urlencoding&package-manager=cargo&previous-version=1.0.0&new-version=1.1.1)
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)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
</details>
animations: Finish support for fractional iteration counts
This change also improves support for creating animations with negative
delays, as that is necessary to test support for fractional iteration
lengths.
Fixes: #14858
<!-- 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#14858
- [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. -->
build(deps): bump gstreamer from 0.15.6 to 0.15.7
Bumps gstreamer from 0.15.6 to 0.15.7.
[](https://dependabot.com/compatibility-score/?dependency-name=gstreamer&package-manager=cargo&previous-version=0.15.6&new-version=0.15.7)
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)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
</details>
This conversion can lead to floating point errors and extra work when
computing animations. Avoiding it allows animation-iteration-count-009.html
to pass.
This change also improves support for creating animations with negative
delays, as that is necessary to test support for fractional iteration
lengths.
This change also adjusts existing Servo animation tests which assumed
that advancing to the exact moment of the end of the animation would be
considered "before the end." With this change, this moment is "after the
end."
Fixes: #14858
build(deps): bump bzip2-sys from 0.1.7 to 0.1.9+1.0.8
Bumps [bzip2-sys](https://github.com/alexcrichton/bzip2-rs) from 0.1.7 to 0.1.9+1.0.8.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/alexcrichton/bzip2-rs/commits">compare view</a></li>
</ul>
</details>
<br />
[](https://dependabot.com/compatibility-score/?dependency-name=bzip2-sys&package-manager=cargo&previous-version=0.1.7&new-version=0.1.9+1.0.8)
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)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
</details>
build(deps): bump futures-executor from 0.3.4 to 0.3.5
Bumps [futures-executor](https://github.com/rust-lang/futures-rs) from 0.3.4 to 0.3.5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/rust-lang/futures-rs/releases">futures-executor's releases</a>.</em></p>
<blockquote>
<h2>0.3.5</h2>
<ul>
<li>Added <code>StreamExt::flat_map</code>.</li>
<li>Added <code>StreamExt::ready_chunks</code>.</li>
<li>Added <code>*_unpin</code> methods to <code>SinkExt</code>.</li>
<li>Added a <code>cancellation()</code> future to <code>oneshot::Sender</code>.</li>
<li>Added <code>reunite</code> method to <code>ReadHalf</code> and <code>WriteHalf</code>.</li>
<li>Added <code>Extend</code> implementations for <code>Futures(Un)Ordered</code> and <code>SelectAll</code>.</li>
<li>Added support for reexporting the <code>join!</code> and <code>select!</code> macros.</li>
<li>Added <code>no_std</code> support for the <code>pending!</code> and <code>poll!</code> macros.</li>
<li>Added <code>Send</code> and <code>Sync</code> support for <code>AssertUnmoved</code>.</li>
<li>Fixed a bug where <code>Shared</code> wasn't relinquishing control to the executor.</li>
<li>Removed the <code>Send</code> bound on the output of <code>RemoteHandle</code>.</li>
<li>Relaxed bounds on <code>FuturesUnordered</code>.</li>
<li>Reorganized internal tests to work under different <code>--feature</code>s.</li>
<li>Reorganized the bounds on <code>StreamExt::forward</code>.</li>
<li>Removed and replaced a large amount of internal <code>unsafe</code>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md">futures-executor's changelog</a>.</em></p>
<blockquote>
<h1>0.3.5 - 2020-05-08</h1>
<ul>
<li>Added <code>StreamExt::flat_map</code>.</li>
<li>Added <code>StreamExt::ready_chunks</code>.</li>
<li>Added <code>*_unpin</code> methods to <code>SinkExt</code>.</li>
<li>Added a <code>cancellation()</code> future to <code>oneshot::Sender</code>.</li>
<li>Added <code>reunite</code> method to <code>ReadHalf</code> and <code>WriteHalf</code>.</li>
<li>Added <code>Extend</code> implementations for <code>Futures(Un)Ordered</code> and <code>SelectAll</code>.</li>
<li>Added support for reexporting the <code>join!</code> and <code>select!</code> macros.</li>
<li>Added <code>no_std</code> support for the <code>pending!</code> and <code>poll!</code> macros.</li>
<li>Added <code>Send</code> and <code>Sync</code> support for <code>AssertUnmoved</code>.</li>
<li>Fixed a bug where <code>Shared</code> wasn't relinquishing control to the executor.</li>
<li>Removed the <code>Send</code> bound on the output of <code>RemoteHandle</code>.</li>
<li>Relaxed bounds on <code>FuturesUnordered</code>.</li>
<li>Reorganized internal tests to work under different <code>--feature</code>s.</li>
<li>Reorganized the bounds on <code>StreamExt::forward</code>.</li>
<li>Removed and replaced a large amount of internal <code>unsafe</code>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="4ceafb384c"><code>4ceafb3</code></a> Stage 0.3.5</li>
<li><a href="5b91728e10"><code>5b91728</code></a> Drop unneeded Send/Sync bound from AssertUnmoved</li>
<li><a href="4b930bb470"><code>4b930bb</code></a> Implement Send + Sync for AssertUnmoved</li>
<li><a href="3bf5ac99e9"><code>3bf5ac9</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/rust-lang/futures-rs/issues/2128">#2128</a> from Diggsey/snip</li>
<li><a href="1b44548be7"><code>1b44548</code></a> Merge branch 'master' into snip</li>
<li><a href="32005e3f74"><code>32005e3</code></a> fix: Shared must relinquish control to the executor if repolled</li>
<li><a href="dc06edaf54"><code>dc06eda</code></a> Update pin-utils to 0.1</li>
<li><a href="dc00793b38"><code>dc00793</code></a> Make ready and lazy's panic messages easy to understand</li>
<li><a href="127b244ecd"><code>127b244</code></a> Allow pending! and poll! in no_std</li>
<li><a href="dfc6673946"><code>dfc6673</code></a> Update futures-util/src/future/future/flatten.rs</li>
<li>Additional commits viewable in <a href="https://github.com/rust-lang/futures-rs/compare/0.3.4...0.3.5">compare view</a></li>
</ul>
</details>
<br />
[](https://dependabot.com/compatibility-score/?dependency-name=futures-executor&package-manager=cargo&previous-version=0.3.4&new-version=0.3.5)
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)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
</details>
docs(README): update mac installation
<!-- Please describe your changes on the following line: -->
This clarifies the mac installation instructions.
---
<!-- 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
- [x] These changes fix#22905
<!-- Either: -->
- [ ] There are tests for these changes OR
- [x] These changes do not require tests because it's a change to the `README`
<!-- 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 bincode, reduce code size of `script` by ~11%
… as measured in lines of unoptimized LLVM IR by
```
cargo llvm-lines --manifest-path ports/winit/Cargo.toml \
-p script --features layout-2013 | head -n 30
```
… with https://github.com/dtolnay/cargo-llvm-lines
CC https://github.com/servo/servo/issues/26713
One of the top functions (in lines contribution) was a `Visitor::visit_enum` method generated by `serde_derive` for deserializing `keyboard_types:🔑:Key`, which is an enum with many variants. I had filed https://github.com/serde-rs/serde/issues/1824 to discuss this, and dtolnay proposed https://github.com/pyfisch/keyboard-types/pull/6 manually implementing `Deserialize` for that enum instead of deriving it.
However another point of note is that this function had four copies with monomorphization. I could reproduce this in a program that does nothing but deserialize an enum with bincode: https://github.com/serde-rs/serde/issues/1824#issuecomment-641244476 This suggests that bincode uses instanciates the `Deserialize` impls with four different `Deserializer` types which is three more than necessary.
https://dos.cafe/blog/bincode-1.3.html mentions changes to `Deserializer` types in a new version of bincode. And sure enough, this issue is now fixed.
Before:
```
Lines Copies Function name
----- ------ -------------
7022161 (100%) 180367 (100%) (TOTAL)
178816 (2.5%) 15437 (8.6%) core::ptr::drop_in_place
151022 (2.2%) 6634 (3.7%) core::ops::function::FnOnce::call_once
122012 (1.7%) 1000 (0.6%) <<&mut bincode:🇩🇪:Deserializer<R,O> as serde:🇩🇪:Deserializer>::deserialize_tuple::Access<R,O> as serde:🇩🇪:SeqAccess>::next_element_seed
101731 (1.4%) 1627 (0.9%) core::option::Option<T>::map
83196 (1.2%) 1192 (0.7%) core::result::Result<T,E>::map
51215 (0.7%) 6111 (3.4%) core::ops::function::FnOnce::call_once{{vtable.shim}}
47048 (0.7%) 4 (0.0%) <keyboard_types:🔑:_IMPL_DESERIALIZE_FOR_Key::<impl serde:🇩🇪:Deserialize for keyboard_types:🔑:Key>::deserialize::__Visitor as serde:🇩🇪:Visitor>::visit_enum
45388 (0.6%) 296 (0.2%) <&mut bincode:🇩🇪:Deserializer<R,O> as serde:🇩🇪:Deserializer>::deserialize_enum::<impl serde:🇩🇪:EnumAccess for &mut bincode:🇩🇪:Deserializer<R,O>>::variant_seed
44973 (0.6%) 647 (0.4%) core::result::Result<T,E>::map_err
39185 (0.6%) 516 (0.3%) std:🧵:local::LocalKey<T>::try_with
39130 (0.6%) 215 (0.1%) alloc::raw_vec::RawVec<T,A>::grow_amortized
35334 (0.5%) 867 (0.5%) alloc::alloc::box_free
34788 (0.5%) 609 (0.3%) crossbeam_channel::context::Context::with::{{closure}}
33810 (0.5%) 646 (0.4%) core::ptr::swap_nonoverlapping_one
33610 (0.5%) 552 (0.3%) core::result::Result<T,E>::unwrap_or_else
32144 (0.5%) 392 (0.2%) <*const T as core::fmt::Pointer>::fmt
32062 (0.5%) 782 (0.4%) script::dom::bindings::root::Root<T>::new
31589 (0.4%) 600 (0.3%) core::result::Result<T,E>::expect
29364 (0.4%) 116 (0.1%) <<script_traits::webdriver_msg::_IMPL_DESERIALIZE_FOR_WebDriverScriptCommand::<impl serde:🇩🇪:Deserialize for script_traits::webdriver_msg::WebDriverScriptCommand>::deserialize::__Visitor as serde:🇩🇪:Visitor>::visit_enum::__Visitor as serde:🇩🇪:Visitor>::visit_seq
26996 (0.4%) 346 (0.2%) core::option::Option<T>::map_or
26168 (0.4%) 92 (0.1%) <<script_traits::_IMPL_DESERIALIZE_FOR_ConstellationControlMsg::<impl serde:🇩🇪:Deserialize for script_traits::ConstellationControlMsg>::deserialize::__Visitor as serde:🇩🇪:Visitor>::visit_enum::__Visitor as serde:🇩🇪:Visitor>::visit_seq
25996 (0.4%) 388 (0.2%) script::dom::bindings::root::Root<script::dom::bindings::root::MaybeUnreflectedDom<T>>::reflect_with
25833 (0.4%) 641 (0.4%) core::result::Result<T,E>::unwrap
25180 (0.4%) 4 (0.0%) <keyboard_types::code::_IMPL_DESERIALIZE_FOR_Code::<impl serde:🇩🇪:Deserialize for keyboard_types::code::Code>::deserialize::__Visitor as serde:🇩🇪:Visitor>::visit_enum
24751 (0.4%) 197 (0.1%) core::iter::traits::iterator::Iterator::try_fold
22216 (0.3%) 376 (0.2%) bincode::internal::deserialize_seed
22185 (0.3%) 145 (0.1%) hashbrown::raw::RawTable<T>::find
```
After:
```
Lines Copies Function name
----- ------ -------------
6239581 (100%) 169803 (100%) (TOTAL)
178770 (2.9%) 15434 (9.1%) core::ptr::drop_in_place
151022 (2.4%) 6634 (3.9%) core::ops::function::FnOnce::call_once
101146 (1.6%) 1618 (1.0%) core::option::Option<T>::map
76938 (1.2%) 1090 (0.6%) core::result::Result<T,E>::map
51215 (0.8%) 6111 (3.6%) core::ops::function::FnOnce::call_once{{vtable.shim}}
44973 (0.7%) 647 (0.4%) core::result::Result<T,E>::map_err
39185 (0.6%) 516 (0.3%) std:🧵:local::LocalKey<T>::try_with
39130 (0.6%) 215 (0.1%) alloc::raw_vec::RawVec<T,A>::grow_amortized
35334 (0.6%) 867 (0.5%) alloc::alloc::box_free
34788 (0.6%) 609 (0.4%) crossbeam_channel::context::Context::with::{{closure}}
33810 (0.5%) 646 (0.4%) core::ptr::swap_nonoverlapping_one
33610 (0.5%) 552 (0.3%) core::result::Result<T,E>::unwrap_or_else
32144 (0.5%) 392 (0.2%) <*const T as core::fmt::Pointer>::fmt
32062 (0.5%) 782 (0.5%) script::dom::bindings::root::Root<T>::new
31589 (0.5%) 600 (0.4%) core::result::Result<T,E>::expect
30069 (0.5%) 250 (0.1%) <<&mut bincode:🇩🇪:Deserializer<R,O> as serde:🇩🇪:Deserializer>::deserialize_tuple::Access<R,O> as serde:🇩🇪:SeqAccess>::next_element_seed
26996 (0.4%) 346 (0.2%) core::option::Option<T>::map_or
25996 (0.4%) 388 (0.2%) script::dom::bindings::root::Root<script::dom::bindings::root::MaybeUnreflectedDom<T>>::reflect_with
25833 (0.4%) 641 (0.4%) core::result::Result<T,E>::unwrap
24751 (0.4%) 197 (0.1%) core::iter::traits::iterator::Iterator::try_fold
22185 (0.4%) 145 (0.1%) hashbrown::raw::RawTable<T>::find
22000 (0.4%) 80 (0.0%) hashbrown::raw::RawTable<T>::rehash_in_place
20808 (0.3%) 289 (0.2%) core::alloc::layout::Layout::array
20031 (0.3%) 308 (0.2%) core::option::Option<T>::ok_or_else
19732 (0.3%) 2 (0.0%) html5ever::tree_builder::TreeBuilder<Handle,Sink>::step
18951 (0.3%) 1014 (0.6%) core::ptr::read
17261 (0.3%) 201 (0.1%) core::iter::traits::iterator::Iterator::fold
```
That `visit_enum` for `Key` is not in the first 30 lines, I find it after changing the filtering command to `head -n 60`:
```
11762 (0.2%) 1 (0.0%) <keyboard_types:🔑:_IMPL_DESERIALIZE_FOR_Key::<impl serde:🇩🇪:Deserialize for keyboard_types:🔑:Key>::deserialize::__Visitor as serde:🇩🇪:Visitor>::visit_enum
```
It has one copy / instantiation instead of four, and contributes exactly four times fewer lines of IR.
The crate total reduced by ~782k lines, a lot more than ~35k for this `visit_enum` function. We also see that `next_element_seed` (also for bincode deserialization) now has 250 copies instead of 1000. So it looks like *everything* bincode-related was reduced by 4×
… as measured in lines of unoptimized LLVM IR by
```
cargo llvm-lines --manifest-path ports/winit/Cargo.toml \
-p script --features layout-2013 | head -n 30
```
… with https://github.com/dtolnay/cargo-llvm-lines
CC https://github.com/servo/servo/issues/26713
One of the top functions (in lines contribution) was a
`Visitor::visit_enum` method generated by `serde_derive` for deserializing
`keyboard_types:🔑:Key`, which is an enum with many variants.
I had filed https://github.com/serde-rs/serde/issues/1824 to discuss this,
and dtolnay proposed https://github.com/pyfisch/keyboard-types/pull/6
manually implementing `Deserialize` for that enum instead of deriving it.
However another point of note is that this function had four copies with
monomorphization. I could reproduce this in a program that does nothing
but deserialize an enum with bincode:
https://github.com/serde-rs/serde/issues/1824#issuecomment-641244476
This suggests that bincode uses instanciates the `Deserialize` impls
with four different `Deserializer` types which is three more than necessary.
https://dos.cafe/blog/bincode-1.3.html mentions changes to `Deserializer`
types in a new version of bincode. And sure enough, this issue is now fixed.
Before:
```
Lines Copies Function name
----- ------ -------------
7022161 (100%) 180367 (100%) (TOTAL)
178816 (2.5%) 15437 (8.6%) core::ptr::drop_in_place
151022 (2.2%) 6634 (3.7%) core::ops::function::FnOnce::call_once
122012 (1.7%) 1000 (0.6%) <<&mut bincode:🇩🇪:Deserializer<R,O> as serde:🇩🇪:Deserializer>::deserialize_tuple::Access<R,O> as serde:🇩🇪:SeqAccess>::next_element_seed
101731 (1.4%) 1627 (0.9%) core::option::Option<T>::map
83196 (1.2%) 1192 (0.7%) core::result::Result<T,E>::map
51215 (0.7%) 6111 (3.4%) core::ops::function::FnOnce::call_once{{vtable.shim}}
47048 (0.7%) 4 (0.0%) <keyboard_types:🔑:_IMPL_DESERIALIZE_FOR_Key::<impl serde:🇩🇪:Deserialize for keyboard_types:🔑:Key>::deserialize::__Visitor as serde:🇩🇪:Visitor>::visit_enum
45388 (0.6%) 296 (0.2%) <&mut bincode:🇩🇪:Deserializer<R,O> as serde:🇩🇪:Deserializer>::deserialize_enum::<impl serde:🇩🇪:EnumAccess for &mut bincode:🇩🇪:Deserializer<R,O>>::variant_seed
44973 (0.6%) 647 (0.4%) core::result::Result<T,E>::map_err
39185 (0.6%) 516 (0.3%) std:🧵:local::LocalKey<T>::try_with
39130 (0.6%) 215 (0.1%) alloc::raw_vec::RawVec<T,A>::grow_amortized
35334 (0.5%) 867 (0.5%) alloc::alloc::box_free
34788 (0.5%) 609 (0.3%) crossbeam_channel::context::Context::with::{{closure}}
33810 (0.5%) 646 (0.4%) core::ptr::swap_nonoverlapping_one
33610 (0.5%) 552 (0.3%) core::result::Result<T,E>::unwrap_or_else
32144 (0.5%) 392 (0.2%) <*const T as core::fmt::Pointer>::fmt
32062 (0.5%) 782 (0.4%) script::dom::bindings::root::Root<T>::new
31589 (0.4%) 600 (0.3%) core::result::Result<T,E>::expect
29364 (0.4%) 116 (0.1%) <<script_traits::webdriver_msg::_IMPL_DESERIALIZE_FOR_WebDriverScriptCommand::<impl serde:🇩🇪:Deserialize for script_traits::webdriver_msg::WebDriverScriptCommand>::deserialize::__Visitor as serde:🇩🇪:Visitor>::visit_enum::__Visitor as serde:🇩🇪:Visitor>::visit_seq
26996 (0.4%) 346 (0.2%) core::option::Option<T>::map_or
26168 (0.4%) 92 (0.1%) <<script_traits::_IMPL_DESERIALIZE_FOR_ConstellationControlMsg::<impl serde:🇩🇪:Deserialize for script_traits::ConstellationControlMsg>::deserialize::__Visitor as serde:🇩🇪:Visitor>::visit_enum::__Visitor as serde:🇩🇪:Visitor>::visit_seq
25996 (0.4%) 388 (0.2%) script::dom::bindings::root::Root<script::dom::bindings::root::MaybeUnreflectedDom<T>>::reflect_with
25833 (0.4%) 641 (0.4%) core::result::Result<T,E>::unwrap
25180 (0.4%) 4 (0.0%) <keyboard_types::code::_IMPL_DESERIALIZE_FOR_Code::<impl serde:🇩🇪:Deserialize for keyboard_types::code::Code>::deserialize::__Visitor as serde:🇩🇪:Visitor>::visit_enum
24751 (0.4%) 197 (0.1%) core::iter::traits::iterator::Iterator::try_fold
22216 (0.3%) 376 (0.2%) bincode::internal::deserialize_seed
22185 (0.3%) 145 (0.1%) hashbrown::raw::RawTable<T>::find
```
After:
```
Lines Copies Function name
----- ------ -------------
6239581 (100%) 169803 (100%) (TOTAL)
178770 (2.9%) 15434 (9.1%) core::ptr::drop_in_place
151022 (2.4%) 6634 (3.9%) core::ops::function::FnOnce::call_once
101146 (1.6%) 1618 (1.0%) core::option::Option<T>::map
76938 (1.2%) 1090 (0.6%) core::result::Result<T,E>::map
51215 (0.8%) 6111 (3.6%) core::ops::function::FnOnce::call_once{{vtable.shim}}
44973 (0.7%) 647 (0.4%) core::result::Result<T,E>::map_err
39185 (0.6%) 516 (0.3%) std:🧵:local::LocalKey<T>::try_with
39130 (0.6%) 215 (0.1%) alloc::raw_vec::RawVec<T,A>::grow_amortized
35334 (0.6%) 867 (0.5%) alloc::alloc::box_free
34788 (0.6%) 609 (0.4%) crossbeam_channel::context::Context::with::{{closure}}
33810 (0.5%) 646 (0.4%) core::ptr::swap_nonoverlapping_one
33610 (0.5%) 552 (0.3%) core::result::Result<T,E>::unwrap_or_else
32144 (0.5%) 392 (0.2%) <*const T as core::fmt::Pointer>::fmt
32062 (0.5%) 782 (0.5%) script::dom::bindings::root::Root<T>::new
31589 (0.5%) 600 (0.4%) core::result::Result<T,E>::expect
30069 (0.5%) 250 (0.1%) <<&mut bincode:🇩🇪:Deserializer<R,O> as serde:🇩🇪:Deserializer>::deserialize_tuple::Access<R,O> as serde:🇩🇪:SeqAccess>::next_element_seed
26996 (0.4%) 346 (0.2%) core::option::Option<T>::map_or
25996 (0.4%) 388 (0.2%) script::dom::bindings::root::Root<script::dom::bindings::root::MaybeUnreflectedDom<T>>::reflect_with
25833 (0.4%) 641 (0.4%) core::result::Result<T,E>::unwrap
24751 (0.4%) 197 (0.1%) core::iter::traits::iterator::Iterator::try_fold
22185 (0.4%) 145 (0.1%) hashbrown::raw::RawTable<T>::find
22000 (0.4%) 80 (0.0%) hashbrown::raw::RawTable<T>::rehash_in_place
20808 (0.3%) 289 (0.2%) core::alloc::layout::Layout::array
20031 (0.3%) 308 (0.2%) core::option::Option<T>::ok_or_else
19732 (0.3%) 2 (0.0%) html5ever::tree_builder::TreeBuilder<Handle,Sink>::step
18951 (0.3%) 1014 (0.6%) core::ptr::read
17261 (0.3%) 201 (0.1%) core::iter::traits::iterator::Iterator::fold
```
That `visit_enum` for `Key` is not in the first 30 lines, I find it after
changing the filtering command to `head -n 60`:
```
11762 (0.2%) 1 (0.0%) <keyboard_types:🔑:_IMPL_DESERIALIZE_FOR_Key::<impl serde:🇩🇪:Deserialize for keyboard_types:🔑:Key>::deserialize::__Visitor as serde:🇩🇪:Visitor>::visit_enum
```
It has one copy / instantiation instead of four, which contributes exactly
four times fewer lines of IR.
The crate total reduced by ~782k lines, a lot more than ~35k for this
`visit_enum` function. We see that `next_element_seed` (also for bincode
deserialization) now has 250 copies instead of 1000. So it looks like
*everything* bincode related was reduced by 4×
Document a GStreamer plugin workaround
<!-- Please describe your changes on the following line: -->
Based on conversation in Issue #27013 this documents a workaround in the gstreamer CLI for a failure of the GStreamer plugin to find usable a GL context without a downstream glimagesink
---
<!-- 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 it's a document 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. -->
build(deps): bump crossbeam-queue from 0.2.1 to 0.2.3
Bumps [crossbeam-queue](https://github.com/crossbeam-rs/crossbeam) from 0.2.1 to 0.2.3.
<details>
<summary>Commits</summary>
<ul>
<li><a href="149a3c9389"><code>149a3c9</code></a> Release crossbeam-queue 0.2.3</li>
<li><a href="18363b5b3e"><code>18363b5</code></a> Merge <a href="https://github-redirect.dependabot.com/crossbeam-rs/crossbeam/issues/476">#476</a></li>
<li><a href="e32c891f37"><code>e32c891</code></a> Release new versions</li>
<li><a href="6d6591a0e1"><code>6d6591a</code></a> Merge <a href="https://github-redirect.dependabot.com/crossbeam-rs/crossbeam/issues/474">#474</a></li>
<li><a href="528c3caadb"><code>528c3ca</code></a> Undo bump of rand as it bumps MSRV</li>
<li><a href="78043c7b11"><code>78043c7</code></a> Bump crossbeam to 0.7.4</li>
<li><a href="640cec2f4b"><code>640cec2</code></a> Bump crossbeam-deque to 0.7.3</li>
<li><a href="e962784d97"><code>e962784</code></a> Bump crossbeam-queue to 0.2.2</li>
<li><a href="64ad929c5d"><code>64ad929</code></a> Bump crossbeam-epoch to 0.8.1</li>
<li><a href="909edf53da"><code>909edf5</code></a> Bump crossbeam-channel to 0.4.1</li>
<li>Additional commits viewable in <a href="https://github.com/crossbeam-rs/crossbeam/compare/crossbeam-queue-0.2.1...crossbeam-queue-0.2.3">compare view</a></li>
</ul>
</details>
<br />
[](https://dependabot.com/compatibility-score/?dependency-name=crossbeam-queue&package-manager=cargo&previous-version=0.2.1&new-version=0.2.3)
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)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
</details>
build(deps): bump gif from 0.10.0 to 0.10.3
Bumps [gif](https://github.com/image-rs/image-gif) from 0.10.0 to 0.10.3.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/image-rs/image-gif/commits/v0.10.3">compare view</a></li>
</ul>
</details>
<br />
[](https://dependabot.com/compatibility-score/?dependency-name=gif&package-manager=cargo&previous-version=0.10.0&new-version=0.10.3)
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)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
</details>
build(deps): bump addr2line from 0.12.1 to 0.12.2
Bumps [addr2line](https://github.com/gimli-rs/addr2line) from 0.12.1 to 0.12.2.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/gimli-rs/addr2line/blob/master/CHANGELOG.md">addr2line's changelog</a>.</em></p>
<blockquote>
<h2>0.12.2 (2020/06/21)</h2>
<h3>Fixed</h3>
<ul>
<li>Avoid linear search for <code>DW_FORM_ref_addr</code>.
<a href="https://github-redirect.dependabot.com/gimli-rs/addr2line/pull/175">#175</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="6812d68678"><code>6812d68</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/gimli-rs/addr2line/issues/177">#177</a> from philipc/release</li>
<li><a href="84d27010c9"><code>84d2701</code></a> Bump version to 0.12.2</li>
<li><a href="d25f7b3ddc"><code>d25f7b3</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/gimli-rs/addr2line/issues/175">#175</a> from philipc/issue-171</li>
<li><a href="8e0b99b089"><code>8e0b99b</code></a> Avoid linear search for DW_FORM_ref_addr</li>
<li><a href="a8757e5275"><code>a8757e5</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/gimli-rs/addr2line/issues/173">#173</a> from philipc/issue-169</li>
<li><a href="ce518c6ab1"><code>ce518c6</code></a> Rename aux to auxiliary</li>
<li>See full diff in <a href="https://github.com/gimli-rs/addr2line/compare/0.12.1...0.12.2">compare view</a></li>
</ul>
</details>
<br />
[](https://dependabot.com/compatibility-score/?dependency-name=addr2line&package-manager=cargo&previous-version=0.12.1&new-version=0.12.2)
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)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
</details>
build(deps): bump gstreamer-app from 0.15.3 to 0.15.6
Bumps gstreamer-app from 0.15.3 to 0.15.6.
[](https://dependabot.com/compatibility-score/?dependency-name=gstreamer-app&package-manager=cargo&previous-version=0.15.3&new-version=0.15.6)
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)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
</details>