This Pull Request fixes/closes #718.
It changes the following:
- Adds a new `boa_runtime` crate, that will only include `console` for now
- Changes the `boa_cli` crate to use the new `boa_runtime` crate for the console, instead of the `console` feature of `boa_engine`
- Removes the `console` feature in `boa_engine`
- Adds a new `boa_testing` helper crate with some useful functions for testing `boa`. This part duplicates the code from `boa_engine`, but I could not make `boa_engine` work with this crate as a dependency due to circular dependencies. Maybe doing it a bit generic could work, but didn't have enough time to check it.
To be checked: wether the WASM example works as expected with the console.
We currently use `unicode_normalization` to handle the `String.prototype.normalize` method. However, the crate doesn't support UTF-16 as a first class string, so we had to do some hacks by converting the valid parts of a string to UTF-8, normalizing each one, encoding back to UTF-16 and concatenating everything with the unpaired surrogates within. All of this is obviously suboptimal for performance, which is why I leveraged the `icu_normalizer`, which does support UTF-16 input, to replace our current implementation.
Additionally, this allows users to override the default normalization data if the `intl` feature is enabled by providing the required data in the `BoaProvider` data provider.
The new ICU4X release stabilized the `icu_segmenter` component, so this PR implements `Intl.Segmenter` using that as a base.
Also, I opted for importing `itertools` instead of copy-pasting the implementation of `TupleWindows` because its design is a lot more complex than `Intersperse`, which we copy-pasted previously. Though, I disabled all `std` features of `itertools` to make it a lot more lightweight, so it shouldn't make much difference in compilation times.
This PR upgrades ICU to 1.2.
Unfortunately we still have some breaking changes, so this is being handled in https://github.com/unicode-org/icu4x/issues/3332
Co-authored-by: jedel1043 <jedel0124@gmail.com>
Bumps [num_enum](https://github.com/illicitonion/num_enum) from 0.6.0 to 0.6.1.
<details>
<summary>Commits</summary>
<ul>
<li><a href="66d22cc826"><code>66d22cc</code></a> Release 0.6.1 (<a href="https://redirect.github.com/illicitonion/num_enum/issues/118">#118</a>)</li>
<li><a href="190a93936d"><code>190a939</code></a> Have a test per type (<a href="https://redirect.github.com/illicitonion/num_enum/issues/117">#117</a>)</li>
<li><a href="f1ee727c65"><code>f1ee727</code></a> Fix is_naturally_exhaustive test for usize/isize. (<a href="https://redirect.github.com/illicitonion/num_enum/issues/116">#116</a>)</li>
<li>See full diff in <a href="https://github.com/illicitonion/num_enum/compare/0.6.0...0.6.1">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=num_enum&package-manager=cargo&previous-version=0.6.0&new-version=0.6.1)](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>
This fixes some more ES5 tests that were failing because the functions haven't been implemented.
It changes the following:
- Adds `String::to_locale_case`, which uses ICU4X to convert strings to uppercase or lowercase.
- Refactors `String::to_uppercase` and `String::to_lowercase` into a single `String::to_case` which uses a const generic to distinguish each case.
- Adds utility functions on `JsString` to avoid code repetition.
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.95 to 1.0.96.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/json/releases">serde_json's releases</a>.</em></p>
<blockquote>
<h2>v1.0.96</h2>
<ul>
<li>Guarantee that <code>to_writer</code> only writes valid UTF-8 strings (<a href="https://redirect.github.com/serde-rs/json/issues/1011">#1011</a>, thanks <a href="https://github.com/stepancheg"><code>@stepancheg</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="187f7dadc6"><code>187f7da</code></a> Release 1.0.96</li>
<li><a href="41199cce93"><code>41199cc</code></a> Merge pull request <a href="https://redirect.github.com/serde-rs/json/issues/1011">#1011</a> from stepancheg/utf-8</li>
<li><a href="cd5ed8204a"><code>cd5ed82</code></a> Document to_writer only writes valid UTF-8 strings</li>
<li><a href="ce53b862b9"><code>ce53b86</code></a> Fix needless_borrow clippy lint in test</li>
<li>See full diff in <a href="https://github.com/serde-rs/json/compare/v1.0.95...v1.0.96">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_json&package-manager=cargo&previous-version=1.0.95&new-version=1.0.96)](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>
Small steps towards ES5 conformance.
This PR changes the following:
- Implements HTML comments parsing (`<!--`, `-->`).
- Gates the functionality behind a new `annex-b` feature for `boa_parser`.
- Renames `strict_mode` to `strict` to be consistent with `Parser::set_strict`.
This Pull Request fixes/closes #2475.
It changes the following:
- Do not use the `wasmbind` feature by default in the `chrono` crate. This can be enabled selectively if needed.
- Updated the `boa_wasm` crate to use this new approach.
I'm interested on knowing if this fixes @lastmjs's issue, and on checking with the team if this is the best approach to solve it.
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.159 to 1.0.160.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/serde/releases">serde's releases</a>.</em></p>
<blockquote>
<h2>v1.0.160</h2>
<ul>
<li>Make derived serializer/deserializer internals <code>doc(hidden)</code> (<a href="https://redirect.github.com/serde-rs/serde/issues/2426">#2426</a>, thanks <a href="https://github.com/compiler-errors"><code>@compiler-errors</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="0c6a2bbf79"><code>0c6a2bb</code></a> Release 1.0.160</li>
<li><a href="a80d830f27"><code>a80d830</code></a> Merge pull request <a href="https://redirect.github.com/serde-rs/serde/issues/2426">#2426</a> from compiler-errors/dont-doc-private</li>
<li><a href="5f3fd9994e"><code>5f3fd99</code></a> Make serializer/deserializer internals doc(hidden)</li>
<li>See full diff in <a href="https://github.com/serde-rs/serde/compare/v1.0.159...v1.0.160">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde&package-manager=cargo&previous-version=1.0.159&new-version=1.0.160)](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>
Bumps [sys-locale](https://github.com/1Password/sys-locale) from 0.2.4 to 0.3.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/1Password/sys-locale/releases">sys-locale's releases</a>.</em></p>
<blockquote>
<h2>v0.3.0</h2>
<p>See <a href="https://github.com/1Password/sys-locale/blob/main/CHANGELOG.md#030---2023-04-04">the changelog</a> for details.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/1Password/sys-locale/blob/main/CHANGELOG.md">sys-locale's changelog</a>.</em></p>
<blockquote>
<h2>[0.3.0] - 2023-04-04</h2>
<h3>Changed</h3>
<ul>
<li>The crate now only uses <code>wasm-bindgen</code> when targeting WebAssembly on the web.
Use the new <code>js</code> feature to target the web.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>The crate now compiles for unsupported platforms.</li>
<li>Cleaned up typos and grammar in README.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="2fc3bb56e8"><code>2fc3bb5</code></a> Release 0.3.0</li>
<li><a href="36e9c9590a"><code>36e9c95</code></a> Clarify WASM platform support further (<a href="https://redirect.github.com/1Password/sys-locale/issues/20">#20</a>)</li>
<li><a href="67b2a5c7cc"><code>67b2a5c</code></a> Fix support for WebAssembly (<a href="https://redirect.github.com/1Password/sys-locale/issues/18">#18</a>)</li>
<li><a href="4cf74aa047"><code>4cf74aa</code></a> Improve README.md library description</li>
<li>See full diff in <a href="https://github.com/1Password/sys-locale/compare/v0.2.4...v0.3.0">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sys-locale&package-manager=cargo&previous-version=0.2.4&new-version=0.3.0)](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>
Bumps [num_enum](https://github.com/illicitonion/num_enum) from 0.5.11 to 0.6.0.
<details>
<summary>Commits</summary>
<ul>
<li><a href="d5662e436f"><code>d5662e4</code></a> Update to edition 2021</li>
<li><a href="b6fc9f00c6"><code>b6fc9f0</code></a> Specify MSRV</li>
<li><a href="df815d982f"><code>df815d9</code></a> Specify exact dep on derive crate</li>
<li><a href="425277bf57"><code>425277b</code></a> Reduce minimum syn version to 2 (<a href="https://redirect.github.com/illicitonion/num_enum/issues/114">#114</a>)</li>
<li><a href="9bc84b1c12"><code>9bc84b1</code></a> Update syn to v2 (<a href="https://redirect.github.com/illicitonion/num_enum/issues/113">#113</a>)</li>
<li><a href="e02abdcaca"><code>e02abdc</code></a> UnsafeFromPrimitive ignores default/alternatives (<a href="https://redirect.github.com/illicitonion/num_enum/issues/112">#112</a>)</li>
<li><a href="9b4642e5a7"><code>9b4642e</code></a> Make UnsafeFromPrimitive a trait (<a href="https://redirect.github.com/illicitonion/num_enum/issues/79">#79</a>)</li>
<li><a href="c90528c5b9"><code>c90528c</code></a> Bump to 0.6.0</li>
<li><a href="0e2d006daa"><code>0e2d006</code></a> TryFromPrimitive ignores default attributes</li>
<li>See full diff in <a href="https://github.com/illicitonion/num_enum/compare/0.5.11...0.6.0">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=num_enum&package-manager=cargo&previous-version=0.5.11&new-version=0.6.0)](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>
Most objects don't have indexed properties, and those who have, have dense properties, this PR uses `ThinVec` to reduce the size of dense properties.
It changes the following:
- Trim `16` bytes from `IndexedProperties`, this reduces all objects size
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.158 to 1.0.159.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/serde/releases">serde's releases</a>.</em></p>
<blockquote>
<h2>v1.0.159</h2>
<ul>
<li>Accept empty #[serde()] attribute (<a href="https://redirect.github.com/serde-rs/serde/issues/2422">#2422</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="d6de911855"><code>d6de911</code></a> Release 1.0.159</li>
<li><a href="04af32230e"><code>04af322</code></a> Merge pull request <a href="https://redirect.github.com/serde-rs/serde/issues/2422">#2422</a> from dtolnay/emptyattr</li>
<li><a href="4cb8d079f8"><code>4cb8d07</code></a> Accept empty #[serde()] attribute</li>
<li><a href="6ab55a1e52"><code>6ab55a1</code></a> Add regression test for issue 2415</li>
<li><a href="acfd19cb46"><code>acfd19c</code></a> Release serde_derive_internals 0.27.0</li>
<li>See full diff in <a href="https://github.com/serde-rs/serde/compare/v1.0.158...v1.0.159">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde&package-manager=cargo&previous-version=1.0.158&new-version=1.0.159)](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>
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.94 to 1.0.95.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/json/releases">serde_json's releases</a>.</em></p>
<blockquote>
<h2>v1.0.95</h2>
<ul>
<li>Preserve f32 precision when serializing f32 -> serde_json::Value -> JSON string in "arbitrary_precision" mode (<a href="https://redirect.github.com/serde-rs/json/issues/1004">#1004</a>, <a href="https://redirect.github.com/serde-rs/json/issues/1005">#1005</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="4ea38c4001"><code>4ea38c4</code></a> Release 1.0.95</li>
<li><a href="731886c08e"><code>731886c</code></a> Merge pull request <a href="https://redirect.github.com/serde-rs/json/issues/1005">#1005</a> from dtolnay/f32cast</li>
<li><a href="c9bff92c1f"><code>c9bff92</code></a> Fix PartialEq between Value and f32</li>
<li><a href="06f3443c6e"><code>06f3443</code></a> Eliminate f32-to-f64 casting in arbitrary_precision mode</li>
<li><a href="b0990a51db"><code>b0990a5</code></a> Add regression test for issue 1004</li>
<li><a href="02e583360d"><code>02e5833</code></a> Update fuzz crate gitignore to ignore coverage dir</li>
<li><a href="4b9699612f"><code>4b96996</code></a> No longer test so many old compiler versions</li>
<li>See full diff in <a href="https://github.com/serde-rs/json/compare/v1.0.94...v1.0.95">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_json&package-manager=cargo&previous-version=1.0.94&new-version=1.0.95)](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>
The fields like `[[PrivateElements]]` are hardly used but they occupy `24` bytes (on 64-bit arch.) the `ThinVec` type stores the `len` and `cap` right before the elements (like our `JsString` implementation) and only a pointer is kept (if not used it does not allocate!), was going to use this in #2723 , since it uses a `Vec` as a dense storage, but the PR is already too big.
It changes the following:
- Shrink object from `328` to `288` bytes (40 bytes reduction)
- Add the `thin_vec` lightweight crate (single file)
Bumps [indexmap](https://github.com/bluss/indexmap) from 1.9.2 to 1.9.3.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/bluss/indexmap/blob/master/RELEASES.md">indexmap's changelog</a>.</em></p>
<blockquote>
<ul>
<li>
<p>1.9.3</p>
<ul>
<li>Bump the <code>rustc-rayon</code> dependency, for compiler use only.</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="861fad73de"><code>861fad7</code></a> Merge pull request <a href="https://redirect.github.com/bluss/indexmap/issues/259">#259</a> from cuviper/indexmap-1-rustc-rayon-0.5</li>
<li><a href="3413435112"><code>3413435</code></a> Release 1.9.3</li>
<li><a href="6c6700066a"><code>6c67000</code></a> Update rustc-rayon to 0.5</li>
<li>See full diff in <a href="https://github.com/bluss/indexmap/compare/1.9.2...1.9.3">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=indexmap&package-manager=cargo&previous-version=1.9.2&new-version=1.9.3)](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>
This PR adds the `"trace"` feature flag that enables vm opcode tracing (off by default), most users aren't interested in tracing/debugging that's why I think it should be made out-in.
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.39 to 1.0.40.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/dtolnay/thiserror/releases">thiserror's releases</a>.</em></p>
<blockquote>
<h2>1.0.40</h2>
<ul>
<li>Update syn dependency to 2.x</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="3cec8c4879"><code>3cec8c4</code></a> Release 1.0.40</li>
<li><a href="2c65ceadfa"><code>2c65cea</code></a> Merge pull request <a href="https://redirect.github.com/dtolnay/thiserror/issues/227">#227</a> from dtolnay/syn</li>
<li><a href="fb8b81f20b"><code>fb8b81f</code></a> Update to syn 2</li>
<li><a href="0e45dde206"><code>0e45dde</code></a> Merge pull request <a href="https://redirect.github.com/dtolnay/thiserror/issues/226">#226</a> from dtolnay/tokenspan</li>
<li><a href="490dc0102b"><code>490dc01</code></a> Eliminate unneeded use of Spanned trait on single tokens</li>
<li>See full diff in <a href="https://github.com/dtolnay/thiserror/compare/1.0.39...1.0.40">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=thiserror&package-manager=cargo&previous-version=1.0.39&new-version=1.0.40)](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>
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.155 to 1.0.156.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/serde/releases">serde's releases</a>.</em></p>
<blockquote>
<h2>v1.0.156</h2>
<ul>
<li>Documentation improvements</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="54671259aa"><code>5467125</code></a> Release 1.0.156</li>
<li><a href="994f7c7924"><code>994f7c7</code></a> Format with rustfmt 1.5.2-nightly</li>
<li><a href="7a8e4977e2"><code>7a8e497</code></a> Merge pull request <a href="https://redirect.github.com/serde-rs/serde/issues/2401">#2401</a> from dtolnay/docderive</li>
<li><a href="fb7b6ea7ea"><code>fb7b6ea</code></a> Enable serde derive feature when built by docs.rs</li>
<li><a href="063dd5b93f"><code>063dd5b</code></a> Show derive macros in serde's rustdoc</li>
<li><a href="a38aa31ade"><code>a38aa31</code></a> Merge pull request <a href="https://redirect.github.com/serde-rs/serde/issues/2400">#2400</a> from Nilstrieb/explicit-reexport</li>
<li><a href="f42b2581da"><code>f42b258</code></a> Use explicit re-export of <code>serde_derive</code> to give rustc more info</li>
<li>See full diff in <a href="https://github.com/serde-rs/serde/compare/v1.0.155...v1.0.156">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde&package-manager=cargo&previous-version=1.0.155&new-version=1.0.156)](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>
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.154 to 1.0.155.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/serde/releases">serde's releases</a>.</em></p>
<blockquote>
<h2>v1.0.155</h2>
<ul>
<li>Support <code>Serialize</code> and <code>Deserialize</code> impls for <code>core::ffi::CStr</code> and <code>alloc::ffi::CString</code> without "std" feature (<a href="https://redirect.github.com/serde-rs/serde/issues/2374">#2374</a>, thanks <a href="https://github.com/safarir"><code>@safarir</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="2ba406726f"><code>2ba4067</code></a> Release 1.0.155</li>
<li><a href="7e9826e17b"><code>7e9826e</code></a> Add link to core CStr stabilization announcement</li>
<li><a href="f4dcc5c918"><code>f4dcc5c</code></a> Merge pull request <a href="https://redirect.github.com/serde-rs/serde/issues/2374">#2374</a> from safarir/master</li>
<li><a href="8b1887c440"><code>8b1887c</code></a> Remove unneeded attr_name argument when parsing borrow attr</li>
<li><a href="bbfb1d3504"><code>bbfb1d3</code></a> Merge pull request <a href="https://redirect.github.com/serde-rs/serde/issues/2399">#2399</a> from dtolnay/borrow</li>
<li><a href="e106feb5ec"><code>e106feb</code></a> Eagerly parse variant-level borrow attribute instead of deferring entire Meta</li>
<li><a href="696f6f56db"><code>696f6f5</code></a> Merge pull request <a href="https://redirect.github.com/serde-rs/serde/issues/2398">#2398</a> from dtolnay/borrow</li>
<li><a href="b7b636a23f"><code>b7b636a</code></a> Treat field-level borrow attr as duplicate of variant-level borrow attr</li>
<li><a href="183b91775e"><code>183b917</code></a> Fix some comments in parsing of from/try_from/into attributes</li>
<li><a href="0e70f59021"><code>0e70f59</code></a> Merge pull request <a href="https://redirect.github.com/serde-rs/serde/issues/2396">#2396</a> from dtolnay/msg</li>
<li>Additional commits viewable in <a href="https://github.com/serde-rs/serde/compare/v1.0.154...v1.0.155">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde&package-manager=cargo&previous-version=1.0.154&new-version=1.0.155)](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>
Bumps [regress](https://github.com/ridiculousfish/regress) from 0.4.1 to 0.5.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/ridiculousfish/regress/releases">regress's releases</a>.</em></p>
<blockquote>
<h2>v0.5.0</h2>
<p>Version 0.5.0 of regress, REGex in Rust with EmcaScript Syntax.</p>
<ul>
<li>Unicode property escape matching like <code>\p{Letter}</code> is implemented</li>
<li>Regex parsing may now use any u32 iterator, not simply strings</li>
<li>The Unicode flag "u" is now recognized. Unicode is no longer the default; however non-Unicode regular expression support still has some known differences from JavaScript.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="ee710e577f"><code>ee710e5</code></a> Remove language about unicode property escapes being unimplemented</li>
<li><a href="8349a8569e"><code>8349a85</code></a> Bump version to 0.5 in preparation for release</li>
<li><a href="60d4f7b595"><code>60d4f7b</code></a> Update the unicode tables for Unicode 15</li>
<li><a href="603833d432"><code>603833d</code></a> Add test for escaping unrecognised chars</li>
<li><a href="f06b2b3ce1"><code>f06b2b3</code></a> Allow all punctuations to be escaped</li>
<li><a href="7443e66ccc"><code>7443e66</code></a> Update hashbrown requirement from 0.12.0 to 0.13.2</li>
<li><a href="ac59d90fd0"><code>ac59d90</code></a> rustfmt classicalbacktrack.rs</li>
<li><a href="cceb877af2"><code>cceb877</code></a> [non-unicode] less strict QuantifierPrefix parsing</li>
<li><a href="0ca4b596ca"><code>0ca4b59</code></a> to2021, simplfy some code.</li>
<li><a href="d076e06315"><code>d076e06</code></a> parse unbalanced right brackets as a literal bracket, if not using unicode flag</li>
<li>Additional commits viewable in <a href="https://github.com/ridiculousfish/regress/compare/v0.4.1...v0.5.0">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=regress&package-manager=cargo&previous-version=0.4.1&new-version=0.5.0)](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>
Co-authored-by: raskad <32105367+raskad@users.noreply.github.com>
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.153 to 1.0.154.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/serde/releases">serde's releases</a>.</em></p>
<blockquote>
<h2>v1.0.154</h2>
<ul>
<li>Fix "undeclared lifetime" error in generated code when deriving Deserialize for an enum with both <code>flatten</code> and <code>'static</code> fields (<a href="https://github-redirect.dependabot.com/serde-rs/serde/issues/2383">#2383</a>, thanks <a href="https://github.com/Mingun"><code>@Mingun</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="6a5da85fcd"><code>6a5da85</code></a> Release 1.0.154</li>
<li><a href="0750eee4ff"><code>0750eee</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/serde-rs/serde/issues/2383">#2383</a> from Mingun/fix-flatten+static</li>
<li><a href="ef551a517c"><code>ef551a5</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/serde-rs/serde/issues/2389">#2389</a> from dtolnay/trimstart</li>
<li><a href="1c5ea24f76"><code>1c5ea24</code></a> Replace use of deprecated trim_left_matches with trim_start_matches</li>
<li><a href="88d73e5250"><code>88d73e5</code></a> Format PR 2387 with rustfmt</li>
<li><a href="1ff2a972c6"><code>1ff2a97</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/serde-rs/serde/issues/2388">#2388</a> from serde-rs/exhaustivepatterns</li>
<li><a href="bb72fe2726"><code>bb72fe2</code></a> Update the comment on simpler exhaustive matching in derive</li>
<li><a href="38c130a303"><code>38c130a</code></a> Do not generate <code>DeserializeSeed</code> impl when not needed</li>
<li><a href="c7393614ff"><code>c739361</code></a> Fix generation of non-existent lifetime 'de when enum contains a #[serde(flat...</li>
<li>See full diff in <a href="https://github.com/serde-rs/serde/compare/v1.0.153...v1.0.154">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde&package-manager=cargo&previous-version=1.0.153&new-version=1.0.154)](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>
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.152 to 1.0.153.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/serde/releases">serde's releases</a>.</em></p>
<blockquote>
<h2>v1.0.153</h2>
<ul>
<li>Support <code>serde(alias = "…")</code> attribute used inside of flattened struct (<a href="https://github-redirect.dependabot.com/serde-rs/serde/issues/2387">#2387</a>, thanks <a href="https://github.com/bebecue"><code>@bebecue</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="e50b14afee"><code>e50b14a</code></a> Release 1.0.153</li>
<li><a href="cbd1cbef07"><code>cbd1cbe</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/serde-rs/serde/issues/2387">#2387</a> from bebecue/fix-1504</li>
<li><a href="01da3f79c9"><code>01da3f7</code></a> Add tests for <a href="https://github-redirect.dependabot.com/serde-rs/serde/issues/2387">#2387</a></li>
<li><a href="f5e0fbcb14"><code>f5e0fbc</code></a> Make #[serde(alias)] works in #[serde(flatten)] context</li>
<li><a href="a13c6382b6"><code>a13c638</code></a> Ignore let_underscore_untyped pedantic clippy lint</li>
<li><a href="f85c4f2fa9"><code>f85c4f2</code></a> Delete unused toolchain_find dependency</li>
<li><a href="a9a9903107"><code>a9a9903</code></a> Ignore extra_unused_type_parameters clippy lint in test</li>
<li><a href="35e5cf3e15"><code>35e5cf3</code></a> Revert uninlined_format_args change in test</li>
<li><a href="07fc9f689e"><code>07fc9f6</code></a> Replace serialize_str+format -> collect_str+format_args</li>
<li><a href="14b0e18c57"><code>14b0e18</code></a> Delete deny(unaligned_references) from test</li>
<li>Additional commits viewable in <a href="https://github.com/serde-rs/serde/compare/v1.0.152...v1.0.153">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde&package-manager=cargo&previous-version=1.0.152&new-version=1.0.153)](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>
Bumps [sys-locale](https://github.com/1Password/sys-locale) from 0.2.3 to 0.2.4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/1Password/sys-locale/releases">sys-locale's releases</a>.</em></p>
<blockquote>
<h2>v0.2.4</h2>
<p>See <a href="https://github.com/1Password/sys-locale/blob/main/CHANGELOG.md#024---2023-03-07">the changelog</a> for details.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/1Password/sys-locale/blob/main/CHANGELOG.md">sys-locale's changelog</a>.</em></p>
<blockquote>
<h1>[0.2.4] - 2023-03-07</h1>
<h3>Changed</h3>
<ul>
<li>Removed dependency on the <code>winapi</code> crate in favor of <code>windows-sys</code>, following more of the wider ecosystem.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="b3dbd1ce70"><code>b3dbd1c</code></a> Release 0.2.4</li>
<li><a href="60111772c2"><code>6011177</code></a> Bump MSRV to 1.48</li>
<li><a href="598b9029d0"><code>598b902</code></a> Tidy new Clippy warnings</li>
<li><a href="7101db9ca6"><code>7101db9</code></a> Port to windows-sys</li>
<li>See full diff in <a href="https://github.com/1Password/sys-locale/compare/v0.2.3...v0.2.4">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sys-locale&package-manager=cargo&previous-version=0.2.3&new-version=0.2.4)](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>
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.93 to 1.0.94.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/json/releases">serde_json's releases</a>.</em></p>
<blockquote>
<h2>v1.0.94</h2>
<ul>
<li>Fix message duplication between serde_json::Error's <code>Display</code> and <code>source()</code> (<a href="https://github-redirect.dependabot.com/serde-rs/json/issues/991">#991</a>, <a href="https://github-redirect.dependabot.com/serde-rs/json/issues/992">#992</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="a15bd09686"><code>a15bd09</code></a> Release 1.0.94</li>
<li><a href="3e418b13be"><code>3e418b1</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/serde-rs/json/issues/992">#992</a> from dtolnay/errorsource</li>
<li><a href="7eeb169f9b"><code>7eeb169</code></a> Fix message duplication between error Display and source()</li>
<li><a href="d9447c30eb"><code>d9447c3</code></a> Ignore let_underscore_untyped pedantic clippy lint</li>
<li>See full diff in <a href="https://github.com/serde-rs/json/compare/v1.0.93...v1.0.94">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_json&package-manager=cargo&previous-version=1.0.93&new-version=1.0.94)](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>
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.38 to 1.0.39.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/dtolnay/thiserror/releases">thiserror's releases</a>.</em></p>
<blockquote>
<h2>1.0.39</h2>
<ul>
<li>Set html_root_url attribute</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="f729af95d1"><code>f729af9</code></a> Release 1.0.39</li>
<li><a href="391ec2bc1b"><code>391ec2b</code></a> Set html_root_url</li>
<li><a href="a2d1ed1ccf"><code>a2d1ed1</code></a> Enable type layout randomization in CI on nightly</li>
<li><a href="7aaa03d94a"><code>7aaa03d</code></a> Show enabling of nightly tests as a CI step</li>
<li><a href="0010b0fd96"><code>0010b0f</code></a> Support a manual trigger on CI workflow</li>
<li><a href="920ad73295"><code>920ad73</code></a> Ignore extra_unused_type_parameters clippy lint in test</li>
<li><a href="0d23ebc77a"><code>0d23ebc</code></a> Prevent actions duplication on noop merge commits</li>
<li><a href="c5ce7250fa"><code>c5ce725</code></a> Sync license text with rust-lang repos</li>
<li>See full diff in <a href="https://github.com/dtolnay/thiserror/compare/1.0.38...1.0.39">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=thiserror&package-manager=cargo&previous-version=1.0.38&new-version=1.0.39)](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>
Bumps [indoc](https://github.com/dtolnay/indoc) from 2.0.0 to 2.0.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/dtolnay/indoc/releases">indoc's releases</a>.</em></p>
<blockquote>
<h2>2.0.1</h2>
<ul>
<li>Set html_root_url attribute</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="be271b7b81"><code>be271b7</code></a> Release 2.0.1</li>
<li><a href="b2ce0125c3"><code>b2ce012</code></a> Set html_root_url</li>
<li><a href="c48e82b535"><code>c48e82b</code></a> Ignore let_underscore_untyped pedantic clippy lint</li>
<li><a href="2da1152cf9"><code>2da1152</code></a> Revert "Resolve let_underscore_untyped pedantic clippy lint in test"</li>
<li><a href="d8eeca9b12"><code>d8eeca9</code></a> Resolve let_underscore_untyped pedantic clippy lint in test</li>
<li><a href="bbdb3a94f5"><code>bbdb3a9</code></a> Raise minimum tested compiler to 1.59</li>
<li><a href="39d542cd2a"><code>39d542c</code></a> Enable type layout randomization in CI on nightly</li>
<li><a href="8b812b97ff"><code>8b812b9</code></a> Support a manual trigger on CI workflow</li>
<li><a href="0661472de3"><code>0661472</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/dtolnay/indoc/issues/60">#60</a> from dtolnay/issue50</li>
<li><a href="9bee3db85e"><code>9bee3db</code></a> Add ui test of current behavior of capture in nested macro</li>
<li>Additional commits viewable in <a href="https://github.com/dtolnay/indoc/compare/2.0.0...2.0.1">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=indoc&package-manager=cargo&previous-version=2.0.0&new-version=2.0.1)](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>
This PR migrates our entire test suite to our new testing API.
It changes the following:
- Migrates tests to new test API.
- Cleans up the API to be a bit more descriptive and maintainable.
- Prettifies our test failure display to show the failed scripts.
- Splits our massive `tests.rs` file into smaller sub-suites.
Example output of a failing test:
![image](https://user-images.githubusercontent.com/38230983/221502567-9e219371-b4ab-49d0-b42b-94a9b1a9c002.png)
<!---
Thank you for contributing to Boa! Please fill out the template below, and remove or add any
information as you feel necessary.
--->
This Pull Request fixes/closes https://github.com/boa-dev/boa/issues/1671
It changes the following:
- This PR tries to fix https://rustsec.org/advisories/RUSTSEC-2020-0071 in `boa_engine` crate by removing `time 0.1` from the dependency tree
`cargo tree -p boa_engine | grep time`
before:
```console
│ ├── iana-time-zone v0.1.53
│ └── time v0.1.45
│ │ └── toml_datetime v0.5.1
```
after:
```console
│ ├── iana-time-zone v0.1.53
│ │ └── toml_datetime v0.5.1
```
~~Builds off of #2529.~~ Merged.
This Pull Request allows passing any function returning `impl Future<Output = JsResult<JsValue>>` to the `NativeFunction` constructor, allowing native concurrency hooks into the engine.
It changes the following:
- Adds a `NativeFunction::from_async_fn` function.
- Adds a new `JobQueue::enqueue_future_job` method.
- Adds an example usage on `boa_examples`.
Bumps [once_cell](https://github.com/matklad/once_cell) from 1.17.0 to 1.17.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/matklad/once_cell/blob/master/CHANGELOG.md">once_cell's changelog</a>.</em></p>
<blockquote>
<h2>1.17.1</h2>
<ul>
<li>Make <code>OnceRef</code> implementation compliant with <a href="https://github-redirect.dependabot.com/rust-lang/rust/issues/95228">strict provenance</a>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="35148638c5"><code>3514863</code></a> Merge <a href="https://github-redirect.dependabot.com/matklad/once_cell/issues/222">#222</a></li>
<li><a href="f0ad5f083d"><code>f0ad5f0</code></a> Bump version to 1.17.1 and update the changelog.</li>
<li><a href="78ab172105"><code>78ab172</code></a> Merge <a href="https://github-redirect.dependabot.com/matklad/once_cell/issues/219">#219</a></li>
<li><a href="6e351e5204"><code>6e351e5</code></a> Use AtomicPtr for race::OnceRef to avoid ptr-int-ptr casts (keeping</li>
<li><a href="d706539c6f"><code>d706539</code></a> Merge <a href="https://github-redirect.dependabot.com/matklad/once_cell/issues/214">#214</a></li>
<li><a href="cc07949250"><code>cc07949</code></a> Explain safety of <code>unsync::OnceCell::get(&self)</code> in more detail</li>
<li><a href="af9d29c966"><code>af9d29c</code></a> drop useless arg</li>
<li>See full diff in <a href="https://github.com/matklad/once_cell/compare/v1.17.0...v1.17.1">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=once_cell&package-manager=cargo&previous-version=1.17.0&new-version=1.17.1)](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>
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.92 to 1.0.93.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/json/releases">serde_json's releases</a>.</em></p>
<blockquote>
<h2>v1.0.93</h2>
<ul>
<li>Support 128-bit integers in serde_json::to_value (<a href="https://github-redirect.dependabot.com/serde-rs/json/issues/982">#982</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="0ebeede28a"><code>0ebeede</code></a> Release 1.0.93</li>
<li><a href="4fd48503de"><code>4fd4850</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/serde-rs/json/issues/982">#982</a> from serde-rs/integer128tovalue</li>
<li><a href="e3d13cd61a"><code>e3d13cd</code></a> Support 128-bit integers in to_value</li>
<li><a href="f77ad4750f"><code>f77ad47</code></a> Add test of integer128 to_value</li>
<li>See full diff in <a href="https://github.com/serde-rs/json/compare/v1.0.92...v1.0.93">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_json&package-manager=cargo&previous-version=1.0.92&new-version=1.0.93)](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>
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.91 to 1.0.92.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/json/releases">serde_json's releases</a>.</em></p>
<blockquote>
<h2>v1.0.92</h2>
<ul>
<li>Documentation improvements</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="a9c984f13e"><code>a9c984f</code></a> Release 1.0.92</li>
<li><a href="c42b724c14"><code>c42b724</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/serde-rs/json/issues/980">#980</a> from serde-rs/docrepr</li>
<li><a href="eaa287cb3a"><code>eaa287c</code></a> Hide repr attribute from documentation</li>
<li><a href="7bc6c86310"><code>7bc6c86</code></a> RawValue -> repr(transparent)</li>
<li><a href="e41ee42d92"><code>e41ee42</code></a> Update indoc dev-dependency to version 2</li>
<li><a href="8cebe89500"><code>8cebe89</code></a> Speed up cargo fuzz CI job</li>
<li><a href="74f510e56d"><code>74f510e</code></a> Sync license text with rust-lang repos</li>
<li><a href="557f45c404"><code>557f45c</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/serde-rs/json/issues/964">#964</a> from dtolnay/docsrs</li>
<li><a href="9edf7fa9b3"><code>9edf7fa</code></a> Replace docs.serde.rs links with intra-rustdoc links</li>
<li><a href="9947ae606e"><code>9947ae6</code></a> Point documentation links to docs.rs instead of docs.serde.rs</li>
<li>See full diff in <a href="https://github.com/serde-rs/json/compare/v1.0.91...v1.0.92">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_json&package-manager=cargo&previous-version=1.0.91&new-version=1.0.92)](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>
Bumps [num_enum](https://github.com/illicitonion/num_enum) from 0.5.7 to 0.5.9.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/illicitonion/num_enum/commits/0.5.9">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=num_enum&package-manager=cargo&previous-version=0.5.7&new-version=0.5.9)](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>
<!---
Thank you for contributing to Boa! Please fill out the template below, and remove or add any
information as you feel necessary.
--->
This Pull Request enables support for `no_std` targets on some of our sub-crates. I intentionally left out `boa_ast` and `boa_cli` because they're the largest crates we have after `boa_engine`.
`boa_gc` is a monster on its own, because we'll need to design a `no_std` multithreaded GC.
Anyways, this changes the following:
- Adds support for `no_std` on `boa_unicode`.
- Adds support for `no_std` on `boa_profiler`.
- Adds support for `no_std` on `boa_interner`.
- Adds support for `no_std` on `boa_icu_provider`.
The section about `Symbol` on the [specification](https://tc39.es/ecma262/#sec-ecmascript-language-types-symbol-type) says:
> The Symbol type is the set of all non-String values that may be used as the key of an Object property ([6.1.7](https://tc39.es/ecma262/#sec-object-type)).
Each possible Symbol value is unique and immutable.
Our previous implementation of `JsSymbol` used `Rc` and a thread local `Cell<usize>`. However, this meant that two different symbols in two different threads could share the same hash, making symbols not unique.
Also, the [GlobalSymbolRegistry](https://tc39.es/ecma262/#table-globalsymbolregistry-record-fields) is meant to be shared by all realms, including realms that are not in the same thread as the main one; this forces us to replace our current thread local global symbol registry with a thread-safe one that uses `DashMap` for concurrent access. However, the global symbol registry uses `JsString`s as keys and values, which forces us to either use `Vec<u16>` instead (wasteful and needs to allocate to convert to `JsString` on each access) or make `JsString` thread-safe with an atomic counter. For this reason, I implemented the second option.
This PR changes the following:
- Makes `JsSymbol` thread-safe by using Arc instead of Rc, and making `SYMBOL_HASH_COUNT` an `AtomicU64`.
- ~~Makes `JsString` thread-safe by using `AtomicUsize` instead of `Cell<usize>` for its ref count.~~ EDIT: Talked with @jasonwilliams and we decided to use `Box<[u16]>` for the global registry instead, because this won't penalize common usage of `JsString`, which is used a LOT more than `JsSymbol`.
- Makes the `GLOBAL_SYMBOL_REGISTRY` truly global, using `DashMap` as our global map that is shared by all threads.
- Replaces some thread locals with thread-safe alternatives, such as static arrays and static indices.
- Various improvements to all related code for this.
This PR is a complete redesign of our current native functions and closures API.
I was a bit dissatisfied with our previous design (even though I created it 😆), because it had a lot of superfluous traits, a forced usage of `Gc<GcCell<T>>` and an overly restrictive `NativeObject` bound. This redesign, on the other hand, simplifies a lot our public API, with a simple `NativeCallable` struct that has several constructors for each type of required native function.
This new design doesn't require wrapping every capture type with `Gc<GcCell<T>>`, relaxes the trait requirement to `Trace + 'static` for captures, can be reused in both `JsObject` functions and (soonish) host defined functions, and is (in my opinion) a bit cleaner than the previous iteration. It also offers an `unsafe` API as an escape hatch for users that want to pass non-Copy closures which don't capture traceable types.
Would ask for bikeshedding about the names though, because I don't know if `NativeCallable` is the most precise name for this. Same about the constructor names; I added the `from` prefix to all of them because it's the "standard" practice, but seeing the API doesn't have any other method aside from `call`, it may be better to just remove the prefix altogether.
Let me know what you think :)