Bump rand from 0.7.2 to 0.7.3
Bumps [rand](https://github.com/rust-random/rand) from 0.7.2 to 0.7.3.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/rust-random/rand/blob/master/CHANGELOG.md">rand's changelog</a>.</em></p>
<blockquote>
<h2>[0.7.3] - 2020-01-10</h2>
<h3>Fixes</h3>
<ul>
<li>The <code>Bernoulli</code> distribution constructors now reports an error on NaN and on
<code>denominator == 0</code>. (<a href="https://github-redirect.dependabot.com/rust-random/rand/issues/925">#925</a>)</li>
<li>Use <code>std::sync::Once</code> to register fork handler, avoiding possible atomicity violation (<a href="https://github-redirect.dependabot.com/rust-random/rand/issues/928">#928</a>)</li>
<li>Fix documentation on the precision of generated floating-point values</li>
</ul>
<h3>Changes</h3>
<ul>
<li>Unix: make libc dependency optional; only use fork protection with std feature (<a href="https://github-redirect.dependabot.com/rust-random/rand/issues/928">#928</a>)</li>
</ul>
<h3>Additions</h3>
<ul>
<li>Implement <code>std::error::Error</code> for <code>BernoulliError</code> (<a href="https://github-redirect.dependabot.com/rust-random/rand/issues/919">#919</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="074cb6a997"><code>074cb6a</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/rust-random/rand/issues/929">#929</a> from dhardy/master</li>
<li><a href="0f4e152c1c"><code>0f4e152</code></a> Prepare rand 0.7.3 release</li>
<li><a href="5b0d874369"><code>5b0d874</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/rust-random/rand/issues/928">#928</a> from dhardy/libc</li>
<li><a href="ae4683cec7"><code>ae4683c</code></a> Remove use of deprecated ATOMIC_USIZE_INIT</li>
<li><a href="ae3a416ecc"><code>ae3a416</code></a> Fix <a href="https://github-redirect.dependabot.com/rust-random/rand/issues/911">#911</a>: use Once instead of AtomicBool</li>
<li><a href="a67173ef63"><code>a67173e</code></a> make libc dependency optional (fork protection requires std)</li>
<li><a href="e2dc2c3848"><code>e2dc2c3</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/rust-random/rand/issues/926">#926</a> from dhardy/fmt</li>
<li><a href="fab964d194"><code>fab964d</code></a> Manual function specification reformatting</li>
<li><a href="3a5d5a8e7a"><code>3a5d5a8</code></a> Use rustfmt::skip for some cases</li>
<li><a href="3a51c3e0e2"><code>3a51c3e</code></a> Manual array reformatting</li>
<li>Additional commits viewable in <a href="https://github.com/rust-random/rand/compare/0.7.2...0.7.3">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bump unicode-width from 0.1.8 to 0.1.9
Bumps [unicode-width](https://github.com/unicode-rs/unicode-width) from 0.1.8 to 0.1.9.
<details>
<summary>Commits</summary>
<ul>
<li><a href="c6a6c72ac6"><code>c6a6c72</code></a> Update to 0.1.9</li>
<li><a href="b58e85b527"><code>b58e85b</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/unicode-rs/unicode-width/issues/23">#23</a> from chrisduerr/unicode_14</li>
<li><a href="ce07223db9"><code>ce07223</code></a> Update to Unicode 14</li>
<li>See full diff in <a href="https://github.com/unicode-rs/unicode-width/compare/v0.1.8...v0.1.9">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bump half from 1.6.0 to 1.8.2
Bumps [half](https://github.com/starkat99/half-rs) from 1.6.0 to 1.8.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/starkat99/half-rs/releases">half's releases</a>.</em></p>
<blockquote>
<h2>1.8.2</h2>
<h3>Fixed</h3>
<ul>
<li>Remove cargo resolver=2 from manifest to resolve errors in older versions of Rust that still worked with 1.8.0. Going forward, MSRV increases will be major version increases. Fixes <a href="https://github-redirect.dependabot.com/starkat99/half-rs/issues/48">#48</a>.</li>
</ul>
<h2>1.8.1 [YANKED]</h2>
<h3><em><strong>Yanked</strong></em></h3>
<p><em>Not recommended due to introducing compilation error in Rust versions that worked with 1.8.0.</em></p>
<h3>Changed</h3>
<ul>
<li>Now uses cargo resolver version 2 to prevent dev-dependencies from enabling <code>std</code> feature on optional dependencies.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fixed compile failure when <code>std</code> feature is not enabled and <code>num-traits</code> is enabled under new resolver. Now properly uses <code>libm</code> num-traits feature.</li>
</ul>
<h2>1.8.0</h2>
<h3>Changed</h3>
<ul>
<li>Now always implements <code>Add</code>, <code>Div</code>, <code>Mul</code>, <code>Neg</code>, <code>Rem</code>, and <code>Sub</code> traits. Previously, these were only implemented under the <code>num-traits</code> feature. Keep in mind they still convert to <code>f32</code> and back in the implementation.</li>
<li>Minimum supported Rust version is now 1.51.</li>
<li>Made crate package <a href="https://reuse.software/">REUSE compliant</a>.</li>
<li>Docs now use intra-doc links instead of manual (and hard to maintain) links.</li>
<li>The following methods on both <code>f16</code> and <code>bf16</code> are now <code>const</code>:
<ul>
<li><code>to_le_bytes</code></li>
<li><code>to_be_bytes</code></li>
<li><code>to_ne_bytes</code></li>
<li><code>from_le_bytes</code></li>
<li><code>from_be_bytes</code></li>
<li><code>from_ne_bytes</code></li>
<li><code>is_normal</code></li>
<li><code>classify</code></li>
<li><code>signum</code></li>
</ul>
</li>
</ul>
<h3>Added</h3>
<ul>
<li>Added optional implementations of <code>zerocopy</code> traits <code>AsBytes</code> and <code>FromBytes</code> under <code>zerocopy</code> cargo feature. By <a href="https://github.com/samcrow"><code>@samcrow</code></a>.</li>
<li>Implemented the <code>core::iter::Product</code> and <code>core::iter::Sum</code> traits, with the same caveat as above about converting to <code>f32</code> and back under the hood.</li>
<li>Added new associated const <code>NEG_ONE</code> to both <code>f16</code> and <code>bf16</code>.</li>
<li>Added the following new methods on both <code>f16</code> and <code>bf16</code>:
<ul>
<li><code>copysign</code></li>
<li><code>max</code></li>
<li><code>min</code></li>
<li><code>clamp</code></li>
</ul>
</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fixed a number of minor lints discovered due to improved CI.</li>
</ul>
<h2>1.7.1</h2>
<h3>Fixed</h3>
<ul>
<li>Docs.rs now generates docs for <code>bytemuck</code> and <code>num-traits</code> optional features.</li>
</ul>
<h2>1.7.0</h2>
<h3>Added</h3>
<ul>
<li>Added optional implementations of <code>bytemuck</code> traits <code>Zeroable</code> and <code>Pod</code> under <code>bytemuck</code> cargo feature. By <a href="https://github.com/charles-r-earp"><code>@charles-r-earp</code></a>.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/starkat99/half-rs/blob/main/CHANGELOG.md">half's changelog</a>.</em></p>
<blockquote>
<h2>[1.8.2] - 2021-10-22 <!-- raw HTML omitted --><!-- raw HTML omitted --></h2>
<h3>Fixed</h3>
<ul>
<li>Remove cargo resolver=2 from manifest to resolve errors in older versions of Rust that still
worked with 1.8.0. Going forward, MSRV increases will be major version increases. Fixes <a href="https://github-redirect.dependabot.com/starkat99/half-rs/issues/48">#48</a>.</li>
</ul>
<h2>[1.8.1] - 2021-10-21 - <strong>Yanked</strong> <!-- raw HTML omitted --><!-- raw HTML omitted --></h2>
<h3><em><strong>Yanked</strong></em></h3>
<p><em>Not recommended due to introducing compilation error in Rust versions that worked with 1.8.0.</em></p>
<h3>Changed</h3>
<ul>
<li>Now uses cargo resolver version 2 to prevent dev-dependencies from enabling <code>std</code> feature on
optional dependencies.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fixed compile failure when <code>std</code> feature is not enabled and <code>num-traits</code> is enabled under new
resolver. Now properly uses <code>libm</code> num-traits feature.</li>
</ul>
<h2>[1.8.0] - 2021-10-13 <!-- raw HTML omitted --><!-- raw HTML omitted --></h2>
<h3>Changed</h3>
<ul>
<li>Now always implements <code>Add</code>, <code>Div</code>, <code>Mul</code>, <code>Neg</code>, <code>Rem</code>, and <code>Sub</code> traits.
Previously, these were only implemented under the <code>num-traits</code> feature. Keep in mind they still
convert to <code>f32</code> and back in the implementation.</li>
<li>Minimum supported Rust version is now 1.51.</li>
<li>Made crate package <a href="https://reuse.software/">REUSE compliant</a>.</li>
<li>Docs now use intra-doc links instead of manual (and hard to maintain) links.</li>
<li>The following methods on both <code>f16</code> and <code>bf16</code> are now <code>const</code>:
<ul>
<li><code>to_le_bytes</code></li>
<li><code>to_be_bytes</code></li>
<li><code>to_ne_bytes</code></li>
<li><code>from_le_bytes</code></li>
<li><code>from_be_bytes</code></li>
<li><code>from_ne_bytes</code></li>
<li><code>is_normal</code></li>
<li><code>classify</code></li>
<li><code>signum</code></li>
</ul>
</li>
</ul>
<h3>Added</h3>
<ul>
<li>Added optional implementations of <code>zerocopy</code> traits <code>AsBytes</code> and <code>FromBytes</code>
under <code>zerocopy</code> cargo feature. By [<a href="https://github.com/samcrow"><code>@samcrow</code></a>].</li>
<li>Implemented the <code>core::iter::Product</code> and <code>core::iter::Sum</code> traits, with the same caveat as above
about converting to <code>f32</code> and back under the hood.</li>
<li>Added new associated const <code>NEG_ONE</code> to both <code>f16</code> and <code>bf16</code>.</li>
<li>Added the following new methods on both <code>f16</code> and <code>bf16</code>:
<ul>
<li><code>copysign</code></li>
<li><code>max</code></li>
<li><code>min</code></li>
<li><code>clamp</code></li>
</ul>
</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fixed a number of minor lints discovered due to improved CI.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="9fbefd4517"><code>9fbefd4</code></a> remove resolver=2 from manifest</li>
<li><a href="28b07e0e52"><code>28b07e0</code></a> bump version to 1.8.1</li>
<li><a href="661708e911"><code>661708e</code></a> fix num-traits implementation bug when no_std</li>
<li><a href="727f5fb4a4"><code>727f5fb</code></a> fix changelog organization</li>
<li><a href="523e79154b"><code>523e791</code></a> bump version to 1.8.0</li>
<li><a href="31d445abbb"><code>31d445a</code></a> clarify math operations in readme</li>
<li><a href="17b590893f"><code>17b5908</code></a> impl Product and Sum traits</li>
<li><a href="1f21fade49"><code>1f21fad</code></a> impl ref versions of traits for ease of use</li>
<li><a href="109a8bc96a"><code>109a8bc</code></a> add copysign, min, max, and clamp fns</li>
<li><a href="78affaaab0"><code>78affaa</code></a> added const to more functions</li>
<li>Additional commits viewable in <a href="https://github.com/starkat99/half-rs/compare/v1.6.0...v1.8.2">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Non-blocking network IO
The current networking strategy uses a fixed sized thread pool to perform blocking requests on a per call basis. This is inefficient, but can be ~easily~ improved by utilizing the existing tokio runtime instead to submit async networking tasks to its executor. However, since servo is currently using an outdated version of the `hyper` http library (`0.12`) we must use the [`tokio_compat`](https://github.com/tokio-rs/tokio-compat) and [`futures_compat`](https://docs.rs/futures/0.3.1/futures/compat/index.html) libraries to integrate with the older version of [`Future` used in `hyper`](https://docs.rs/hyper/0.12.1/hyper/rt/trait.Future.html).
~**NOTE**: This PR is just proof of concept at the moment. In addition to test failures, it appears that large javascript downloads are silently failing to stream entire payloads, and occasionally getting cutoff.~
Tests are passing.
---
<!-- 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 [#22813](https://github.com/servo/servo/issues/22813) (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. -->