Bumps [clap](https://github.com/clap-rs/clap) from 4.2.4 to 4.2.5.
<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.2.5</h2>
<h2>[4.2.5] - 2023-04-27</h2>
<h3>Fixes</h3>
<ul>
<li>Improve panic when a group requires a non-existent ID</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.2.5] - 2023-04-27</h2>
<h3>Fixes</h3>
<ul>
<li>Improve panic when a group requires a non-existent ID</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="fa57ed3123"><code>fa57ed3</code></a> chore: Release</li>
<li><a href="9f6067f644"><code>9f6067f</code></a> docs: Update changelog</li>
<li><a href="9eaf8996a4"><code>9eaf899</code></a> Merge pull request <a href="https://redirect.github.com/clap-rs/clap/issues/4867">#4867</a> from epage/panic</li>
<li><a href="6b23edc36a"><code>6b23edc</code></a> Merge pull request <a href="https://redirect.github.com/clap-rs/clap/issues/4864">#4864</a> from mattmadeofpasta/remove-redundant-test</li>
<li><a href="185729a7dc"><code>185729a</code></a> fix(builder): Assert earlier on bad requires/conflicts</li>
<li><a href="e02644b9c2"><code>e02644b</code></a> fix(usage): Provide more context in panic</li>
<li><a href="296fec9186"><code>296fec9</code></a> test(help): Remove redundant test</li>
<li><a href="43591bc1ee"><code>43591bc</code></a> chore: Release</li>
<li><a href="9bda2ac8a0"><code>9bda2ac</code></a> docs: Update changelog</li>
<li><a href="c38b8ca66d"><code>c38b8ca</code></a> Merge pull request <a href="https://redirect.github.com/clap-rs/clap/issues/4851">#4851</a> from ClementTsang/update_mut_arg_docs</li>
<li>Additional commits viewable in <a href="https://github.com/clap-rs/clap/compare/v4.2.4...v4.2.5">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.2.4&new-version=4.2.5)](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 implements `Hidden Classes`, I named them as `Shapes` (like Spidermonkey does), calling them maps like v8 seems confusing because there already is a JS builtin, likewise with `Hidden classes` since there are already classes in JS.
There are two types of shapes: `shared` shapes that create the transition tree, and are shared between objects, this is mainly intended for user defined objects this makes more sense because shapes can create transitions trees, doing that for the builtins seems wasteful (unless users wanted to creating an object with the same property names and the same property attributes in the same order... which seems unlikely). That's why I added `unique` shapes, only one object has it. This is similar to previous solution, but this architecture enables us to use inline caching.
There will probably be a performance hit until we implement inline caching.
There still a lot of work that needs to be done, on this:
- [x] Move Property Attributes to shape
- [x] Move Prototype to shape
- [x] ~~Move extensible flag to shape~~, On further evaluation this doesn't give any benefit (at least right now), since it isn't used by inline caching also adding one more transition.
- [x] Implement delete for unique shapes.
- [x] If the chain is too long we should probably convert it into a `unique` shape
- [x] Figure out threshold ~~(maybe more that 256 properties ?)~~ curently set to an arbitrary number (`1024`)
- [x] Implement shared property table between shared shapes
- [x] Add code Document
- [x] Varying size storage for properties (get+set = 2, data = 1)
- [x] Add shapes to more object:
- [x] ordinary object
- [x] Arrays
- [x] Functions
- [x] Other builtins
- [x] Add `shapes.md` doc explaining shapes in depth with mermaid diagrams :)
- [x] Add `$boa.shape` module
- [x] `$boa.shape.id(o)`
- [x] `$boa.shape.type(o)`
- [x] `$boa.shape.same(o1, o2)`
- [x] add doc to `boa_object.md`
This Pull Request fixes/closes #718.
It changes the following:
- Adds a new `boa_runtime` crate, that will only include `console` for now
- Changes the `boa_cli` crate to use the new `boa_runtime` crate for the console, instead of the `console` feature of `boa_engine`
- Removes the `console` feature in `boa_engine`
- Adds a new `boa_testing` helper crate with some useful functions for testing `boa`. This part duplicates the code from `boa_engine`, but I could not make `boa_engine` work with this crate as a dependency due to circular dependencies. Maybe doing it a bit generic could work, but didn't have enough time to check it.
To be checked: wether the WASM example works as expected with the console.
This Pull Request implements [Initializers in ForIn Statement Heads](https://tc39.es/ecma262/#sec-initializers-in-forin-statement-heads) from the Annex B. This also cleans up the "annex-b" feature to be able to disable it with `--no-default-features`, since I couldn't test the error messages when the feature is disabled.
Bumps [regex](https://github.com/rust-lang/regex) from 1.7.3 to 1.8.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.8.0 (2023-04-20)</h1>
<p>This is a sizeable release that will be soon followed by another sizeable
release. Both of them will combined close over 40 existing issues and PRs.</p>
<p>This first release, despite its size, essentially represent preparatory work
for the second release, which will be even bigger. Namely, this release:</p>
<ul>
<li>Increases the MSRV to Rust 1.60.0, which was released about 1 year ago.</li>
<li>Upgrades its dependency on <code>aho-corasick</code> to the recently release 1.0
version.</li>
<li>Upgrades its dependency on <code>regex-syntax</code> to the simultaneously released
<code>0.7</code> version. The changes to <code>regex-syntax</code> principally revolve around a
rewrite of its literal extraction code and a number of simplifications and
optimizations to its high-level intermediate representation (HIR).</li>
</ul>
<p>The second release, which will follow ~shortly after the release above, will
contain a soup-to-nuts rewrite of every regex engine. This will be done by
bringing <a href="https://github.com/BurntSushi/regex-automata"><code>regex-automata</code></a> into
this repository, and then changing the <code>regex</code> crate to be nothing but an API
shim layer on top of <code>regex-automata</code>'s API.</p>
<p>These tandem releases are the culmination of about 3
years of on-and-off work that <a href="https://redirect.github.com/rust-lang/regex/issues/656">began in earnest in March
2020</a>.</p>
<p>Because of the scale of changes involved in these releases, I would love to
hear about your experience. Especially if you notice undocumented changes in
behavior or performance changes (positive <em>or</em> negative).</p>
<p>Most changes in the first release are listed below. For more details, please
see the commit log, which reflects a linear and decently documented history
of all changes.</p>
<p>New features:</p>
<ul>
<li>[FEATURE <a href="https://redirect.github.com/rust-lang/regex/issues/501">#501</a>](<a href="https://redirect.github.com/rust-lang/regex/issues/501">rust-lang/regex#501</a>):
Permit many more characters to be escaped, even if they have no significance.
More specifically, any ASCII character except for <code>[0-9A-Za-z<>]</code> can now be
escaped. Also, a new routine, <code>is_escapeable_character</code>, has been added to
<code>regex-syntax</code> to query whether a character is escapeable or not.</li>
<li>[FEATURE <a href="https://redirect.github.com/rust-lang/regex/issues/547">#547</a>](<a href="https://redirect.github.com/rust-lang/regex/issues/547">rust-lang/regex#547</a>):
Add <code>Regex::captures_at</code>. This filles a hole in the API, but doesn't otherwise
introduce any new expressive power.</li>
<li>[FEATURE <a href="https://redirect.github.com/rust-lang/regex/issues/595">#595</a>](<a href="https://redirect.github.com/rust-lang/regex/issues/595">rust-lang/regex#595</a>):
Capture group names are now Unicode-aware. They can now begin with either a <code>_</code>
or any "alphabetic" codepoint. After the first codepoint, subsequent codepoints
can be any sequence of alpha-numeric codepoints, along with <code>_</code>, <code>.</code>, <code>[</code> and
<code>]</code>. Note that replacement syntax has not changed.</li>
<li>[FEATURE <a href="https://redirect.github.com/rust-lang/regex/issues/810">#810</a>](<a href="https://redirect.github.com/rust-lang/regex/issues/810">rust-lang/regex#810</a>):</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/rust-lang/regex/commits">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.3&new-version=1.8.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [clap](https://github.com/clap-rs/clap) from 4.2.3 to 4.2.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.2.4</h2>
<h2>[4.2.4] - 2023-04-19</h2>
<h3>Documentation</h3>
<ul>
<li>Corrected docs for <code>Command::style</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.2.4] - 2023-04-19</h2>
<h3>Documentation</h3>
<ul>
<li>Corrected docs for <code>Command::style</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="60c8c3fc31"><code>60c8c3f</code></a> chore: Release</li>
<li><a href="e9b4c4769e"><code>e9b4c47</code></a> docs: Update changelog</li>
<li><a href="e429a9e98b"><code>e429a9e</code></a> Merge pull request <a href="https://redirect.github.com/clap-rs/clap/issues/4845">#4845</a> from epage/color</li>
<li><a href="1ca073f212"><code>1ca073f</code></a> docs(help): Fill in styles docs</li>
<li><a href="6d5aaae5a9"><code>6d5aaae</code></a> feat(help): Allow access to current Styles</li>
<li>See full diff in <a href="https://github.com/clap-rs/clap/compare/v4.2.3...v4.2.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.2.3&new-version=4.2.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [clap](https://github.com/clap-rs/clap) from 4.2.2 to 4.2.3.
<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.2.3</h2>
<h2>[4.2.3] - 2023-04-18</h2>
<h3>Features</h3>
<ul>
<li><code>Command::styles</code> for theming help/errors (behind <code>unstable-styles</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.2.3] - 2023-04-18</h2>
<h3>Features</h3>
<ul>
<li><code>Command::styles</code> for theming help/errors (behind <code>unstable-styles</code>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="b99c50f7e9"><code>b99c50f</code></a> chore: Release</li>
<li><a href="3f46258b45"><code>3f46258</code></a> docs: Update changelog</li>
<li><a href="b0e0c596fe"><code>b0e0c59</code></a> Merge pull request <a href="https://redirect.github.com/clap-rs/clap/issues/4843">#4843</a> from epage/style</li>
<li><a href="cbea23e3fc"><code>cbea23e</code></a> style: Make clippy happy</li>
<li><a href="5ca3b2fc5f"><code>5ca3b2f</code></a> refactor(help): Shrink binary size</li>
<li><a href="ec7040e8ba"><code>ec7040e</code></a> style: Make clippy happy</li>
<li><a href="57974bed7b"><code>57974be</code></a> refactor(help): Future proof styling</li>
<li><a href="e10e2ad249"><code>e10e2ad</code></a> refactor(help): Split out separate usage style</li>
<li><a href="8fd0a93bdc"><code>8fd0a93</code></a> refactor(help): Clarify style meaning</li>
<li><a href="7cf08e63cd"><code>7cf08e6</code></a> refactor(help): Remove unused hint</li>
<li>Additional commits viewable in <a href="https://github.com/clap-rs/clap/compare/v4.2.2...v4.2.3">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.2.2&new-version=4.2.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
This should hopefully fix more async/futures issues related to resuming execution in the future, since we can leverage generator logic to handle this for us.
It changes the following:
- Refactors `GeneratorContext` to handle context preparation.
- Reuses the functionality of `GeneratorContext` in `Await`.
- Removes `EarlyReturnType` in favour of a single `r#await` bool flag in `CallFrame`.
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.95 to 1.0.96.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/json/releases">serde_json's releases</a>.</em></p>
<blockquote>
<h2>v1.0.96</h2>
<ul>
<li>Guarantee that <code>to_writer</code> only writes valid UTF-8 strings (<a href="https://redirect.github.com/serde-rs/json/issues/1011">#1011</a>, thanks <a href="https://github.com/stepancheg"><code>@stepancheg</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="187f7dadc6"><code>187f7da</code></a> Release 1.0.96</li>
<li><a href="41199cce93"><code>41199cc</code></a> Merge pull request <a href="https://redirect.github.com/serde-rs/json/issues/1011">#1011</a> from stepancheg/utf-8</li>
<li><a href="cd5ed8204a"><code>cd5ed82</code></a> Document to_writer only writes valid UTF-8 strings</li>
<li><a href="ce53b862b9"><code>ce53b86</code></a> Fix needless_borrow clippy lint in test</li>
<li>See full diff in <a href="https://github.com/serde-rs/json/compare/v1.0.95...v1.0.96">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_json&package-manager=cargo&previous-version=1.0.95&new-version=1.0.96)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [clap](https://github.com/clap-rs/clap) from 4.2.1 to 4.2.2.
<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.2.2</h2>
<h2>[4.2.2] - 2023-04-13</h2>
<h3>Internal</h3>
<ul>
<li>Update dependencies</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.2.2] - 2023-04-13</h2>
<h3>Internal</h3>
<ul>
<li>Update dependencies</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="6f409544ec"><code>6f40954</code></a> chore: Release</li>
<li><a href="6d5394dfc1"><code>6d5394d</code></a> docs: Update changelog</li>
<li><a href="d7f742ab87"><code>d7f742a</code></a> Merge pull request <a href="https://redirect.github.com/clap-rs/clap/issues/4832">#4832</a> from epage/update</li>
<li><a href="9c85e1b295"><code>9c85e1b</code></a> chore: Update anstyle/anstream</li>
<li><a href="0deb42265d"><code>0deb422</code></a> Merge pull request <a href="https://redirect.github.com/clap-rs/clap/issues/4823">#4823</a> from epage/template</li>
<li><a href="d34b51a2ed"><code>d34b51a</code></a> Merge pull request <a href="https://redirect.github.com/clap-rs/clap/issues/4821">#4821</a> from Bfault/typo</li>
<li><a href="13d79b7677"><code>13d79b7</code></a> Fix typo</li>
<li><a href="feddd124b0"><code>feddd12</code></a> style: Move away from banned fns</li>
<li><a href="d3d45e8344"><code>d3d45e8</code></a> chore(pre): Mirror exclude in pre-commit</li>
<li><a href="c99ef984de"><code>c99ef98</code></a> chore(ci): Remove allow-print-in-tests due to MSRV</li>
<li>Additional commits viewable in <a href="https://github.com/clap-rs/clap/compare/v4.2.1...v4.2.2">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.2.1&new-version=4.2.2)](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 allows `thread_local` contexts to have owned `HostHooks` and `JobQueues`.
It changes the following:
- Creates a new `MaybeShared` struct that can hold either a reference or an `Rc`.
- Changes the `job_queue` and `host_hooks` parameters of `Context` to use `MaybeShared`.
This PR also allows us to make `SimpleJobQueue` the default promise runner, which I think it's pretty cool :)
cc @lastmjs
This Pull Request fixes test [`assert-throws-same-realm.js`](eb44f67274/test/harness/assert-throws-same-realm.js).
It changes the following:
- Handles global variables through the global object, instead of the `context`.
- Adds an `active_function` field to the vm, which is used as the `NewTarget` when certain builtins aren't called with `new`.
- Adds a `realm_intrinsics` field to `Function`.
Currently some debugging stuff in JavaScript land is difficult to impossible, like triggering a GC collect, this is not impossible to do in JavaScript the way I triggered it was by creating a huge amount of object `for (let i = 0; i < 100000; ++i) { ({}) }` but this is cumbersome and not guaranteed to trigger a gc.
This PR implements `--debug-object` flag that injects the `$boa` debug object in the context, the object is separated into modules currently `gc`, `function`, `object`.
We can now do `$boa.gc.collect()`, which force triggers a GC collect.
Or sometimes I wanted a trace (the current solution is great, you can trace stuff like `>>> 1 + 1` but that is also it's limitation), it traces everything, I sometimes have a scenario and just want to trace a single function in that scenario, that's why I added the `$boa.function.trace(func, this, ...args)` It only traces the function.
```js
>> $boa.function.trace((a, b) => a + b, undefined, 1, 2)
-------------------------Compiled Output: ''--------------------------
Location Count Opcode Operands
000000 0000 DefInitArg 0000: 'a'
000005 0001 DefInitArg 0001: 'b'
000010 0002 RestParameterPop
000011 0003 GetName 0000: 'a'
000016 0004 GetName 0001: 'b'
000021 0005 Add
000022 0006 Return
000023 0007 PushUndefined
000024 0008 Return
... (cut for brevity) ...
```
It also implements `$boa.function.flowgraph(func, options)`:
```js
$boa.function.flowgraph(func, 'graphviz')
$boa.function.flowgraph(func, { format: 'mermaid', direction: 'TopBottom' })
```
Printing the object pointer:
```js
$boa.object.id({}) // '0x566464F33'
```
It currently implements some functionality which we can grow it with our debugging needs since we are not restricted by a spec we can add whatever we want :)
I was originally going to implement this in #2723 (but the PR is too big), for shapes having functions like:
```js
$boa.shape.type({}) // Shared shape
$boa.shape.id({}) // 0x8578FG355 (objects, shape pointer)
$boa.shape.flowgraph({}) // printing the shape transition chain, like $boa.function.flowgraph
```
Shapes chains are very hard to debug once they are big... so having this type of debugging capability would make it much easier.
Bumps [clap](https://github.com/clap-rs/clap) from 4.2.0 to 4.2.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.2.1</h2>
<h2>[4.2.1] - 2023-03-28</h2>
<h3>Fixes</h3>
<ul>
<li>Don't highlight uninteresting parts of the error message</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.2.1] - 2023-03-28</h2>
<h3>Fixes</h3>
<ul>
<li>Don't highlight uninteresting parts of the error message</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="3ef784b516"><code>3ef784b</code></a> chore: Release</li>
<li><a href="6e1b6599d7"><code>6e1b659</code></a> Merge pull request <a href="https://redirect.github.com/clap-rs/clap/issues/4810">#4810</a> from epage/fixx</li>
<li><a href="58615a1306"><code>58615a1</code></a> fix(error): Don't highlight 'similar'</li>
<li><a href="8f45d2f95a"><code>8f45d2f</code></a> docs(derive): Reword opt-out</li>
<li><a href="06d190751a"><code>06d1907</code></a> docs(derive): Clarify opt-out of special type behavior</li>
<li>See full diff in <a href="https://github.com/clap-rs/clap/compare/clap_complete-v4.2.0...v4.2.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.2.0&new-version=4.2.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
This PR implements an optimizer, It currently implements the [constant folding optimization][cfo]. this optimization is responsible for "folding"/evaluating constant expressions.
For example:
```js
let x = ((1 + 2 + -4) * 8) << 4
```
Generates the following instruction(s) (`cargo run -- -t`):
```
000000 0000 PushOne
000001 0001 PushInt8 2
000003 0002 Add
000004 0003 PushInt8 4
000006 0004 Neg
000007 0005 Add
000008 0006 PushInt8 8
000010 0007 Mul
000011 0008 PushInt8 4
000013 0009 ShiftLeft
000014 0010 DefInitLet 0000: 'x'
```
With constant folding it generates the following instruction(s) (`cargo run -- -t -O`):
```
000000 0000 PushInt8 -128
000002 0001 DefInitLet 0000: 'x'
```
It changes the following:
- Implement ~~WIP~~ constant folding optimization, ~~only works with integers for now~~
- Add `--optimize, -O` flag to boa_cli
- Add `--optimizer-statistics` flag to boa_cli for optimizer statistics
- Add `--optimize, -O` flag to boa_tester
After I finish with this, will try to implement other optimizations :)
[cfo]: https://en.wikipedia.org/wiki/Constant_folding
Bumps [clap](https://github.com/clap-rs/clap) from 4.1.14 to 4.2.0.
<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.2.0</h2>
<h2>[4.2.0] - 2023-03-28</h2>
<h3>Compatibility</h3>
<ul>
<li>Removed the languishing <code>unstable-replace</code> feature (open to discussion at <a href="https://redirect.github.com/clap-rs/clap/issues/2836">#2836</a>)</li>
<li>Removed the stablized <code>unstable-grouped</code> feature</li>
</ul>
<h3>Features</h3>
<ul>
<li>Allow any <code>StyledStr</code> to accept text styled with ANSI escape codes</li>
<li>Respect <code>CLICOLOR</code>, <code>CLICOLOR_FORCE</code></li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Lighten the tone for "unexpected argument" errors (open to discussion at <a href="https://redirect.github.com/clap-rs/clap/issues/4638">#4638</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.2.0] - 2023-03-28</h2>
<h3>Compatibility</h3>
<ul>
<li>Removed the languishing <code>unstable-replace</code> feature (open to discussion at <a href="https://redirect.github.com/clap-rs/clap/issues/2836">#2836</a>)</li>
<li>Removed the stablized <code>unstable-grouped</code> feature</li>
</ul>
<h3>Features</h3>
<ul>
<li>Allow any <code>StyledStr</code> to accept text styled with ANSI escape codes</li>
<li>Respect <code>CLICOLOR</code>, <code>CLICOLOR_FORCE</code></li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Lighten the tone for "unexpected argument" errors (open to discussion at <a href="https://redirect.github.com/clap-rs/clap/issues/4638">#4638</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="8fc65e28b6"><code>8fc65e2</code></a> chore: Release</li>
<li><a href="21be636cec"><code>21be636</code></a> docs: Update changelog</li>
<li><a href="4ed6ddb74d"><code>4ed6ddb</code></a> Merge pull request <a href="https://redirect.github.com/clap-rs/clap/issues/4805">#4805</a> from epage/replace</li>
<li><a href="79be4bd98d"><code>79be4bd</code></a> chore: Release</li>
<li><a href="47b397dff4"><code>47b397d</code></a> docs: Update changelog</li>
<li><a href="2c19accd6c"><code>2c19acc</code></a> Merge pull request <a href="https://redirect.github.com/clap-rs/clap/issues/4803">#4803</a> from epage/osstr</li>
<li><a href="5b101eb84c"><code>5b101eb</code></a> Merge pull request <a href="https://redirect.github.com/clap-rs/clap/issues/4804">#4804</a> from epage/unstable</li>
<li><a href="4b180f8cd0"><code>4b180f8</code></a> Merge pull request <a href="https://redirect.github.com/clap-rs/clap/issues/4802">#4802</a> from epage/osstr</li>
<li><a href="53cb165b3f"><code>53cb165</code></a> Merge pull request <a href="https://redirect.github.com/clap-rs/clap/issues/4798">#4798</a> from epage/similar</li>
<li><a href="56fe5e0ec0"><code>56fe5e0</code></a> fix!: Remove <code>unstable-replace</code> feature flag</li>
<li>Additional commits viewable in <a href="https://github.com/clap-rs/clap/compare/v4.1.14...clap_complete-v4.2.0">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.14&new-version=4.2.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.94 to 1.0.95.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/json/releases">serde_json's releases</a>.</em></p>
<blockquote>
<h2>v1.0.95</h2>
<ul>
<li>Preserve f32 precision when serializing f32 -> serde_json::Value -> JSON string in "arbitrary_precision" mode (<a href="https://redirect.github.com/serde-rs/json/issues/1004">#1004</a>, <a href="https://redirect.github.com/serde-rs/json/issues/1005">#1005</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="4ea38c4001"><code>4ea38c4</code></a> Release 1.0.95</li>
<li><a href="731886c08e"><code>731886c</code></a> Merge pull request <a href="https://redirect.github.com/serde-rs/json/issues/1005">#1005</a> from dtolnay/f32cast</li>
<li><a href="c9bff92c1f"><code>c9bff92</code></a> Fix PartialEq between Value and f32</li>
<li><a href="06f3443c6e"><code>06f3443</code></a> Eliminate f32-to-f64 casting in arbitrary_precision mode</li>
<li><a href="b0990a51db"><code>b0990a5</code></a> Add regression test for issue 1004</li>
<li><a href="02e583360d"><code>02e5833</code></a> Update fuzz crate gitignore to ignore coverage dir</li>
<li><a href="4b9699612f"><code>4b96996</code></a> No longer test so many old compiler versions</li>
<li>See full diff in <a href="https://github.com/serde-rs/json/compare/v1.0.94...v1.0.95">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_json&package-manager=cargo&previous-version=1.0.94&new-version=1.0.95)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [clap](https://github.com/clap-rs/clap) from 4.1.13 to 4.1.14.
<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.14</h2>
<h2>[4.1.14] - 2023-03-28</h2>
<h3>Features</h3>
<ul>
<li><em>(derive)</em> <code>#[group]</code> raw attribute support</li>
</ul>
<h3>Performance</h3>
<ul>
<li><em>(derive)</em> <code>clap_builder</code> was pulled out of <code>clap</code> so it could build in parallel to <code>clap_derive</code></li>
<li><code>os_str_bytes</code> dependency was removed for faster builds and smaller binaries</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.14] - 2023-03-28</h2>
<h3>Features</h3>
<ul>
<li><em>(derive)</em> <code>#[group]</code> raw attribute support</li>
</ul>
<h3>Performance</h3>
<ul>
<li><em>(derive)</em> <code>clap_builder</code> was pulled out of <code>clap</code> so it could build in parallel to <code>clap_derive</code></li>
<li><code>os_str_bytes</code> dependency was removed for faster builds and smaller binaries</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="2852653656"><code>2852653</code></a> chore: Release</li>
<li><a href="2bb4146374"><code>2bb4146</code></a> chore: Release</li>
<li><a href="765c2e18f5"><code>765c2e1</code></a> docs: Update changelog</li>
<li><a href="6696513dec"><code>6696513</code></a> Merge pull request <a href="https://redirect.github.com/clap-rs/clap/issues/4796">#4796</a> from epage/lex</li>
<li><a href="a916daad57"><code>a916daa</code></a> Merge pull request <a href="https://redirect.github.com/clap-rs/clap/issues/4795">#4795</a> from epage/required_group</li>
<li><a href="627a94f502"><code>627a94f</code></a> Merge pull request <a href="https://redirect.github.com/clap-rs/clap/issues/4794">#4794</a> from epage/osstr</li>
<li><a href="9712987b80"><code>9712987</code></a> Merge pull request <a href="https://redirect.github.com/clap-rs/clap/issues/4791">#4791</a> from epage/builder</li>
<li><a href="615c1dc6a0"><code>615c1dc</code></a> Merge pull request <a href="https://redirect.github.com/clap-rs/clap/issues/4790">#4790</a> from epage/doc</li>
<li><a href="57d1c39dc5"><code>57d1c39</code></a> Merge pull request <a href="https://redirect.github.com/clap-rs/clap/issues/4789">#4789</a> from mochi-sann/fix-clap_ocmplete-example-doc</li>
<li><a href="7c6cf81476"><code>7c6cf81</code></a> docs(clap_complete): The file name of the command in the clap_complete exampl...</li>
<li>Additional commits viewable in <a href="https://github.com/clap-rs/clap/compare/v4.1.13...v4.1.14">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.13&new-version=4.1.14)](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.2 to 1.7.3.
<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.3 (2023-03-24)</h1>
<p>This is a small release that fixes a bug in <code>Regex::shortest_match_at</code> that
could cause it to panic, even when the offset given is valid.</p>
<p>Bug fixes:</p>
<ul>
<li>[BUG <a href="https://redirect.github.com/rust-lang/regex/issues/969">#969</a>](<a href="https://redirect.github.com/rust-lang/regex/issues/969">rust-lang/regex#969</a>):
Fix a bug in how the reverse DFA was called for <code>Regex::shortest_match_at</code>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="9582040009"><code>9582040</code></a> 1.7.3</li>
<li><a href="9562ccd161"><code>9562ccd</code></a> changelog: 1.7.3</li>
<li><a href="d94f95523a"><code>d94f955</code></a> dfa: fix bug in how the reverse DFA is called</li>
<li>See full diff in <a href="https://github.com/rust-lang/regex/compare/1.7.2...1.7.3">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.2&new-version=1.7.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [clap](https://github.com/clap-rs/clap) from 4.1.11 to 4.1.13.
<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.13</h2>
<h2>[4.1.13] - 2023-03-18</h2>
<h3>Performance</h3>
<ul>
<li>Reduce repeated alloc calls when building a <code>Command</code></li>
<li>Reduce duplicate dependencies for faster builds</li>
</ul>
<h2>v4.1.12</h2>
<h2>[4.1.12] - 2023-03-18</h2>
<h3>Internal</h3>
<ul>
<li><em>(derive)</em> Update to <code>syn</code> v2</li>
</ul>
<h3>Performance</h3>
<ul>
<li><em>(derive)</em> Faster build times by dropping <code>proc-macro-error</code> dependency</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.13] - 2023-03-18</h2>
<h3>Performance</h3>
<ul>
<li>Reduce repeated alloc calls when building a <code>Command</code></li>
<li>Reduce duplicate dependencies for faster builds</li>
</ul>
<h2>[4.1.12] - 2023-03-18</h2>
<h3>Internal</h3>
<ul>
<li><em>(derive)</em> Update to <code>syn</code> v2</li>
</ul>
<h3>Performance</h3>
<ul>
<li><em>(derive)</em> Faster build times by dropping <code>proc-macro-error</code> dependency</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="240e237b5f"><code>240e237</code></a> chore: Release</li>
<li><a href="60e023fb2c"><code>60e023f</code></a> docs: Update changelog</li>
<li><a href="6e1376cac8"><code>6e1376c</code></a> Merge pull request <a href="https://redirect.github.com/clap-rs/clap/issues/4781">#4781</a> from epage/deny</li>
<li><a href="f04ad2f38c"><code>f04ad2f</code></a> Merge pull request <a href="https://redirect.github.com/clap-rs/clap/issues/4779">#4779</a> from epage/reserve</li>
<li><a href="bdfc6be5a7"><code>bdfc6be</code></a> Merge pull request <a href="https://redirect.github.com/clap-rs/clap/issues/4778">#4778</a> from epage/downgrade</li>
<li><a href="a2f500e440"><code>a2f500e</code></a> chore(ci): Switch to cargo-deny</li>
<li><a href="a62fd05d53"><code>a62fd05</code></a> perf: Reduce alloc calls when building</li>
<li><a href="769ccc5cd6"><code>769ccc5</code></a> Revert "chore: Update bitflags dep to 2.0"</li>
<li><a href="79b44d0460"><code>79b44d0</code></a> chore: Release</li>
<li><a href="59109b640d"><code>59109b6</code></a> docs: Update changelog</li>
<li>Additional commits viewable in <a href="https://github.com/clap-rs/clap/compare/v4.1.11...v4.1.13">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.11&new-version=4.1.13)](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.1 to 1.7.2.
<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.2 (2023-03-21)</h1>
<p>This is a small release that fixes a failing test on FreeBSD.</p>
<p>Bug fixes:</p>
<ul>
<li>[BUG <a href="https://redirect.github.com/rust-lang/regex/issues/967">#967</a>](<a href="https://redirect.github.com/rust-lang/regex/issues/967">rust-lang/regex#967</a>):
Fix "no stack overflow" test which can fail due to the small stack size.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="32fed9429e"><code>32fed94</code></a> 1.7.2</li>
<li><a href="6a7ba1e578"><code>6a7ba1e</code></a> deps: bump to regex-syntax 0.6.29</li>
<li><a href="72d482f911"><code>72d482f</code></a> regex-syntax-0.6.29</li>
<li><a href="48b3ba4df7"><code>48b3ba4</code></a> changelog: 1.7.2</li>
<li><a href="d8e22ddf99"><code>d8e22dd</code></a> syntax: tweak the "no stack overflow" test</li>
<li>See full diff in <a href="https://github.com/rust-lang/regex/compare/1.7.1...1.7.2">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.1&new-version=1.7.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
This PR adds the `"trace"` feature flag that enables vm opcode tracing (off by default), most users aren't interested in tracing/debugging that's why I think it should be made out-in.
Bumps [clap](https://github.com/clap-rs/clap) from 4.1.9 to 4.1.11.
<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.11</h2>
<h2>[4.1.11] - 2023-03-17</h2>
<h3>Internal</h3>
<ul>
<li>Update <code>bitflags</code></li>
</ul>
<h2>v4.1.10</h2>
<h2>[4.1.10] - 2023-03-17</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> On Windows, avoid underlined text artifacts</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.11] - 2023-03-17</h2>
<h3>Internal</h3>
<ul>
<li>Update <code>bitflags</code></li>
</ul>
<h2>[4.1.10] - 2023-03-17</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> On Windows, avoid underlined text artifacts</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="b69cf080ce"><code>b69cf08</code></a> chore: Release</li>
<li><a href="4f2f7024db"><code>4f2f702</code></a> docs: Update changelog</li>
<li><a href="4c05dfb8a5"><code>4c05dfb</code></a> Merge pull request <a href="https://redirect.github.com/clap-rs/clap/issues/4771">#4771</a> from nicholasbishop/bishop-update-bitflags</li>
<li><a href="6878a1911b"><code>6878a19</code></a> chore: Update bitflags dep to 2.0</li>
<li><a href="9aee6d31fd"><code>9aee6d3</code></a> chore: Release</li>
<li><a href="97776254a7"><code>9777625</code></a> docs: Update changelog</li>
<li><a href="cdff81540c"><code>cdff815</code></a> Merge pull request <a href="https://redirect.github.com/clap-rs/clap/issues/4767">#4767</a> from epage/win-ansi</li>
<li><a href="fcd6a65e18"><code>fcd6a65</code></a> fix(help): Don't style newlines</li>
<li>See full diff in <a href="https://github.com/clap-rs/clap/compare/v4.1.9...v4.1.11">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.9&new-version=4.1.11)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
This PR adds the `--strict` flag to the CLI that enables strict mode on file/interactive mode execution.
It's a bit annoying to have to prefix with `'use strict';` when trying to debug in interactive mode
```js
>>> 'use strict'; .... // :(
```
It changes the following:
- Adds `--strict` flag to CLI
- update `README.md`
Bumps [clap](https://github.com/clap-rs/clap) from 4.1.8 to 4.1.9.
<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.9] - 2023-03-16</h2>
<h3>Fixes</h3>
<ul>
<li><em>(assert)</em> Improve the assert when using the wrong action with <code>get_count</code> / <code>get_flag</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="e78bba0ec5"><code>e78bba0</code></a> chore: Release</li>
<li><a href="84ea5b8521"><code>84ea5b8</code></a> docs: Update changelog</li>
<li><a href="83b0437ce1"><code>83b0437</code></a> Merge pull request <a href="https://redirect.github.com/clap-rs/clap/issues/4764">#4764</a> from epage/true</li>
<li><a href="4fa1ec6d68"><code>4fa1ec6</code></a> Merge pull request <a href="https://redirect.github.com/clap-rs/clap/issues/4762">#4762</a> from epage/deps</li>
<li><a href="c0dc1cd008"><code>c0dc1cd</code></a> fix(parser): Clarify get_count/get_flag assertion</li>
<li><a href="dec82598b2"><code>dec8259</code></a> chore: Upgrade trycmd</li>
<li><a href="6c0600a031"><code>6c0600a</code></a> chore: Fully specify dependencies</li>
<li><a href="c7e929e123"><code>c7e929e</code></a> Merge pull request <a href="https://redirect.github.com/clap-rs/clap/issues/4752">#4752</a> from kevinmatthes/feature/cff</li>
<li><a href="b8021a2a71"><code>b8021a2</code></a> test: Add CFF Validation</li>
<li><a href="ee8231c69f"><code>ee8231c</code></a> docs: Add Replacement Rules for CITATION.cff</li>
<li>Additional commits viewable in <a href="https://github.com/clap-rs/clap/compare/v4.1.8...v4.1.9">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.8&new-version=4.1.9)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
It changes the following:
- Remove Just-in-time compilation from description in `Cargo.toml`
- Change `FlowgraphFormat` to be terminal friendly
- Update `README.md` cli options section
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.93 to 1.0.94.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/json/releases">serde_json's releases</a>.</em></p>
<blockquote>
<h2>v1.0.94</h2>
<ul>
<li>Fix message duplication between serde_json::Error's <code>Display</code> and <code>source()</code> (<a href="https://github-redirect.dependabot.com/serde-rs/json/issues/991">#991</a>, <a href="https://github-redirect.dependabot.com/serde-rs/json/issues/992">#992</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="a15bd09686"><code>a15bd09</code></a> Release 1.0.94</li>
<li><a href="3e418b13be"><code>3e418b1</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/serde-rs/json/issues/992">#992</a> from dtolnay/errorsource</li>
<li><a href="7eeb169f9b"><code>7eeb169</code></a> Fix message duplication between error Display and source()</li>
<li><a href="d9447c30eb"><code>d9447c3</code></a> Ignore let_underscore_untyped pedantic clippy lint</li>
<li>See full diff in <a href="https://github.com/serde-rs/json/compare/v1.0.93...v1.0.94">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_json&package-manager=cargo&previous-version=1.0.93&new-version=1.0.94)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [clap](https://github.com/clap-rs/clap) from 4.1.7 to 4.1.8.
<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.8</h2>
<h2>[4.1.8] - 2023-02-27</h2>
<h3>Fixes</h3>
<ul>
<li><em>(derive)</em> Don't <code>deny</code> lints on the users behalf</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.8] - 2023-02-27</h2>
<h3>Fixes</h3>
<ul>
<li><em>(derive)</em> Don't <code>deny</code> lints on the users behalf</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="f931de694a"><code>f931de6</code></a> chore: Release</li>
<li><a href="dbab081393"><code>dbab081</code></a> docs: Update changelog</li>
<li><a href="70818c3aef"><code>70818c3</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4739">#4739</a> from MingweiSamuel/nodeny</li>
<li><a href="fa76f6f78d"><code>fa76f6f</code></a> fix: Remove strict linting from generated code</li>
<li>See full diff in <a href="https://github.com/clap-rs/clap/compare/v4.1.7...v4.1.8">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.7&new-version=4.1.8)](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.1.6 to 4.1.7.
<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.7</h2>
<h2>[4.1.7] - 2023-02-27</h2>
<h3>Fixes</h3>
<ul>
<li><em>(derive)</em> Hide some nightly clippy warnings</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.7] - 2023-02-27</h2>
<h3>Fixes</h3>
<ul>
<li><em>(derive)</em> Hide some nightly clippy warnings</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="5f247f5181"><code>5f247f5</code></a> chore: Release</li>
<li><a href="1999d85178"><code>1999d85</code></a> docs: Update changelog</li>
<li><a href="c3a942e376"><code>c3a942e</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4735">#4735</a> from rkrasiuk/rkrasiuk/fix-almost-swapped-lint</li>
<li><a href="5bab68a16f"><code>5bab68a</code></a> fix: Allow <code>clippy::almost_swapped</code></li>
<li><a href="872135b64f"><code>872135b</code></a> fix: Allow <code>clippy::almost_swapped</code></li>
<li><a href="84a9b53cee"><code>84a9b53</code></a> chore: Release</li>
<li><a href="9fa48d5f92"><code>9fa48d5</code></a> docs: Update changelog</li>
<li><a href="e9535a3618"><code>e9535a3</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4734">#4734</a> from XiaoXiaoSN/master</li>
<li><a href="0f3e729358"><code>0f3e729</code></a> feat(complete): Support to run ZSH completion as a script</li>
<li><a href="cdb33b6ad2"><code>cdb33b6</code></a> test(complete): Adjust bash snapshot</li>
<li>Additional commits viewable in <a href="https://github.com/clap-rs/clap/compare/v4.1.6...v4.1.7">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.6&new-version=4.1.7)](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>
~~Builds off of #2529.~~ Merged.
This Pull Request allows passing any function returning `impl Future<Output = JsResult<JsValue>>` to the `NativeFunction` constructor, allowing native concurrency hooks into the engine.
It changes the following:
- Adds a `NativeFunction::from_async_fn` function.
- Adds a new `JobQueue::enqueue_future_job` method.
- Adds an example usage on `boa_examples`.
Bumps [clap](https://github.com/clap-rs/clap) from 4.1.4 to 4.1.6.
<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.6</h2>
<h2>[4.1.6] - 2023-02-15</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> Don't show long help for <code>--help</code> just because hidden possible values include a description</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.6] - 2023-02-15</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> Don't show long help for <code>--help</code> just because hidden possible values include a description</li>
</ul>
<h2>[4.1.5] - 2023-02-15</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> Don't show long help for <code>--help</code> just because a hidden arg has a possible value with a description</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="5e240dddee"><code>5e240dd</code></a> chore: Release</li>
<li><a href="4648b6b49d"><code>4648b6b</code></a> docs: Update changelog</li>
<li><a href="8c92ef6c76"><code>8c92ef6</code></a> fix(help): Fix yet another --help long help edge case (<a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4712">#4712</a>)</li>
<li><a href="fb9435d026"><code>fb9435d</code></a> chore: Release</li>
<li><a href="9270d2382e"><code>9270d23</code></a> docs: Update changelog</li>
<li><a href="473cf175a2"><code>473cf17</code></a> fix(help): Fix --help help text in edge case (<a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4710">#4710</a>)</li>
<li><a href="62da8f94b9"><code>62da8f9</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4711">#4711</a> from aleksanderkrauze/improve-builder-str-inner-into...</li>
<li><a href="d6e7d4699f"><code>d6e7d46</code></a> Improve builder::str::inner::Inner::into_string implementation</li>
<li><a href="ad5d67623a"><code>ad5d676</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4696">#4696</a> from graves501/patch-1</li>
<li><a href="ad6778d206"><code>ad6778d</code></a> Fix typo in git.rs</li>
<li>Additional commits viewable in <a href="https://github.com/clap-rs/clap/compare/v4.1.4...v4.1.6">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.4&new-version=4.1.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.92 to 1.0.93.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/json/releases">serde_json's releases</a>.</em></p>
<blockquote>
<h2>v1.0.93</h2>
<ul>
<li>Support 128-bit integers in serde_json::to_value (<a href="https://github-redirect.dependabot.com/serde-rs/json/issues/982">#982</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="0ebeede28a"><code>0ebeede</code></a> Release 1.0.93</li>
<li><a href="4fd48503de"><code>4fd4850</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/serde-rs/json/issues/982">#982</a> from serde-rs/integer128tovalue</li>
<li><a href="e3d13cd61a"><code>e3d13cd</code></a> Support 128-bit integers in to_value</li>
<li><a href="f77ad4750f"><code>f77ad47</code></a> Add test of integer128 to_value</li>
<li>See full diff in <a href="https://github.com/serde-rs/json/compare/v1.0.92...v1.0.93">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_json&package-manager=cargo&previous-version=1.0.92&new-version=1.0.93)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.91 to 1.0.92.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/json/releases">serde_json's releases</a>.</em></p>
<blockquote>
<h2>v1.0.92</h2>
<ul>
<li>Documentation improvements</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="a9c984f13e"><code>a9c984f</code></a> Release 1.0.92</li>
<li><a href="c42b724c14"><code>c42b724</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/serde-rs/json/issues/980">#980</a> from serde-rs/docrepr</li>
<li><a href="eaa287cb3a"><code>eaa287c</code></a> Hide repr attribute from documentation</li>
<li><a href="7bc6c86310"><code>7bc6c86</code></a> RawValue -> repr(transparent)</li>
<li><a href="e41ee42d92"><code>e41ee42</code></a> Update indoc dev-dependency to version 2</li>
<li><a href="8cebe89500"><code>8cebe89</code></a> Speed up cargo fuzz CI job</li>
<li><a href="74f510e56d"><code>74f510e</code></a> Sync license text with rust-lang repos</li>
<li><a href="557f45c404"><code>557f45c</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/serde-rs/json/issues/964">#964</a> from dtolnay/docsrs</li>
<li><a href="9edf7fa9b3"><code>9edf7fa</code></a> Replace docs.serde.rs links with intra-rustdoc links</li>
<li><a href="9947ae606e"><code>9947ae6</code></a> Point documentation links to docs.rs instead of docs.serde.rs</li>
<li>See full diff in <a href="https://github.com/serde-rs/json/compare/v1.0.91...v1.0.92">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_json&package-manager=cargo&previous-version=1.0.91&new-version=1.0.92)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
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.