I'm creating this draft PR, since I wanted to have some early feedback, and because I though I would have time to finish it last week, but I got caught up with other stuff. Feel free to contribute :)
The main thing here is that I have divided `eval()`, `parse()` and similar functions so that they can decide if they are parsing scripts or modules. Let me know your thoughts.
Then, I was checking the import & export parsing, and I noticed we are using `TokenKind::Identifier` for `IdentifierName`, so I changed that name. An `Identifier` is an `IdentifierName` that isn't a `ReservedWord`. This means we should probably also adapt all `IdentifierReference`, `BindingIdentifier` and so on parsing. I already created an `Identifier` parser.
Something interesting there is that `await` is not a valid `Identifier` if the goal symbol is `Module`, as you can see in the [spec](https://tc39.es/ecma262/#prod-LabelIdentifier), but currently we don't have that information in the `InputElement` enumeration, we only have `Div`, `RegExp` and `TemplateTail`. How could we approach this?
Co-authored-by: jedel1043 <jedel0124@gmail.com>
Small (ish?) step towards having proper realm records
This PR changes the following:
- Moves `Intrinsics` to `Realm`.
- Cleans up the initialization logic of our intrinsics to not depend on `Context`, unblocking things like #2314.
- Adds hooks to initialize the global object and the global this per the corresponding [`InitializeHostDefinedRealm ( )`](https://tc39.es/ecma262/#sec-initializehostdefinedrealm) hook. Though, this is currently broken because the vm uses `GlobalPropertyMap` instead of the `JsObject` API to initialize global properties.
Slightly related to #2411 since we need an API to pass module files, but more useful for #1760, #1313 and other error reporting issues.
It changes the following:
- Introduces a new `Source` API to store the path of a provided file or `None` if the source is a plain string.
- Improves the display of `boa_tester` to show the path of the tests being run. This also enables hyperlinks to directly jump to the tested file from the VS terminal.
- Adjusts the repo to this change.
Hopefully, this will improve our error display in the future.
Bumps [clap](https://github.com/clap-rs/clap) from 4.1.1 to 4.1.4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/releases">clap's releases</a>.</em></p>
<blockquote>
<h2>v4.1.4</h2>
<h2>[4.1.4] - 2023-01-24</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> Respect <code>disable_colored_help</code> when using <code>arg_required_else_help</code></li>
</ul>
<h3>Performance</h3>
<ul>
<li>Speed up compiling <code>arg!</code> macro</li>
</ul>
<h2>v4.1.3</h2>
<h2>[4.1.3] - 2023-01-23</h2>
<h3>Fixes</h3>
<ul>
<li><em>(error)</em> Improve suggested flag/value/subcommand when two share a long preifx</li>
<li><em>(error)</em> When suggesting one of several subcommands, use the plural <code>subcommands</code>, rather than <code>subcommand</code></li>
</ul>
<h2>v4.1.2</h2>
<h2>[4.1.2] - 2023-01-23</h2>
<h3>Fixes</h3>
<ul>
<li>In documentation, refer to <code>get_flag</code>, rather than <code>get_one::<bool></code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's changelog</a>.</em></p>
<blockquote>
<h2>[4.1.4] - 2023-01-24</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> Respect <code>disable_colored_help</code> when using <code>arg_required_else_help</code></li>
</ul>
<h3>Performance</h3>
<ul>
<li>Speed up compiling <code>arg!</code> macro</li>
</ul>
<h2>[4.1.3] - 2023-01-23</h2>
<h3>Fixes</h3>
<ul>
<li><em>(error)</em> Improve suggested flag/value/subcommand when two share a long preifx</li>
<li><em>(error)</em> When suggesting one of several subcommands, use the plural <code>subcommands</code>, rather than <code>subcommand</code></li>
</ul>
<h2>[4.1.2] - 2023-01-23</h2>
<h3>Fixes</h3>
<ul>
<li>In documentation, refer to <code>get_flag</code>, rather than <code>get_one::<bool></code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="a59a53503e"><code>a59a535</code></a> chore: Release</li>
<li><a href="4348f43b21"><code>4348f43</code></a> docs: Update changelog</li>
<li><a href="7c4c6586d0"><code>7c4c658</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4673">#4673</a> from epage/arg</li>
<li><a href="bbe5eaa709"><code>bbe5eaa</code></a> perf: Speed up compiling <code>arg!</code> macro</li>
<li><a href="b3c4b4016c"><code>b3c4b40</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4672">#4672</a> from epage/help</li>
<li><a href="dc89379ff6"><code>dc89379</code></a> fix(help): Respect <code>disable_colored_help</code> for <code>arg_required_else_help</code></li>
<li><a href="10a87c662d"><code>10a87c6</code></a> chore: Release</li>
<li><a href="8ee9242a0e"><code>8ee9242</code></a> docs: Update changelog</li>
<li><a href="125dbe0cfd"><code>125dbe0</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4667">#4667</a> from corneliusroemer/fix-4666</li>
<li><a href="401d86fb9c"><code>401d86f</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4668">#4668</a> from corneliusroemer/fix-4660</li>
<li>Additional commits viewable in <a href="https://github.com/clap-rs/clap/compare/clap_complete-v4.1.1...v4.1.4">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.1.1&new-version=4.1.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 [rustyline](https://github.com/kkawakam/rustyline) from 10.1.0 to 10.1.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/kkawakam/rustyline/releases">rustyline's releases</a>.</em></p>
<blockquote>
<h2>10.1.1</h2>
<p>Rollbacks incompatible changes relative to edition 2018 (<a href="https://github-redirect.dependabot.com/kkawakam/rustyline/issues/671">#671</a>)
<strong>Full Changelog</strong>: <a href="https://github.com/kkawakam/rustyline/compare/v10.1.0...v10.1.1">https://github.com/kkawakam/rustyline/compare/v10.1.0...v10.1.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="950d4e9103"><code>950d4e9</code></a> Prepare 10.1.1 release</li>
<li><a href="0dde217d4a"><code>0dde217</code></a> Revert "Fix clippy warnings"</li>
<li><a href="0ce9b52d02"><code>0ce9b52</code></a> Revert "Clippy"</li>
<li><a href="402b5c571d"><code>402b5c5</code></a> Revert "Fix clippy warnings"</li>
<li><a href="e7174270d3"><code>e717427</code></a> Revert "Upgrade nix dependency"</li>
<li><a href="6cf72209b7"><code>6cf7220</code></a> Revert "Upgrade env_logger"</li>
<li>See full diff in <a href="https://github.com/kkawakam/rustyline/compare/v10.1.0...v10.1.1">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=rustyline&package-manager=cargo&previous-version=10.1.0&new-version=10.1.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>
Follows from #2528, and should complement #2411 to implement the module import hooks.
~~Similarly to the Intl/ICU4X PR (#2478), this has a lot of trivial changes caused by the new lifetimes. I thought about passing the queue and the hooks by value, but it was very painful having to wrap everything with `Rc` in order to be accessible by the host.
In contrast, `&dyn` can be easily provided by the host and has the advantage of not requiring additional allocations, with the downside of adding two more lifetimes to our `Context`, but I think it's worth.~~ I was able to unify all lifetimes into the shortest one of the three, making our API just like before!
Changes:
- Added a new `HostHooks` trait and a `&dyn HostHooks` field to `Context`. This allows hosts to implement the trait for their custom type, then pass it to the context.
- Added a new `JobQueue` trait and a `&dyn JobQueue` field to our `Context`, allowing custom event loops and other fun things.
- Added two simple implementations of `JobQueue`: `IdleJobQueue` which does nothing and `SimpleJobQueue` which runs all jobs until all successfully complete or until any of them throws an error.
- Modified `boa_cli` to run all jobs until the queue is empty, even if a job returns `Err`. This also prints all errors to the user.
Bumps [clap](https://github.com/clap-rs/clap) from 4.0.32 to 4.1.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/releases">clap's releases</a>.</em></p>
<blockquote>
<h2>v4.1.1</h2>
<h2>[4.1.1] - 2023-01-14</h2>
<h3>Fixes</h3>
<ul>
<li><em>(error)</em> Small softening attempt for "unexpected argument" error</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's changelog</a>.</em></p>
<blockquote>
<h2>[4.1.1] - 2023-01-14</h2>
<h3>Fixes</h3>
<ul>
<li><em>(error)</em> Small softening attempt for "unexpected argument" error</li>
</ul>
<h2>[4.1.0] - 2023-01-13</h2>
<h3>Compatibility</h3>
<p>MSRV changed to 1.64.0</p>
<p>For apps with custom <code>--help</code> and <code>--version</code> flags:</p>
<ul>
<li>Descriptions for <code>--help</code> and <code>--version</code> changed</li>
</ul>
<p>When apps have errors imitating clap's error style:</p>
<ul>
<li>Error message style was changed, including
<ul>
<li>Moving away from "did you mean" to tips</li>
<li>Leading letter is lower case</li>
<li>"For more" added some punctuation</li>
</ul>
</li>
</ul>
<h3>Features</h3>
<ul>
<li><code>ArgMatches::get_occurrences</code> support for argument values to be grouped by their occurrence</li>
</ul>
<h3>Fixes</h3>
<ul>
<li><em>(derive)</em> Allow <code>upgrade_from</code> when arguments / subcommands are explicitly marked as required</li>
<li><em>(help)</em> Try be more clearer and succinct with <code>--help</code> and <code>--version</code> (also helps with overflow)</li>
<li><em>(error)</em> Try to be more clearer and succinct with error messages</li>
<li><em>(error)</em> Officially adopt <a href="https://rustc-dev-guide.rust-lang.org/diagnostics.html#suggestion-style-guide">an error style guide</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="74a82d7085"><code>74a82d7</code></a> chore: Release</li>
<li><a href="06f392a0d2"><code>06f392a</code></a> docs: Update changelog</li>
<li><a href="4d913fa4d1"><code>4d913fa</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4639">#4639</a> from epage/error</li>
<li><a href="162a556dba"><code>162a556</code></a> fix(error): Try to soften unexpected argument/value errors</li>
<li><a href="34d856b449"><code>34d856b</code></a> chore: Release</li>
<li><a href="889ca7a537"><code>889ca7a</code></a> chore: Bump versions for 4.1</li>
<li><a href="2bafb9b75d"><code>2bafb9b</code></a> docs(contrib): Define a compatibility policy for help/error output</li>
<li><a href="a41ca2edb0"><code>a41ca2e</code></a> docs: Update changelog</li>
<li><a href="523adc20e7"><code>523adc2</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4635">#4635</a> from epage/stablize</li>
<li><a href="b4f111a978"><code>b4f111a</code></a> feat: Stablize <code>ArgMatches::get_occurrences</code></li>
<li>Additional commits viewable in <a href="https://github.com/clap-rs/clap/compare/v4.0.32...v4.1.1">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.0.32&new-version=4.1.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 [regex](https://github.com/rust-lang/regex) from 1.7.0 to 1.7.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/rust-lang/regex/blob/master/CHANGELOG.md">regex's changelog</a>.</em></p>
<blockquote>
<h1>1.7.1 (2023-01-09)</h1>
<p>This release was done principally to try and fix the doc.rs rendering for the
regex crate.</p>
<p>Performance improvements:</p>
<ul>
<li>[PERF <a href="https://github-redirect.dependabot.com/rust-lang/regex/issues/930">#930</a>](<a href="https://github-redirect.dependabot.com/rust-lang/regex/pull/930">rust-lang/regex#930</a>):
Optimize <code>replacen</code>. This also applies to <code>replace</code>, but not <code>replace_all</code>.</li>
</ul>
<p>Bug fixes:</p>
<ul>
<li>[BUG <a href="https://github-redirect.dependabot.com/rust-lang/regex/issues/945">#945</a>](<a href="https://github-redirect.dependabot.com/rust-lang/regex/issues/945">rust-lang/regex#945</a>):
Maybe fix rustdoc rendering by just bumping a new release?</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="a9b2e02352"><code>a9b2e02</code></a> 1.7.1</li>
<li><a href="98c1b63ffe"><code>98c1b63</code></a> changelog: 1.7.1</li>
<li><a href="9330ea50f5"><code>9330ea5</code></a> ci: harden configuration</li>
<li><a href="ac2d0e1b33"><code>ac2d0e1</code></a> impl: optimize replacen loop</li>
<li>See full diff in <a href="https://github.com/rust-lang/regex/compare/1.7.0...1.7.1">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=regex&package-manager=cargo&previous-version=1.7.0&new-version=1.7.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 Pull Request fixes/closes #1180. (I'll open a tracking issue for the progress)
It changes the following:
- Redesigns the internal API of Intl to (hopefully!) make it easier to implement a service.
- Implements the `Intl.Locale` service.
- Implements the `Intl.Collator` service.
- Implements the `Intl.ListFormat` service.
On the subject of the failing tests. Some of them are caused by missing locale data in the `icu_testdata` crate; we would need to regenerate that with the missing locales, or vendor a custom default data.
On the other hand, there are some tests that are bugs from the ICU4X crate. The repo https://github.com/jedel1043/icu4x-test262 currently tracks the found bugs when running test262. I'll sync with the ICU4X team to try to fix those.
cc @sffc
Bumps [clap](https://github.com/clap-rs/clap) from 4.0.30 to 4.0.32.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/releases">clap's releases</a>.</em></p>
<blockquote>
<h2>v4.0.32</h2>
<h2>[4.0.32] - 2022-12-22</h2>
<h3>Fixes</h3>
<ul>
<li><em>(parser)</em> When overriding <code>required(true)</code>, consider args that conflict with its group</li>
</ul>
<h2>v4.0.31</h2>
<h2>[4.0.31] - 2022-12-22</h2>
<h3>Performance</h3>
<ul>
<li>Speed up parsing when a lot of different flags are present (100 unique flags)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's changelog</a>.</em></p>
<blockquote>
<h2>[4.0.32] - 2022-12-22</h2>
<h3>Fixes</h3>
<ul>
<li><em>(parser)</em> When overriding <code>required(true)</code>, consider args that conflict with its group</li>
</ul>
<h2>[4.0.31] - 2022-12-22</h2>
<h3>Performance</h3>
<ul>
<li>Speed up parsing when a lot of different flags are present (100 unique flags)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="ec4ccf005d"><code>ec4ccf0</code></a> chore: Release</li>
<li><a href="13fdb839b7"><code>13fdb83</code></a> docs: Update changelog</li>
<li><a href="b877345769"><code>b877345</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4573">#4573</a> from epage/conflict</li>
<li><a href="85ecb3e895"><code>85ecb3e</code></a> fix(parser): Override required when parent group has conflict</li>
<li><a href="d145b8b166"><code>d145b8b</code></a> test(parser): Demonstrate required-overload bug</li>
<li><a href="0eccd556ac"><code>0eccd55</code></a> chore: Release</li>
<li><a href="1e37c25f5e"><code>1e37c25</code></a> docs: Update changelog</li>
<li><a href="dcd5fecab0"><code>dcd5fec</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4572">#4572</a> from epage/group</li>
<li><a href="dde22e74ca"><code>dde22e7</code></a> style: Update for latest clippy</li>
<li><a href="dd8435d8f3"><code>dd8435d</code></a> perf(parser): Reduce duplicate lookups</li>
<li>Additional commits viewable in <a href="https://github.com/clap-rs/clap/compare/v4.0.30...v4.0.32">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.0.30&new-version=4.0.32)](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 [clap](https://github.com/clap-rs/clap) from 4.0.29 to 4.0.30.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/releases">clap's releases</a>.</em></p>
<blockquote>
<h2>v4.0.30</h2>
<h2>[4.0.30] - 2022-12-21</h2>
<h3>Fixes</h3>
<ul>
<li><em>(error)</em> Improve error for <code>args_conflicts_with_subcommand</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's changelog</a>.</em></p>
<blockquote>
<h2>[4.0.30] - 2022-12-21</h2>
<h3>Fixes</h3>
<ul>
<li><em>(error)</em> Improve error for <code>args_conflicts_with_subcommand</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="d2d022248b"><code>d2d0222</code></a> chore: Release</li>
<li><a href="56a0bb624f"><code>56a0bb6</code></a> docs: Update changelog</li>
<li><a href="b941a3eaef"><code>b941a3e</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4567">#4567</a> from epage/error</li>
<li><a href="453ac0bfb9"><code>453ac0b</code></a> fix(parser): Be less confusing with args/subcommand conflicts</li>
<li><a href="2a374db639"><code>2a374db</code></a> test(parser): Show bad behavior</li>
<li><a href="f632424e65"><code>f632424</code></a> test(parser): Consolidate args_conflicts_with tests</li>
<li><a href="a72f962d35"><code>a72f962</code></a> docs(builder): Escape non-tags</li>
<li><a href="ac48e2d5e4"><code>ac48e2d</code></a> docs: Make less brittle for rust versions</li>
<li><a href="a3381a2c05"><code>a3381a2</code></a> docs(readme): Fix build status badge (<a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4559">#4559</a>)</li>
<li><a href="aa5420469e"><code>aa54204</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4555">#4555</a> from epage/reset</li>
<li>Additional commits viewable in <a href="https://github.com/clap-rs/clap/compare/v4.0.29...v4.0.30">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.0.29&new-version=4.0.30)](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>
Per the [Standard Library development guide](https://std-dev-guide.rust-lang.org/code-considerations/performance/inline.html):
> You can add `#[inline]`:
>
> - To public, small, non-generic functions.
>
> You shouldn't need `#[inline]`:
> - On methods that have any generics in scope.
> - On methods on traits that don't have a default implementation.
>
> `#[inline]` can always be introduced later, so if you're in doubt they can just be removed.
This PR follows this guideline to reduce the number of `#[inline]` annotations in our code, removing the annotation in:
- Non-public functions
- Generic functions
- Medium and big functions.
Hopefully this shouldn't impact our perf at all, but let's wait to see the benchmark results.
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.89 to 1.0.91.
<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.91</h2>
<ul>
<li>Opt out of <code>-Zrustdoc-scrape-examples</code> on docs.rs for now</li>
</ul>
<h2>v1.0.90</h2>
<ul>
<li>Documentation improvements</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="26f147fde7"><code>26f147f</code></a> Release 1.0.91</li>
<li><a href="d9cdb98f2e"><code>d9cdb98</code></a> Opt out -Zrustdoc-scrape-examples on docs.rs</li>
<li><a href="331511d73d"><code>331511d</code></a> Release 1.0.90</li>
<li><a href="87538296f7"><code>8753829</code></a> Replace ancient CI service provider in readme</li>
<li><a href="0a43394ef6"><code>0a43394</code></a> Update build status badge</li>
<li><a href="8794844eee"><code>8794844</code></a> Prevent build.rs rerunning unnecessarily on all source changes</li>
<li><a href="0b548714d8"><code>0b54871</code></a> Time out workflows after 45 minutes</li>
<li><a href="ecad462c8e"><code>ecad462</code></a> Fix renamed let_underscore_drop lint</li>
<li><a href="9295c96c8e"><code>9295c96</code></a> Resolve needless_borrowed_reference clippy lints</li>
<li>See full diff in <a href="https://github.com/serde-rs/json/compare/v1.0.89...v1.0.91">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.89&new-version=1.0.91)](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 [clap](https://github.com/clap-rs/clap) from 4.0.28 to 4.0.29.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/releases">clap's releases</a>.</em></p>
<blockquote>
<h2>v4.0.29</h2>
<h2>[4.0.29] - 2022-11-29</h2>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's changelog</a>.</em></p>
<blockquote>
<h2>[4.0.29] - 2022-11-29</h2>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="ad4726378b"><code>ad47263</code></a> chore: Release</li>
<li><a href="6e31743efa"><code>6e31743</code></a> docs: Fix docs.rs builds</li>
<li>See full diff in <a href="https://github.com/clap-rs/clap/compare/v4.0.28...v4.0.29">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.0.28&new-version=4.0.29)](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 [clap](https://github.com/clap-rs/clap) from 4.0.27 to 4.0.28.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/releases">clap's releases</a>.</em></p>
<blockquote>
<h2>v4.0.28</h2>
<h2>[4.0.28] - 2022-11-29</h2>
<h3>Fixes</h3>
<ul>
<li>Fix wasm support which was broken in 4.0.27</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's changelog</a>.</em></p>
<blockquote>
<h2>[4.0.28] - 2022-11-29</h2>
<h3>Fixes</h3>
<ul>
<li>Fix wasm support which was broken in 4.0.27</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="c3c9099e72"><code>c3c9099</code></a> chore: Release</li>
<li><a href="68127614ec"><code>6812761</code></a> docs: Update changelog</li>
<li><a href="2ad0eff495"><code>2ad0eff</code></a> fix: wasm32 targets with is-terminal (<a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4518">#4518</a>)</li>
<li><a href="bf39b8d280"><code>bf39b8d</code></a> docs(ref): Move flatten/subcommand to be under command attr</li>
<li>See full diff in <a href="https://github.com/clap-rs/clap/compare/v4.0.27...v4.0.28">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.0.27&new-version=4.0.28)](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 [clap](https://github.com/clap-rs/clap) from 4.0.26 to 4.0.27.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's changelog</a>.</em></p>
<blockquote>
<h2>[4.0.27] - 2022-11-24</h2>
<h3>Features</h3>
<ul>
<li>Have <code>Arg::value_parser</code> accept <code>Vec<impl Into<PossibleValue>></code></li>
<li>Implement <code>Display</code> and <code>FromStr</code> for <code>ColorChoice</code></li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Remove soundness issue by switching from <code>atty</code> to <code>is-terminal</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="3262016c26"><code>3262016</code></a> chore: Release</li>
<li><a href="757f95b2e9"><code>757f95b</code></a> docs: Update changelog</li>
<li><a href="20e02eb34e"><code>20e02eb</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4509">#4509</a> from epage/possible</li>
<li><a href="fb1d960fe2"><code>fb1d960</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4249">#4249</a> from jcgruenhage/replace-atty</li>
<li><a href="94aca92e44"><code>94aca92</code></a> feat: Create ValueParser from Vec<PossibleValue></li>
<li><a href="3bccfced1a"><code>3bccfce</code></a> docs: Clarify PossibleValue is likely not needed</li>
<li><a href="19981a2455"><code>19981a2</code></a> docs: Clarify ColorChoice impls ValueEnum</li>
<li><a href="8d92f3e7a8"><code>8d92f3e</code></a> feat: Add Display/FromStr to ColorChoice</li>
<li><a href="ed683ef248"><code>ed683ef</code></a> fix: Always expose ColorChoice</li>
<li><a href="789bfd6813"><code>789bfd6</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4508">#4508</a> from epage/style</li>
<li>Additional commits viewable in <a href="https://github.com/clap-rs/clap/compare/v4.0.26...v4.0.27">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.0.26&new-version=4.0.27)](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 is a WIP implementation of a vm instruction flowgraph generator
This aims to make the vm easier to debug and understand for both newcomers and experienced devs.
For example if we have the following code:
```js
let i = 0;
while (i < 10) {
if (i == 3) {
break;
}
i++;
}
```
It generates the following instructions (which is hard to read, especially jumps):
<details>
```
----------------------Compiled Output: '<main>'-----------------------
Location Count Opcode Operands
000000 0000 PushZero
000001 0001 DefInitLet 0000: 'i'
000006 0002 LoopStart
000007 0003 LoopContinue
000008 0004 GetName 0000: 'i'
000013 0005 PushInt8 10
000015 0006 LessThan
000016 0007 JumpIfFalse 78
000021 0008 PushDeclarativeEnvironment 0, 1
000030 0009 GetName 0000: 'i'
000035 0010 PushInt8 3
000037 0011 Eq
000038 0012 JumpIfFalse 58
000043 0013 PushDeclarativeEnvironment 0, 0
000052 0014 Jump 78
000057 0015 PopEnvironment
000058 0016 GetName 0000: 'i'
000063 0017 IncPost
000064 0018 RotateRight 2
000066 0019 SetName 0000: 'i'
000071 0020 Pop
000072 0021 PopEnvironment
000073 0022 Jump 7
000078 0023 LoopEnd
Literals:
<empty>
Bindings:
0000: i
Functions:
<empty>
```
</details>
And the flow graph is generated:
![flowgraph](https://user-images.githubusercontent.com/8566042/200589387-40b36ad7-d2f2-4918-a3e4-5a8fa5eee89b.png)
The beginning of the function is marked by the `start` node (in green) and end (in red). In branching the "yes" branch is marked in green and "no" in red.
~~This only generates in [graphviz format](https://en.wikipedia.org/wiki/DOT_(graph_description_language)) (a widely used format) but it would be nice to also generate to a format that `mermaid.js` can understand and that could be put in articles https://github.com/boa-dev/boa-dev.github.io/issues/26~~
TODO:
- [x] Generate graphviz format
- [x] Generate mermaid format
- [x] Programmatically generate colors push and pop env instructions
- [x] Display nested functions in sub-sub-graphs.
- [x] Put under a feature (`"flowgraph"`)
- [x] Handle try/catch, switch instructions
- [x] CLI option for configuring direction of flow (by default it is top down)
- [x] Handle `Throw` instruction (requires keeping track of try blocks)
- [x] Documentation
- [x] Prevent node name collisions (functions with the same name)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.88 to 1.0.89.
<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.89</h2>
<ul>
<li>Fix invalid JSON incorrectly accepted when a large number has no digits after decimal point (<a href="https://github-redirect.dependabot.com/serde-rs/json/issues/953">#953</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="d2f936855d"><code>d2f9368</code></a> Release 1.0.89</li>
<li><a href="0b898369f9"><code>0b89836</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/serde-rs/json/issues/956">#956</a> from dtolnay/decimal</li>
<li><a href="9d94e920ef"><code>9d94e92</code></a> Require at least one digit after decimal point</li>
<li><a href="c27b02334b"><code>c27b023</code></a> Add regression test for issue 953</li>
<li><a href="586fefb5a1"><code>586fefb</code></a> Resolve semicolon_if_nothing_returned pedantic clippy lint</li>
<li>See full diff in <a href="https://github.com/serde-rs/json/compare/v1.0.88...v1.0.89">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.88&new-version=1.0.89)](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 Pull Request restructures the lint deny/warn/allow lists in almost all crates. `boa_engine` will be done in a follow up PR as the changes there are pretty extensive.
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.87 to 1.0.88.
<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.88</h2>
<ul>
<li>Optimize serde_json::Map's implementation of <code>append</code> and <code>clone_from</code> (<a href="https://github-redirect.dependabot.com/serde-rs/json/issues/952">#952</a>, thanks <a href="https://github.com/Lucretiel"><code>@Lucretiel</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="9eb66da7e0"><code>9eb66da</code></a> Release 1.0.88</li>
<li><a href="057957ccf4"><code>057957c</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/serde-rs/json/issues/952">#952</a> from Lucretiel/map-traits</li>
<li><a href="3347248d82"><code>3347248</code></a> Add <code>clone_from</code> to <code>Map</code>; <code>Map::append</code> now uses <code>IndexMap::extend</code></li>
<li><a href="ca41bdd563"><code>ca41bdd</code></a> Update ui test suite to nightly-2022-11-16</li>
<li><a href="4f194c9141"><code>4f194c9</code></a> Resolve needless_borrow pedantic clippy lint in test</li>
<li>See full diff in <a href="https://github.com/serde-rs/json/compare/v1.0.87...v1.0.88">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.87&new-version=1.0.88)](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 [clap](https://github.com/clap-rs/clap) from 4.0.25 to 4.0.26.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/releases">clap's releases</a>.</em></p>
<blockquote>
<h2>v4.0.26</h2>
<h2>[4.0.26] - 2022-11-16</h2>
<h3>Fixes</h3>
<ul>
<li><em>(error)</em> Fix typos in <code>ContextKind::as_str</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's changelog</a>.</em></p>
<blockquote>
<h2>[4.0.26] - 2022-11-16</h2>
<h3>Fixes</h3>
<ul>
<li><em>(error)</em> Fix typos in <code>ContextKind::as_str</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="f8e9211e38"><code>f8e9211</code></a> chore: Release</li>
<li><a href="6524416e9e"><code>6524416</code></a> docs: Update changelog</li>
<li><a href="df1efb4c53"><code>df1efb4</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4486">#4486</a> from jpgrayson/master</li>
<li><a href="d9c9c7bdd8"><code>d9c9c7b</code></a> fix: ContextKind.as_str() spellings</li>
<li>See full diff in <a href="https://github.com/clap-rs/clap/compare/v4.0.25...v4.0.26">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.0.25&new-version=4.0.26)](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 [clap](https://github.com/clap-rs/clap) from 4.0.24 to 4.0.25.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/releases">clap's releases</a>.</em></p>
<blockquote>
<h2>v4.0.25</h2>
<h2>[4.0.25] - 2022-11-15</h2>
<h3>Features</h3>
<ul>
<li><em>(error)</em> Report available subcommands when required subcommand is missing</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's changelog</a>.</em></p>
<blockquote>
<h2>[4.0.25] - 2022-11-15</h2>
<h3>Features</h3>
<ul>
<li><em>(error)</em> Report available subcommands when required subcommand is missing</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="ba32ab87b2"><code>ba32ab8</code></a> chore: Release</li>
<li><a href="391cd0092d"><code>391cd00</code></a> docs: Update changelog</li>
<li><a href="8cefdf31cc"><code>8cefdf3</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4482">#4482</a> from epage/suggest</li>
<li><a href="6b62c82fe2"><code>6b62c82</code></a> feat(parser): Show available subcommands when one is missing</li>
<li><a href="d21ee513fd"><code>d21ee51</code></a> test(parser): Verify subcommand required message</li>
<li>See full diff in <a href="https://github.com/clap-rs/clap/compare/v4.0.24...v4.0.25">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.0.24&new-version=4.0.25)](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 [clap](https://github.com/clap-rs/clap) from 4.0.23 to 4.0.24.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/releases">clap's releases</a>.</em></p>
<blockquote>
<h2>v4.0.24</h2>
<h2>[4.0.24] - 2022-11-14</h2>
<h3>Fixes</h3>
<ul>
<li>Avoid panic when printing an argument that isn't built</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's changelog</a>.</em></p>
<blockquote>
<h2>[4.0.24] - 2022-11-14</h2>
<h3>Fixes</h3>
<ul>
<li>Avoid panic when printing an argument that isn't built</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="010976c2ff"><code>010976c</code></a> chore: Release</li>
<li><a href="0bafd2f52d"><code>0bafd2f</code></a> docs: Update changelog</li>
<li><a href="8171a5f6d0"><code>8171a5f</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4480">#4480</a> from epage/panic</li>
<li><a href="c939de8a25"><code>c939de8</code></a> fix: Don't panic on non-built arg rendering</li>
<li>See full diff in <a href="https://github.com/clap-rs/clap/compare/v4.0.23...v4.0.24">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.0.23&new-version=4.0.24)](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 [clap](https://github.com/clap-rs/clap) from 4.0.22 to 4.0.23.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/releases">clap's releases</a>.</em></p>
<blockquote>
<h2>v4.0.23</h2>
<h2>[4.0.23] - 2022-11-11</h2>
<h3>Fixes</h3>
<ul>
<li>Don't panic on reporting invalid-long errors when followed by invalid UTF8</li>
<li><em>(help)</em> Clarified argument to <code>help</code> subcommand</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's changelog</a>.</em></p>
<blockquote>
<h2>[4.0.23] - 2022-11-11</h2>
<h3>Fixes</h3>
<ul>
<li>Don't panic on reporting invalid-long errors when followed by invalid UTF8</li>
<li><em>(help)</em> Clarified argument to <code>help</code> subcommand</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="95144b7590"><code>95144b7</code></a> chore: Release</li>
<li><a href="20ecae1cb3"><code>20ecae1</code></a> docs: Update changelog</li>
<li><a href="e6a3529e24"><code>e6a3529</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4474">#4474</a> from epage/utf8</li>
<li><a href="e9cbed34cd"><code>e9cbed3</code></a> fix(parser): Don't panic on invalid UTF-8 values</li>
<li><a href="45d26e0013"><code>45d26e0</code></a> test(parser): Show UTF8 bug</li>
<li><a href="4d69e56f06"><code>4d69e56</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4471">#4471</a> from epage/assert</li>
<li><a href="ec03972023"><code>ec03972</code></a> test(assert): Verify empty positional assert exists</li>
<li><a href="0d27188d87"><code>0d27188</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4465">#4465</a> from epage/help</li>
<li><a href="9376a57d40"><code>9376a57</code></a> fix(help): Clarify that 'help' command accepts multiple</li>
<li>See full diff in <a href="https://github.com/clap-rs/clap/compare/v4.0.22...v4.0.23">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.0.22&new-version=4.0.23)](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 [clap](https://github.com/clap-rs/clap) from 4.0.18 to 4.0.22.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/releases">clap's releases</a>.</em></p>
<blockquote>
<h2>v4.0.22</h2>
<h2>[4.0.22] - 2022-11-07</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> Don't overflow into next-line-help early due to stale (pre-v4) padding calculations</li>
</ul>
<h2>v4.0.21</h2>
<h2>[4.0.21] - 2022-11-07</h2>
<h3>Features</h3>
<ul>
<li><em>(derive)</em> <code>long_about</code> and <code>long_help</code> attributes, without a value, force using doc comment (before it wouldn't be set if there wasn't anything different than the short help)</li>
</ul>
<h2>v4.0.20</h2>
<h2>[4.0.20] - 2022-11-07</h2>
<h3>Fixes</h3>
<ul>
<li><em>(derive)</em> Allow defaulted value parser for '()' fields</li>
</ul>
<h2>v4.0.19</h2>
<h2>[4.0.19] - 2022-11-04</h2>
<h3>Features</h3>
<ul>
<li><code>ColorChoice</code> now implements <code>ValueEnum</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's changelog</a>.</em></p>
<blockquote>
<h2>[4.0.22] - 2022-11-07</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> Don't overflow into next-line-help early due to stale (pre-v4) padding calculations</li>
</ul>
<h2>[4.0.21] - 2022-11-07</h2>
<h3>Features</h3>
<ul>
<li><em>(derive)</em> <code>long_about</code> and <code>long_help</code> attributes, without a value, force using doc comment (before it wouldn't be set if there wasn't anything different than the short help)</li>
</ul>
<h2>[4.0.20] - 2022-11-07</h2>
<h3>Fixes</h3>
<ul>
<li><em>(derive)</em> Allow defaulted value parser for '()' fields</li>
</ul>
<h2>[4.0.19] - 2022-11-04</h2>
<h3>Features</h3>
<ul>
<li><code>ColorChoice</code> now implements <code>ValueEnum</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="6cbe5c4323"><code>6cbe5c4</code></a> chore: Release</li>
<li><a href="d2739c95cf"><code>d2739c9</code></a> docs: Update changelog</li>
<li><a href="eaa6bfe826"><code>eaa6bfe</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4463">#4463</a> from epage/help</li>
<li><a href="dfe9e73880"><code>dfe9e73</code></a> fix(help): Update auto-next-line to use new padding</li>
<li><a href="539577dfb2"><code>539577d</code></a> refactor(help): Remove dead code</li>
<li><a href="bc457b179f"><code>bc457b1</code></a> chore: Release</li>
<li><a href="d5c3c13ec2"><code>d5c3c13</code></a> docs: Update changelog</li>
<li><a href="87edc19ef7"><code>87edc19</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4461">#4461</a> from epage/help</li>
<li><a href="c37ab6c205"><code>c37ab6c</code></a> fix(derive): Allow 'long_help' to force populating from doc comment</li>
<li><a href="8751152316"><code>8751152</code></a> test(derive): Verify long_help behavior</li>
<li>Additional commits viewable in <a href="https://github.com/clap-rs/clap/compare/v4.0.18...v4.0.22">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.0.18&new-version=4.0.22)](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 [regex](https://github.com/rust-lang/regex) from 1.6.0 to 1.7.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/rust-lang/regex/blob/master/CHANGELOG.md">regex's changelog</a>.</em></p>
<blockquote>
<h1>1.7.0 (2022-11-05)</h1>
<p>This release principally includes an upgrade to Unicode 15.</p>
<p>New features:</p>
<ul>
<li>[FEATURE <a href="https://github-redirect.dependabot.com/rust-lang/regex/issues/832">#832</a>](<a href="https://github-redirect.dependabot.com/rust-lang/regex/issues/916">rust-lang/regex#916</a>):
Upgrade to Unicode 15.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="f871a8eb1d"><code>f871a8e</code></a> 1.7.0</li>
<li><a href="ca7b99c647"><code>ca7b99c</code></a> changelog: 1.7.0</li>
<li><a href="ea3b132080"><code>ea3b132</code></a> regex-syntax-0.6.28</li>
<li><a href="9a1892737b"><code>9a18927</code></a> syntax: update to Unicode 15</li>
<li><a href="0d0023e412"><code>0d0023e</code></a> rure-0.2.2</li>
<li><a href="3bac5c8075"><code>3bac5c8</code></a> capi: add 'rlib' crate type</li>
<li><a href="159a63c85e"><code>159a63c</code></a> doc: add a note about the empty regex</li>
<li><a href="fc6f5ccc51"><code>fc6f5cc</code></a> readme: re-word usage to remove version number</li>
<li><a href="67824c7af2"><code>67824c7</code></a> ci: switch to dtolnay/rust-toolchain</li>
<li><a href="54660765af"><code>5466076</code></a> capi: fix 'unused return value' warnings</li>
<li>See full diff in <a href="https://github.com/rust-lang/regex/compare/1.6.0...1.7.0">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=regex&package-manager=cargo&previous-version=1.6.0&new-version=1.7.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>
This should hopefully improve our compilation times, both from a clean build and from an incremental compilation snapshot.
Next would be the parser, but it imports `Context`, so it'll require a bit more work.
The number of file changes is obviously big, but almost nothing was changed, I just moved everything to another crate and readjusted the imports of the `parser` module. (Though, I did have to change some details, because there were some functions on the ast that returned `ParseError`s, and the tests had to be moved to the parser)
Bumps [clap](https://github.com/clap-rs/clap) from 4.0.17 to 4.0.18.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/releases">clap's releases</a>.</em></p>
<blockquote>
<h2>v4.0.18</h2>
<h2>[4.0.18] - 2022-10-20</h2>
<h3>Fixes</h3>
<ul>
<li><em>(derive)</em> Allow <code>#[command(skip)]</code> to also work with enum variants with a value</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's changelog</a>.</em></p>
<blockquote>
<h2>[4.0.18] - 2022-10-20</h2>
<h3>Fixes</h3>
<ul>
<li><em>(derive)</em> Allow <code>#[command(skip)]</code> to also work with enum variants with a value</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="7e2a1b5d94"><code>7e2a1b5</code></a> chore: Release</li>
<li><a href="3a0f9fe4a2"><code>3a0f9fe</code></a> docs: Update changelog</li>
<li><a href="422298ceb3"><code>422298c</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4412">#4412</a> from epage/skip</li>
<li><a href="91daec67ca"><code>91daec6</code></a> fix(derive): Allow skipping enum variants with a value</li>
<li><a href="996636d56f"><code>996636d</code></a> chore: Release</li>
<li><a href="3e23cd102f"><code>3e23cd1</code></a> fix: Require release versions of clap</li>
<li>See full diff in <a href="https://github.com/clap-rs/clap/compare/v4.0.17...v4.0.18">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.0.17&new-version=4.0.18)](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.86 to 1.0.87.
<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.87</h2>
<ul>
<li>Add <code>write_i128</code> and <code>write_u128</code> methods to <code>serde_json::Formatter</code> to control the formatting of 128-bit integers (<a href="https://github-redirect.dependabot.com/serde-rs/json/issues/940">#940</a>, thanks <a href="https://github.com/Lucretiel"><code>@Lucretiel</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="993e7a6eea"><code>993e7a6</code></a> Release 1.0.87</li>
<li><a href="31070349af"><code>3107034</code></a> Eliminate needless 'tri!' from Serializer impl</li>
<li><a href="46c9778ce1"><code>46c9778</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/serde-rs/json/issues/942">#942</a> from serde-rs/integer128</li>
<li><a href="37e76e0f85"><code>37e76e0</code></a> Assume serde_if_integer128 is true</li>
<li><a href="ec0456ad7b"><code>ec0456a</code></a> Use existing macros to implement 128-bit From impls</li>
<li><a href="c183125e04"><code>c183125</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/serde-rs/json/issues/941">#941</a> from serde-rs/alloc</li>
<li><a href="ab0f884fb6"><code>ab0f884</code></a> Delete 1.36+ caveat from descriptions of alloc feature</li>
<li><a href="486598bbef"><code>486598b</code></a> Merge pull request 940 from Lucretiel/int128</li>
<li><a href="84d6d95e01"><code>84d6d95</code></a> Add direct support for i128 and u128 via itoa</li>
<li>See full diff in <a href="https://github.com/serde-rs/json/compare/v1.0.86...v1.0.87">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.86&new-version=1.0.87)](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 is an experiment that tries to migrate the codebase from eager `Error` objects to lazy ones.
In short words, this redefines `JsResult = Result<JsValue, JsError>`, where `JsError` is a brand new type that stores only the essential part of an error type, and only transforms those errors to `JsObject`s on demand (when having to pass them as arguments to functions or store them inside async/generators).
This change is pretty big, because it unblocks a LOT of code from having to take a `&mut Context` on each call. It also paves the road for possibly making `JsError` a proper variant of `JsValue`, which can be a pretty big optimization for try/catch.
A downside of this is that it exposes some brand new error types to our public API. However, we can now implement `Error` on `JsError`, making our `JsResult` type a bit more inline with Rust's best practices.
~Will mark this as draft, since it's missing some documentation and a lot of examples, but~ it's pretty much feature complete. As always, any comments about the design are very much appreciated!
Note: Since there are a lot of changes which are essentially just rewriting `context.throw` to `JsNativeError::%type%`, I'll leave an "index" of the most important changes here:
- [boa_engine/src/error.rs](https://github.com/boa-dev/boa/pull/2283/files#diff-f15f2715655440626eefda5c46193d29856f4949ad37380c129a8debc6b82f26)
- [boa_engine/src/builtins/error/mod.rs](https://github.com/boa-dev/boa/pull/2283/files#diff-3eb1e4b4b5c7210eb98192a5277f5a239148423c6b970c4ae05d1b267f8f1084)
- [boa_tester/src/exec/mod.rs](https://github.com/boa-dev/boa/pull/2283/files#diff-fc3d7ad7b5e64574258c9febbe56171f3309b74e0c8da35238a76002f3ee34d9)
Bumps [clap](https://github.com/clap-rs/clap) from 4.0.16 to 4.0.17.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/releases">clap's releases</a>.</em></p>
<blockquote>
<h2>v4.0.17</h2>
<h2>[4.0.17] - 2022-10-18</h2>
<h3>Fixes</h3>
<ul>
<li>Allow using <code>Arg::last(true)</code> with <code>Arg::value_hint(ValueHint::CommandWithArguments)</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's changelog</a>.</em></p>
<blockquote>
<h2>[4.0.17] - 2022-10-18</h2>
<h3>Fixes</h3>
<ul>
<li>Allow using <code>Arg::last(true)</code> with <code>Arg::value_hint(ValueHint::CommandWithArguments)</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="b9dfbbf7e4"><code>b9dfbbf</code></a> chore: Release</li>
<li><a href="a6c8f6a5bd"><code>a6c8f6a</code></a> docs: Update changelog</li>
<li><a href="e11afa284b"><code>e11afa2</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4401">#4401</a> from epage/last</li>
<li><a href="1ead5ef421"><code>1ead5ef</code></a> fix(complete): Support last(true) with CommandWithArguments</li>
<li><a href="e50a11a404"><code>e50a11a</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4399">#4399</a> from j-browne/link-fix</li>
<li><a href="a1d4476f24"><code>a1d4476</code></a> Fix a broken link in ValueEnum docs</li>
<li>See full diff in <a href="https://github.com/clap-rs/clap/compare/v4.0.16...v4.0.17">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.0.16&new-version=4.0.17)](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 [clap](https://github.com/clap-rs/clap) from 4.0.12 to 4.0.16.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/releases">clap's releases</a>.</em></p>
<blockquote>
<h2>v4.0.16</h2>
<h2>[4.0.16] - 2022-10-18</h2>
<h3>Fixes</h3>
<ul>
<li><code>Arg::exclusive(true)</code> should not be exclusive with the argument's own <code>ArgGroup</code></li>
</ul>
<h2>v4.0.15</h2>
<h2>[4.0.15] - 2022-10-13</h2>
<h3>Fixes</h3>
<ul>
<li><em>(error)</em> Don't suggest <code>--</code> when it doesn't help</li>
<li><em>(error)</em> Be more consistent in quoting, punctuation, and indentation in errors</li>
</ul>
<h2>v4.0.14</h2>
<h2>[4.0.14] - 2022-10-12</h2>
<h3>Fixes</h3>
<ul>
<li>Only put <code>ArgGroup</code> in <code>ArgMatches</code> when explicitly specified, fixing derives handling of option-flattened fields (<a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4375">#4375</a>)</li>
</ul>
<h2>v4.0.13</h2>
<h2>[4.0.13] - 2022-10-11</h2>
<h3>Features</h3>
<ul>
<li><em>(derive)</em> Allow <code>()</code> for fields to mean "don't read" (<a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4371">#4371</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's changelog</a>.</em></p>
<blockquote>
<h2>[4.0.16] - 2022-10-18</h2>
<h3>Fixes</h3>
<ul>
<li><code>Arg::exclusive(true)</code> should not be exclusive with the argument's own <code>ArgGroup</code></li>
</ul>
<h2>[4.0.15] - 2022-10-13</h2>
<h3>Fixes</h3>
<ul>
<li><em>(error)</em> Don't suggest <code>--</code> when it doesn't help</li>
<li><em>(error)</em> Be more consistent in quoting, punctuation, and indentation in errors</li>
</ul>
<h2>[4.0.14] - 2022-10-12</h2>
<h3>Fixes</h3>
<ul>
<li>Only put <code>ArgGroup</code> in <code>ArgMatches</code> when explicitly specified, fixing derives handling of option-flattened fields (<a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4375">#4375</a>)</li>
</ul>
<h2>[4.0.13] - 2022-10-11</h2>
<h3>Features</h3>
<ul>
<li><em>(derive)</em> Allow <code>()</code> for fields to mean "don't read" (<a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4371">#4371</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="cbb05d54f8"><code>cbb05d5</code></a> chore: Release</li>
<li><a href="b77bd0cc6a"><code>b77bd0c</code></a> docs: Update changelog</li>
<li><a href="466b6f837e"><code>466b6f8</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4397">#4397</a> from epage/exclusive</li>
<li><a href="45dcf0ed22"><code>45dcf0e</code></a> fix(parser): Don't make Args <code>exclusive</code> with their ArgGroup</li>
<li><a href="a40c7b491e"><code>a40c7b4</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4390">#4390</a> from sergejp/master</li>
<li><a href="3250bcec4c"><code>3250bce</code></a> docs: Provide a better example for positional arg append under derive</li>
<li><a href="e6436a0967"><code>e6436a0</code></a> docs: Provide a better example for positional arg append</li>
<li><a href="bd5a6eab3b"><code>bd5a6ea</code></a> chore: Release</li>
<li><a href="7eaeed3abd"><code>7eaeed3</code></a> docs: Update changelog</li>
<li><a href="0f6ef3003d"><code>0f6ef30</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4384">#4384</a> from epage/consistent</li>
<li>Additional commits viewable in <a href="https://github.com/clap-rs/clap/compare/v4.0.12...v4.0.16">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.0.12&new-version=4.0.16)](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 Pull Request fixes#1371. And yeah, the number of file changes is real...
It changes the following:
- Split the ast `Node` into `Statement` and `Expression`.
- Rewrite the parser and bytecompiler to conform to this change.
- Refactor some ast nodes into reusable structures.
- Rewrite `contains_arguments` and `contains` to ease the transition into a future ast visitor.
List of things that were apparently fixed by this refactor?:
- Implement read-assign operation for private accessors (e.g. `this.#field ||= 5`).
- `var await` declaration now allowed outside `async` functions and inside functions nested in async functions.
- Reject redeclarations of variables declared in the init list of a for loop.
Still missing some documentation adjustments, will try to do it ASAP.
This Pull Request fixes/closes #2330.
It changes the following:
- Upgrades from clap 3 to clap 4 (note that criterion still uses clap 3, tracked here: https://github.com/bheisler/criterion.rs/issues/596)
- Updates the derive syntax with the new 4.0 syntax
- Adds hints for fish & zsh
Co-authored-by: José Julián Espina <jedel0124@gmail.com>
This Pull Request switches our codebase to the brand new [workspace inherited keys](https://doc.rust-lang.org/cargo/reference/workspaces.html#the-package-table), which allows us to define common package options that are usable within each crate's Cargo.toml file.
It also allows to share dependency versions between crates, but I defined only shared versions for our workspace members. It would be a good follow-up to lift all the shared dependencies between crates into the global Cargo.toml.
Bumps [clap](https://github.com/clap-rs/clap) from 3.2.21 to 3.2.22.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/releases">clap's releases</a>.</em></p>
<blockquote>
<h2>v3.2.22</h2>
<h2>[3.2.22] - 2022-09-16</h2>
<h3>Fixes</h3>
<ul>
<li>Unify dependencies on <code>terminal_size</code> to the 0.2 release</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/blob/v3.2.22/CHANGELOG.md">clap's changelog</a>.</em></p>
<blockquote>
<h2>[3.2.22] - 2022-09-16</h2>
<h3>Fixes</h3>
<ul>
<li>Unify dependencies on <code>terminal_size</code> to the 0.2 release</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="9e3fa67e04"><code>9e3fa67</code></a> chore: Release</li>
<li><a href="d188de0535"><code>d188de0</code></a> docs: Update changelog</li>
<li><a href="48b2373569"><code>48b2373</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4221">#4221</a> from niyaznigmatullin/bump_terminal_size</li>
<li><a href="2fd55076e6"><code>2fd5507</code></a> chore(deps): Bump terminal_size and textwrap</li>
<li>See full diff in <a href="https://github.com/clap-rs/clap/compare/v3.2.21...v3.2.22">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=3.2.21&new-version=3.2.22)](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 [clap](https://github.com/clap-rs/clap) from 3.2.20 to 3.2.21.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/releases">clap's releases</a>.</em></p>
<blockquote>
<h2>v3.2.21</h2>
<h2>[3.2.21] - 2022-09-12</h2>
<h3>Features</h3>
<ul>
<li><code>TypedValueParser::map</code> to allow reusing existing value parsers for other purposes</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/blob/v3.2.21/CHANGELOG.md">clap's changelog</a>.</em></p>
<blockquote>
<h2>[3.2.21] - 2022-09-12</h2>
<h3>Features</h3>
<ul>
<li><code>TypedValueParser::map</code> to allow reusing existing value parsers for other purposes</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="7de2f36e6b"><code>7de2f36</code></a> chore: Release</li>
<li><a href="af47562311"><code>af47562</code></a> docs: Roll back deprecation message</li>
<li><a href="1f053b9c9b"><code>1f053b9</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4205">#4205</a> from epage/deprecations</li>
<li><a href="d1ff0632ad"><code>d1ff063</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4204">#4204</a> from epage/map</li>
<li><a href="7272aa0950"><code>7272aa0</code></a> docs: Expand on deprecation instructions</li>
<li><a href="960c152b53"><code>960c152</code></a> feat(parser): TypedValueParseer::map for adapting value parsers</li>
<li><a href="c361d01ad5"><code>c361d01</code></a> docs: Remove v4 from changelog</li>
<li>See full diff in <a href="https://github.com/clap-rs/clap/compare/v3.2.20...v3.2.21">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=3.2.20&new-version=3.2.21)](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 [clap](https://github.com/clap-rs/clap) from 3.2.19 to 3.2.20.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/releases">clap's releases</a>.</em></p>
<blockquote>
<h2>v3.2.20</h2>
<h2>[3.2.20] - 2022-09-02</h2>
<h3>Features</h3>
<ul>
<li><code>ArgMatches::get_count</code> help for <code>ArgAction::Count</code></li>
<li><code>ArgMatches::get_flag</code> help for <code>ArgAction::SetTrue</code> / <code>ArgAction::SetFalse</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/blob/v3.2.20/CHANGELOG.md">clap's changelog</a>.</em></p>
<blockquote>
<h2>[3.2.20] - 2022-09-02</h2>
<h3>Features</h3>
<ul>
<li><code>ArgMatches::get_count</code> help for <code>ArgAction::Count</code></li>
<li><code>ArgMatches::get_flag</code> help for <code>ArgAction::SetTrue</code> / <code>ArgAction::SetFalse</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="ddcd13b71b"><code>ddcd13b</code></a> chore: Release</li>
<li><a href="9d35abc22b"><code>9d35abc</code></a> docs: Update changelog</li>
<li><a href="39aba08f88"><code>39aba08</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4171">#4171</a> from epage/helper2</li>
<li><a href="2d5fea50b9"><code>2d5fea5</code></a> feat(parser): Provide convenience for SetTrue</li>
<li><a href="d2a1f5a8f8"><code>d2a1f5a</code></a> feat(parser): Provide convenience accessor for Counts</li>
<li><a href="3c91438162"><code>3c91438</code></a> chore: Release</li>
<li><a href="75f17b6215"><code>75f17b6</code></a> docs: Update changelog</li>
<li><a href="19c922260f"><code>19c9222</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4146">#4146</a> from Calder-Ty/bugfix/3861_backport</li>
<li><a href="f7af7659b8"><code>f7af765</code></a> fix: Add possible vals to man for positional args</li>
<li><a href="9b4c276c01"><code>9b4c276</code></a> fix: Use roff bullet lists for possible_values</li>
<li>Additional commits viewable in <a href="https://github.com/clap-rs/clap/compare/v3.2.19...v3.2.20">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=3.2.19&new-version=3.2.20)](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 [clap](https://github.com/clap-rs/clap) from 3.2.17 to 3.2.19.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/releases">clap's releases</a>.</em></p>
<blockquote>
<h2>v3.2.19</h2>
<h2>[3.2.19] - 2022-08-30</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> Ensure required arguments for parent commands aren't shown in their subcommands when using <code>args_conflicts_with_subcommand</code></li>
</ul>
<h2>v3.2.18</h2>
<h2>[3.2.18] - 2022-08-29</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> <code>Command::print_help</code> now respects <code>Command::colored_help</code></li>
<li><em>(derive)</em> Improved error messages</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/blob/v3.2.19/CHANGELOG.md">clap's changelog</a>.</em></p>
<blockquote>
<h2>[3.2.19] - 2022-08-30</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> Ensure required arguments for parent commands aren't shown in their subcommands when using <code>args_conflicts_with_subcommand</code></li>
</ul>
<h2>[3.2.18] - 2022-08-29</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> <code>Command::print_help</code> now respects <code>Command::colored_help</code></li>
<li><em>(derive)</em> Improved error messages</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="cf7f1fa583"><code>cf7f1fa</code></a> chore: Release</li>
<li><a href="754a949ee8"><code>754a949</code></a> docs: Update changelog</li>
<li><a href="4371a7b6cd"><code>4371a7b</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4150">#4150</a> from epage/parent-usage</li>
<li><a href="ac5cd3795c"><code>ac5cd37</code></a> fix(usage): Don't include irrelevant parent args</li>
<li><a href="19bc3b75f6"><code>19bc3b7</code></a> chore: Release</li>
<li><a href="11f8ef8d10"><code>11f8ef8</code></a> docs: Update changelog</li>
<li><a href="6987ae9145"><code>6987ae9</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4139">#4139</a> from epage/help</li>
<li><a href="a7d7602582"><code>a7d7602</code></a> fix(help): Command::print_help should respect disable_colored_help</li>
<li><a href="d3f0931267"><code>d3f0931</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4124">#4124</a> from miguelff/v3-master</li>
<li><a href="dae2bb765f"><code>dae2bb7</code></a> fix: Amend error message when deriving enums</li>
<li>Additional commits viewable in <a href="https://github.com/clap-rs/clap/compare/v3.2.17...v3.2.19">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=3.2.17&new-version=3.2.19)](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.83 to 1.0.85.
<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.85</h2>
<ul>
<li>Make <code>Display</code> for <code>Number</code> produce the same representation as serializing (<a href="https://github-redirect.dependabot.com/serde-rs/json/issues/919">#919</a>)</li>
</ul>
<h2>v1.0.84</h2>
<ul>
<li>Make <code>Debug</code> impl of <code>serde_json::Value</code> more compact (<a href="https://github-redirect.dependabot.com/serde-rs/json/issues/918">#918</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="44d9c53e25"><code>44d9c53</code></a> Release 1.0.85</li>
<li><a href="2c8e2b08af"><code>2c8e2b0</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/serde-rs/json/issues/919">#919</a> from serde-rs/displaynum</li>
<li><a href="cb2515ba44"><code>cb2515b</code></a> Make Display for Number produce the same representation as serializing</li>
<li><a href="8ba854166d"><code>8ba8541</code></a> Preserve '.0' when Displaying Number</li>
<li><a href="de251c8198"><code>de251c8</code></a> Add test of Display for Number containing float</li>
<li><a href="6b8b07365e"><code>6b8b073</code></a> Release 1.0.84</li>
<li><a href="9e9b2b72fb"><code>9e9b2b7</code></a> Revert "Avoid cargo 1.45–1.50 in GitHub Actions"</li>
<li><a href="a685113765"><code>a685113</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/serde-rs/json/issues/918">#918</a> from serde-rs/debug</li>
<li><a href="dd6a86db07"><code>dd6a86d</code></a> Reduce unneeded parens and newlines in Debug for Value</li>
<li><a href="de62e3e406"><code>de62e3e</code></a> Make Debug test compatible with preserve_order</li>
<li>Additional commits viewable in <a href="https://github.com/serde-rs/json/compare/v1.0.83...v1.0.85">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.83&new-version=1.0.85)](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 neccesary.
--->
This Pull Request removes two dependencies that were not really needed, and fixes#2244 by no longer having the package in the dependency tree.
It changes the following:
- The `structopt` dependency in `boa_tester` has been replaced by `clap` v3, the same way as we did in `boa_cli`. This means that we have one less dependency (at least), and that `clap` v2 is only used as a dev-dependency by `criterion` (which will probably be removed in 0.4, as per https://github.com/bheisler/criterion.rs/issues/596).
- The no-longer-updated `num-format` dependency has been removed from `boa_tester`. We were only using it to add comma thousands separator on results, so I added a simple function to do it (not very performant, but it will only be used a few times when showing results).
Looking at this, I noticed a couple of things:
- The `csv` dependency, used by `criterion` has not been updated in more than a year, and it's using a very old `itoa` dependency. They updated the dependency in the repository in March, but unfortunately, the release is taking some more time than expected, and a tracking issue can be found here: https://github.com/BurntSushi/rust-csv/issues/271
- `cargo update` fails, because the latest update to `tinystr` in the ICU4x breaks ICU4x 0.6. I have reported this here: https://github.com/unicode-org/icu4x/issues/2428 and their recommendation is for us to use a beta version of the library, but I don't think we should go for that, since this is a semver breakage.
This Pull Request fixes/closes #2223.
It changes the following:
- Check the .boa_history file, if it is not exist then create the file before load history function to prevent the crash
Bumps [clap](https://github.com/clap-rs/clap) from 3.2.16 to 3.2.17.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/releases">clap's releases</a>.</em></p>
<blockquote>
<h2>v3.2.17</h2>
<h2>[3.2.17] - 2022-08-12</h2>
<h3>Fixes</h3>
<ul>
<li><em>(derive)</em> Expose <code>#[clap(id = ...)]</code> attribute to match Arg's latest API</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/blob/v3.2.17/CHANGELOG.md">clap's changelog</a>.</em></p>
<blockquote>
<h2>[3.2.17] - 2022-08-12</h2>
<h3>Fixes</h3>
<ul>
<li><em>(derive)</em> Expose <code>#[clap(id = ...)]</code> attribute to match Arg's latest API</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="df30c1a1a8"><code>df30c1a</code></a> chore: Release</li>
<li><a href="57161dbe92"><code>57161db</code></a> docs: Update changelog</li>
<li><a href="e29f0140a6"><code>e29f014</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4068">#4068</a> from danielparks/issue-3785-derive-id-attr-v3</li>
<li><a href="bc84fc0f6e"><code>bc84fc0</code></a> chore(ci): Lock docs to MSRV</li>
<li><a href="d8e25498b2"><code>d8e2549</code></a> fix(derive): Add "id" attribute</li>
<li><a href="565c5ea5c0"><code>565c5ea</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4048">#4048</a> from epage/backport</li>
<li><a href="3af94ec0af"><code>3af94ec</code></a> docs(tutorial): Switch to hand-implemented ValueEnum</li>
<li><a href="3943ad7fc0"><code>3943ad7</code></a> test(tutorial): Ensure we actually test code</li>
<li><a href="a61f874a51"><code>a61f874</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4043">#4043</a> from epage/action</li>
<li><a href="c7123b3159"><code>c7123b3</code></a> docs(derive): Clarify what defaulted action/value_parser does</li>
<li>Additional commits viewable in <a href="https://github.com/clap-rs/clap/compare/v3.2.16...v3.2.17">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=3.2.16&new-version=3.2.17)](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>