Commit graph

42502 commits

Author SHA1 Message Date
bors-servo
b9404fcd48
Auto merge of #27016 - gterzian:fix_closing_window, r=jdm,paulrouget
Ensure clean shutdown of JS threads

<!-- Please describe your changes on the following line: -->

FIX https://github.com/servo/servo/issues/26685
FIX https://github.com/servo/servo/issues/26996
FIX https://github.com/servo/servo/issues/9672
FIX #27027

---
<!-- 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. -->
2020-06-30 02:06:57 -04:00
Gregory Terzian
44ebca72da ensure clean shutdown of all threads running JS 2020-06-30 13:22:38 +08:00
bors-servo
6861b6cf33
Auto merge of #27107 - paulrouget:darktheme, r=jdm
UWP: Dark theme support

Removed hard coded colors and replaced icons with builtin icon font.
Fix #27058
2020-06-29 10:35:01 -04:00
bors-servo
56e0e557a5
Auto merge of #27106 - paulrouget:defaulturl, r=jdm
[UWP] Better default url management

Fix #27046
2020-06-29 09:23:09 -04:00
Paul Rouget
7f6f58fac3 UWP: Dark theme support 2020-06-29 10:07:40 +02:00
Paul Rouget
2ef6ba25dc Fix DEFAULT_URL 2020-06-29 06:31:32 +02:00
bors-servo
345238a352
Auto merge of #26927 - asajeffrey:webxr-layer-management, r=Manishearth
Support for webxr layer management

<!-- Please describe your changes on the following line: -->

This adds layer management to servo's webxr implementation, and removes all the special-cased code for openxr surface creation and opaque framebuffers.

---
<!-- 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 it's all back-end plumbing

<!-- 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. -->
2020-06-28 17:38:50 -04:00
Alan Jeffrey
349619ed2d Support for webxr layer management 2020-06-28 16:37:45 -05:00
bors-servo
18f854aeb8
Auto merge of #27105 - servo-wpt-sync:wpt_update_28-06-2020, r=servo-wpt-sync
Sync WPT with upstream (28-06-2020)

Automated downstream sync of changes from upstream as of 28-06-2020.
[no-wpt-sync]
r? @servo-wpt-sync
2020-06-28 09:57:35 -04:00
WPT Sync Bot
f0b9f552c9 Update web-platform-tests to revision c1518503b6d1a94bdd5bf6426b8279293b2325d2 2020-06-28 10:40:48 +00:00
bors-servo
af110ac21f
Auto merge of #27084 - kunalmohan:gpu-buffer-mapping, r=kvark
Implement GPUBuffer.mapAsync and update wgpu-core

<!-- Please describe your changes on the following line: -->
This PR covers the following-
1. update wgpu-core to use serializable `RenderPass` and `ComputePass`. Implement `DispatchIndirect`.
2. Implement `GPUBuffer.mapAsync()`.

The `mapAsync()` methods has the following flow-
1. A new promise is created in `mapAsync()` and a message sent to the server-side. This returns a promise.
2. On the server-side, a `struct BufferMapInfo` object stores the relevant info required to send data to the client-side on completion of mapping. This object is stored in a `buffer_maps: HashMap<id::BufferId, BufferMapInfo<'a>>,` in `WGPU`. `buffers_maps` basically stores the data for buffers with pending mapping.
3. `buffer_map_async()` command is issued with a callback responsible to send the data back to the client.
4. All the devices are polled every time the server receives a new message.
5. The data is sent back on completion and promise resolved through `AsyncWGPUListener` (similar to how the `requestDevice()` and `RequestAdapter` are processed).
6. On receiving the data, the client sends back a `BufferMapComplete` message to the server to remove the entry from `buffer_maps` hashmap.

I intended to implement `getMappedRange()`, too, in this PR but it's quite a task in itself (implementing intersecting ArrayBuffers). This already being a 500+ line PR, I thought it best to get this model approved first (also it will probably be easier to review this and `getMappedRange` separately). `getMappedRange` would come up in the next one.

---
<!-- 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
- [ ] 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. -->
2020-06-27 14:29:08 -04:00
bors-servo
223b6843db
Auto merge of #27102 - servo-wpt-sync:wpt_update_27-06-2020, r=jdm
Sync WPT with upstream (27-06-2020)

Automated downstream sync of changes from upstream as of 27-06-2020.
[no-wpt-sync]
r? @servo-wpt-sync
2020-06-27 13:46:26 -04:00
Kunal Mohan
db2d313a1b Fix ArrayBuffer creation in buffer mapping 2020-06-27 21:32:18 +05:30
Josh Matthews
0ab8826995
Add expected linux failure. 2020-06-27 11:16:20 -04:00
Kunal Mohan
b484836dbc Ensure proper unmap of buffer 2020-06-27 20:27:18 +05:30
Kunal Mohan
ef3b141406 address review comments 2020-06-27 20:27:18 +05:30
Kunal Mohan
e6f0d12f97 Remove peek-poke and peek-poke-derive from ignored packages 2020-06-27 20:27:17 +05:30
Kunal Mohan
b74cea3a46 Implement GPUBuffer.mapAsync and update wgpu-core 2020-06-27 20:27:17 +05:30
WPT Sync Bot
fa6a725a86 Update web-platform-tests to revision cb40575e1a57892476f3e326355674d492dedbd2 2020-06-27 10:37:34 +00:00
bors-servo
0afe412d63
Auto merge of #27101 - atouchet:winapi, r=jdm
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. -->
2020-06-26 23:12:53 -04:00
atouchet
8a9cbcd9c5 Update winapi 2020-06-26 17:42:17 -07:00
bors-servo
e0e2392ebb
Auto merge of #27099 - jdm:jsup, r=jdm
Update mozjs.

Fixes #27045. Fixes #27061.
2020-06-26 18:33:36 -04:00
Josh Matthews
e3602935fe Update mozjs. 2020-06-26 16:43:38 -04:00
bors-servo
2a45ea4675
Auto merge of #27092 - servo:dependabot/cargo/openssl-0.10.30, r=jdm
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 />

[![Dependabot compatibility score](https://api.dependabot.com/badges/compatibility_score?dependency-name=openssl&package-manager=cargo&previous-version=0.10.29&new-version=0.10.30)](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>
2020-06-26 10:25:11 -04:00
bors-servo
040891de39
Auto merge of #27097 - servo-wpt-sync:wpt_update_26-06-2020, r=servo-wpt-sync
Sync WPT with upstream (26-06-2020)

Automated downstream sync of changes from upstream as of 26-06-2020.
[no-wpt-sync]
r? @servo-wpt-sync
2020-06-26 06:31:36 -04:00
WPT Sync Bot
e89aad0a30 Update web-platform-tests to revision 56ac936e7ad12aa22ecf12e43d560a8039522677 2020-06-26 10:31:21 +00:00
dependabot-preview[bot]
4d10c70c32
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.
- [Release notes](https://github.com/sfackler/rust-openssl/releases)
- [Commits](https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.29...openssl-v0.10.30)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-26 07:51:29 +00:00
bors-servo
6757f22bb2
Auto merge of #27083 - servo-wpt-sync:wpt_update_25-06-2020, r=servo-wpt-sync
Sync WPT with upstream (25-06-2020)

Automated downstream sync of changes from upstream as of 25-06-2020.
[no-wpt-sync]
r? @servo-wpt-sync
2020-06-25 23:04:42 -04:00
bors-servo
c862ffe3a1
Auto merge of #27081 - servo:dependabot/cargo/procedural-masquerade-0.1.7, r=nox
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 />

[![Dependabot compatibility score](https://api.dependabot.com/badges/compatibility_score?dependency-name=procedural-masquerade&package-manager=cargo&previous-version=0.1.6&new-version=0.1.7)](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>
2020-06-25 11:36:00 -04:00
bors-servo
ff87e33143
Auto merge of #27079 - servo:dependabot/cargo/miow-0.3.5, r=jdm
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 />

[![Dependabot compatibility score](https://api.dependabot.com/badges/compatibility_score?dependency-name=miow&package-manager=cargo&previous-version=0.3.3&new-version=0.3.5)](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>
2020-06-25 10:30:15 -04:00
bors-servo
c42826122d
Auto merge of #27080 - servo:dependabot/cargo/rayon-1.3.1, r=jdm
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 />

[![Dependabot compatibility score](https://api.dependabot.com/badges/compatibility_score?dependency-name=rayon&package-manager=cargo&previous-version=1.3.0&new-version=1.3.1)](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>
2020-06-25 07:54:09 -04:00
WPT Sync Bot
a4cebda3db Update web-platform-tests to revision fa5f0edd48aca7acfa7d35f1be31cb0dd65817c6 2020-06-25 11:01:24 +00:00
bors-servo
e0e976a37a
Auto merge of #27075 - servo:dependabot/cargo/urlencoding-1.1.1, r=nox
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 />

[![Dependabot compatibility score](https://api.dependabot.com/badges/compatibility_score?dependency-name=urlencoding&package-manager=cargo&previous-version=1.0.0&new-version=1.1.1)](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>
2020-06-25 06:48:13 -04:00
dependabot-preview[bot]
1bb2b3dcae
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.
- [Release notes](https://github.com/servo/rust-cssparser/releases)
- [Commits](https://github.com/servo/rust-cssparser/compare/procedural-masquerade-v0.1.6...procedural-masquerade-v0.1.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-25 08:14:14 +00:00
dependabot-preview[bot]
4e4edcd27e
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.
- [Release notes](https://github.com/rayon-rs/rayon/releases)
- [Changelog](https://github.com/rayon-rs/rayon/blob/master/RELEASES.md)
- [Commits](https://github.com/rayon-rs/rayon/compare/rayon-core-v1.3.0...v1.3.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-25 08:13:41 +00:00
dependabot-preview[bot]
2e3d81bd36
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.
- [Release notes](https://github.com/yoshuawuyts/miow/releases)
- [Commits](https://github.com/yoshuawuyts/miow/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-25 08:13:07 +00:00
dependabot-preview[bot]
d7b829d4b6
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.
- [Release notes](https://github.com/kornelski/rust_urlencoding/releases)
- [Commits](https://github.com/kornelski/rust_urlencoding/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-25 08:07:52 +00:00
bors-servo
6659e9004d
Auto merge of #27032 - mrobinson:fractional-iteration, r=jdm
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. -->
2020-06-24 15:54:27 -04:00
bors-servo
4e473343d4
Auto merge of #27069 - servo:dependabot/cargo/gstreamer-0.15.7, r=jdm
build(deps): bump gstreamer from 0.15.6 to 0.15.7

Bumps gstreamer from 0.15.6 to 0.15.7.

[![Dependabot compatibility score](https://api.dependabot.com/badges/compatibility_score?dependency-name=gstreamer&package-manager=cargo&previous-version=0.15.6&new-version=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>
2020-06-24 14:15:47 -04:00
bors-servo
55a8982c8f
Auto merge of #27071 - servo-wpt-sync:wpt_update_24-06-2020, r=servo-wpt-sync
Sync WPT with upstream (24-06-2020)

Automated downstream sync of changes from upstream as of 24-06-2020.
[no-wpt-sync]
r? @servo-wpt-sync
2020-06-24 13:18:52 -04:00
Martin Robinson
cf4510011f animations: Don't convert linear easing to a bezier
This conversion can lead to floating point errors and extra work when
computing animations. Avoiding it allows animation-iteration-count-009.html
to pass.
2020-06-24 17:19:25 +02:00
Martin Robinson
954b5177f0 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.

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
2020-06-24 17:19:25 +02:00
bors-servo
362dbd3ad9
Auto merge of #27067 - servo:dependabot/cargo/bzip2-sys-0.1.91.0.8, r=jdm
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 />

[![Dependabot compatibility score](https://api.dependabot.com/badges/compatibility_score?dependency-name=bzip2-sys&package-manager=cargo&previous-version=0.1.7&new-version=0.1.9+1.0.8)](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>
2020-06-24 10:52:50 -04:00
bors-servo
5eb768ac0a
Auto merge of #27057 - servo:dependabot/cargo/futures-executor-0.3.5, r=jdm
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 />

[![Dependabot compatibility score](https://api.dependabot.com/badges/compatibility_score?dependency-name=futures-executor&package-manager=cargo&previous-version=0.3.4&new-version=0.3.5)](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>
2020-06-24 09:48:55 -04:00
bors-servo
e2488d2908
Auto merge of #25737 - jsjoeio:patch-1, r=paulrouget
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. -->
2020-06-24 08:45:42 -04:00
bors-servo
6fc77add11
Auto merge of #27063 - servo:bincodeup, r=nox
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×
2020-06-24 08:09:51 -04:00
WPT Sync Bot
b24cb329fb Update web-platform-tests to revision 388763aee0d14246a2f8ebb24176424cc1983820 2020-06-24 10:26:28 +00:00
dependabot-preview[bot]
19d9f016f8
build(deps): bump gstreamer from 0.15.6 to 0.15.7
Bumps gstreamer from 0.15.6 to 0.15.7.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-24 08:18:55 +00:00
dependabot-preview[bot]
a8c539aac6
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.
- [Release notes](https://github.com/alexcrichton/bzip2-rs/releases)
- [Commits](https://github.com/alexcrichton/bzip2-rs/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-24 08:17:07 +00:00
Simon Sapin
a215ef351a 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, 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×
2020-06-24 09:37:08 +02:00