Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.91 to 1.0.92.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/json/releases">serde_json's releases</a>.</em></p>
<blockquote>
<h2>v1.0.92</h2>
<ul>
<li>Documentation improvements</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="a9c984f13e"><code>a9c984f</code></a> Release 1.0.92</li>
<li><a href="c42b724c14"><code>c42b724</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/serde-rs/json/issues/980">#980</a> from serde-rs/docrepr</li>
<li><a href="eaa287cb3a"><code>eaa287c</code></a> Hide repr attribute from documentation</li>
<li><a href="7bc6c86310"><code>7bc6c86</code></a> RawValue -> repr(transparent)</li>
<li><a href="e41ee42d92"><code>e41ee42</code></a> Update indoc dev-dependency to version 2</li>
<li><a href="8cebe89500"><code>8cebe89</code></a> Speed up cargo fuzz CI job</li>
<li><a href="74f510e56d"><code>74f510e</code></a> Sync license text with rust-lang repos</li>
<li><a href="557f45c404"><code>557f45c</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/serde-rs/json/issues/964">#964</a> from dtolnay/docsrs</li>
<li><a href="9edf7fa9b3"><code>9edf7fa</code></a> Replace docs.serde.rs links with intra-rustdoc links</li>
<li><a href="9947ae606e"><code>9947ae6</code></a> Point documentation links to docs.rs instead of docs.serde.rs</li>
<li>See full diff in <a href="https://github.com/serde-rs/json/compare/v1.0.91...v1.0.92">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_json&package-manager=cargo&previous-version=1.0.91&new-version=1.0.92)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [test262](https://github.com/tc39/test262) from `ad034f3` to `e7364ea`.
<details>
<summary>Commits</summary>
<ul>
<li><a href="e7364ea7dc"><code>e7364ea</code></a> Temporal: Tests for upper limit on rounding increments</li>
<li><a href="8aeab83c98"><code>8aeab83</code></a> Temporal: Adjustments to order-of-operations tests</li>
<li><a href="788bc809bf"><code>788bc80</code></a> Update DateTimeFormat proleptic Gregorian testing to include era (<a href="https://github-redirect.dependabot.com/tc39/test262/issues/3722">#3722</a>)</li>
<li><a href="a157570ddc"><code>a157570</code></a> Regularize some of the "calendar-temporal-object" tests</li>
<li><a href="374aac475d"><code>374aac4</code></a> Regularize "calendar-case-insensitive" tests</li>
<li><a href="8700c92095"><code>8700c92</code></a> Temporal: Remove subsumed intl402 custom Calendar/TimeZone tests</li>
<li><a href="ea10ca0cc6"><code>ea10ca0</code></a> Temporal: Add intl402 custom Calendar/TimeZone tests to cover rejection of in...</li>
<li><a href="f9a62a4eb1"><code>f9a62a4</code></a> Temporal: Update custom Calendar/TimeZone tests to cover rejection of invalid...</li>
<li><a href="703873e1ca"><code>703873e</code></a> Test Array.prototype.findLast* length clamping</li>
<li>See full diff in <a href="ad034f3230...e7364ea7dc">compare view</a></li>
</ul>
</details>
<br />
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 [icu_datagen](https://github.com/unicode-org/icu4x) from 1.1.0 to 1.1.1.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/unicode-org/icu4x/commits">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=icu_datagen&package-manager=cargo&previous-version=1.1.0&new-version=1.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>
<!---
Thank you for contributing to Boa! Please fill out the template below, and remove or add any
information as you feel necessary.
--->
This Pull Request is meant to address #1900. While working on it, there was a decent amount of refactoring/restructuring. Initially, I had kept with the current approach of just keeping track of a kind and counter on the environment stack, especially because that kept the size of each stack entry to a minimum.
I did, however, make a switch to having the opcode create the `EnvStackEntry` with a start address and exit address for a bit more precision.
It changes the following:
- Consolidates `loop_env_stack` and `try_env_stack` into one `EnvStackEntry` struct.
- Changes `Continue`, `Break`, `LoopStart`, `LoopContinue`, `FinallyStart`, `FinallyEnd` and various others. Most of this primarily revolves around the creating of `EnvStackEntry` and interacting with the `env_stack`.
- Changes/updates the try-catch-finally, break and continue statement compilations as necessary
- Adds an `AbruptCompletionRecord` in place of the `finally_jump` vector.
- Adds some tests for try-catch-finally blocks with breaks.
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>
Hi,
the `vm-implied` fuzzer panics when executing this testcase:
```javascript
try {
new function() {
while (this) {}
}();
} catch {
}
```
`internal error: entered unreachable code: The NoInstructionsRemain native error cannot be converted to an opaque type`
Handling the `NoInstructionsRemain` error upfront instead of going through the VM exception handling logic seems to work.
<!---
Thank you for contributing to Boa! Please fill out the template below, and remove or add any
information as you feel necessary.
--->
Adding a feature flag to the console import in `builtins`. I think this should fix the failing action on the `Upload docs and run benchmarks` step
This Pull Request changes the following:
- Implement binary `in` operation with private names.
- Adding a separate `BinaryInPrivate` expression in addition to the existing `Binary` expression seems like the best way to implement this in a typesafe manner. Other methods like adding an enum for the `Binary` lhs result in having to make assertions.
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.
This Pull Request changes the following:
- Move postfix/prefix increment and decrement operations from the `Unary` expression to a new `Update` expression.
- Add a special type for the `Update` expression target as it is very limited in comparision to an `Unary` target.
- This makes bytecode compilation more typesafe for these operations and removes syntax errors from the bytecompiler without introducing panics (see #1907).
Another change extracted from #2411.
This PR changes the following:
- Improves our identifier parsing with a new `Identifier` parser that unifies parsing for `IdentifierReference`, `BindingIdentifier` and `LabelIdentifier`.
- Slightly improves some error messages.
- Extracts our manual initialization of static `Sym`s with a new `static_syms` proc macro.
- Adds `set_module_mode` and `module_mode` to the cursor to prepare for modules.
Bumps [toml](https://github.com/toml-rs/toml) from 0.7.0 to 0.7.1.
<details>
<summary>Commits</summary>
<ul>
<li><a href="9a80a7878f"><code>9a80a78</code></a> chore: Release</li>
<li><a href="e90b292847"><code>e90b292</code></a> chore: Update release process</li>
<li><a href="410ee66dba"><code>410ee66</code></a> docs: Update changelog</li>
<li><a href="03bd12786f"><code>03bd127</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/toml-rs/toml/issues/502">#502</a> from robjtede/doc-features</li>
<li><a href="f2e6c0efc8"><code>f2e6c0e</code></a> docs(toml): display feature guarded items on docs.rs</li>
<li><a href="2d728d4b00"><code>2d728d4</code></a> docs(toml-edit): display feature guarded items on docs.rs</li>
<li><a href="5df84a5cd4"><code>5df84a5</code></a> docs(toml-datetime): display feature guarded items on docs.rs</li>
<li><a href="08ad143a50"><code>08ad143</code></a> docs(serde-spanned): display feature guarded items on docs.rs</li>
<li><a href="55d44e73c6"><code>55d44e7</code></a> docs(toml): Point people to 'toml_edit'</li>
<li>See full diff in <a href="https://github.com/toml-rs/toml/compare/toml-v0.7.0...toml-v0.7.1">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=toml&package-manager=cargo&previous-version=0.7.0&new-version=0.7.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
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 [toml](https://github.com/toml-rs/toml) from 0.6.0 to 0.7.0.
<details>
<summary>Commits</summary>
<ul>
<li><a href="57c9bb07f4"><code>57c9bb0</code></a> chore: Release</li>
<li><a href="f0cc3febe0"><code>f0cc3fe</code></a> chore: Bump versions</li>
<li><a href="df34a73f37"><code>df34a73</code></a> docs: Update changelog</li>
<li><a href="a2984042b2"><code>a298404</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/toml-rs/toml/issues/500">#500</a> from epage/easy</li>
<li><a href="9bbb831b3f"><code>9bbb831</code></a> fix(ser)!: Remove deprecated tables_last function</li>
<li><a href="86280d7eb9"><code>86280d7</code></a> fix(ser)!: Remove deprecated pretty functions</li>
<li><a href="656ec56a16"><code>656ec56</code></a> fix(edit)!: Remove deprecated Error::line_col function</li>
<li><a href="688edee696"><code>688edee</code></a> fix(toml)!: Remove deprecated Error::line_col function</li>
<li><a href="10ea227818"><code>10ea227</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/toml-rs/toml/issues/499">#499</a> from epage/signed-offset</li>
<li><a href="6f0187eef5"><code>6f0187e</code></a> style: Make clippy happy</li>
<li>Additional commits viewable in <a href="https://github.com/toml-rs/toml/compare/toml-v0.6.0...toml-v0.7.0">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=toml&package-manager=cargo&previous-version=0.6.0&new-version=0.7.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [test262](https://github.com/tc39/test262) from `ac1c354` to `ad034f3`.
<details>
<summary>Commits</summary>
<ul>
<li><a href="ad034f3230"><code>ad034f3</code></a> Update ArrayBuffer transfer feature flag</li>
<li><a href="59d5a6906d"><code>59d5a69</code></a> Update ArrayBuffer transfer tests for preserving resizability</li>
<li>See full diff in <a href="ac1c3546c3...ad034f3230">compare view</a></li>
</ul>
</details>
<br />
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>
Extracted from #2411 to reduce its size a bit.
This PR:
- Renames `Identifier` to `IdentifierName`, which is the name stated in the spec.
- Renames the utility function `check_parser` to `check_script_parser` to prepare for modules.
- Adds some missing `#[inline]` and rewrites some patterns.
This Pull Request changes the following:
- Add early errors for escaped characters in object and class setters and getters.
- Add early errors for escaped characters in class `static`.
- Add early errors for escaped characters in `new.target`.
- Add early errors for legacy octal/decial escapes that are used in string literals before a `"use strict"` directive.
Bumps [num_enum](https://github.com/illicitonion/num_enum) from 0.5.7 to 0.5.9.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/illicitonion/num_enum/commits/0.5.9">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=num_enum&package-manager=cargo&previous-version=0.5.7&new-version=0.5.9)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
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>
<!---
Thank you for contributing to Boa! Please fill out the template below, and remove or add any
information as you feel necessary.
--->
This Pull Request enables support for `no_std` targets on some of our sub-crates. I intentionally left out `boa_ast` and `boa_cli` because they're the largest crates we have after `boa_engine`.
`boa_gc` is a monster on its own, because we'll need to design a `no_std` multithreaded GC.
Anyways, this changes the following:
- Adds support for `no_std` on `boa_unicode`.
- Adds support for `no_std` on `boa_profiler`.
- Adds support for `no_std` on `boa_interner`.
- Adds support for `no_std` on `boa_icu_provider`.
Currently the compilation of assignment operators leads to a double object property access, both on the get and set access.
While this refactor adds special access handling instead of using the existing `access_set` and `access_get` functions, it fixes the double access and should also make the resulting code more efficient.
Bumps [toml](https://github.com/toml-rs/toml) from 0.5.11 to 0.6.0.
<details>
<summary>Commits</summary>
<ul>
<li><a href="cf5b7d05fd"><code>cf5b7d0</code></a> chore: Release</li>
<li><a href="bd4cd85795"><code>bd4cd85</code></a> chore: Release</li>
<li><a href="607c06ba3a"><code>607c06b</code></a> docs: Update changelog</li>
<li><a href="b3e03896fb"><code>b3e0389</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/toml-rs/toml/issues/487">#487</a> from epage/fix</li>
<li><a href="2069c721a9"><code>2069c72</code></a> docs(toml): Help people serialize/deserialize values</li>
<li><a href="44d2ee8e1a"><code>44d2ee8</code></a> docs(toml): Update stray reference to Value</li>
<li><a href="eb2f20aff3"><code>eb2f20a</code></a> docs(toml): Remove ignore warning icon</li>
<li><a href="a4fd0b1611"><code>a4fd0b1</code></a> docs(toml): Update map documentation</li>
<li><a href="709dd35ca4"><code>709dd35</code></a> docs(toml): Mirror serde_json in inlining in root</li>
<li><a href="226639c4ec"><code>226639c</code></a> fix(toml)!: <code>toml!</code> now generates a <code>Table</code></li>
<li>Additional commits viewable in <a href="https://github.com/toml-rs/toml/compare/toml-v0.5.11...toml-v0.6.0">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=toml&package-manager=cargo&previous-version=0.5.11&new-version=0.6.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [test262](https://github.com/tc39/test262) from `2ac0d3c` to `ac1c354`.
<details>
<summary>Commits</summary>
<ul>
<li><a href="ac1c3546c3"><code>ac1c354</code></a> Fix argument in example calls to assert.throwsAsync()</li>
<li><a href="7f3558376d"><code>7f35583</code></a> Fix typo in rfcs/async-helpers.md</li>
<li><a href="edd1e6d25f"><code>edd1e6d</code></a> Update rfcs/async-helpers to reflect the pre-final comment consensus API for ...</li>
<li><a href="a776c8a948"><code>a776c8a</code></a> Resolve → Fulfill</li>
<li><a href="29fbe30eda"><code>29fbe30</code></a> Fix mistake in dynamic import test example</li>
<li><a href="d9dd1e8d03"><code>d9dd1e8</code></a> Add pull request link</li>
<li><a href="1f0702b72a"><code>1f0702b</code></a> RFC: Async Helpers</li>
<li>See full diff in <a href="2ac0d3c47b...ac1c3546c3">compare view</a></li>
</ul>
</details>
<br />
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 [arbitrary](https://github.com/rust-fuzz/arbitrary) from 1.2.2 to 1.2.3.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/rust-fuzz/arbitrary/blob/main/CHANGELOG.md">arbitrary's changelog</a>.</em></p>
<blockquote>
<h2>1.2.3</h2>
<p>Released 2023-01-20.</p>
<h3>Fixed</h3>
<ul>
<li>The <code>derive(Arbitrary)</code> will now annotate the generated <code>impl</code>s with a <code>#[automatically_derived]</code>
attribute to indicate to e.g. clippy that lints should not fire for the code within the derived
implementation.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/rust-fuzz/arbitrary/commits/v1.2.3">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=arbitrary&package-manager=cargo&previous-version=1.2.2&new-version=1.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>
Our CI broke because the new version of `tarpaulin` released more assets than the default 'travis.tar.gz'. We'll have to pin our version of `tarpaulin` until the issue gets fixed.
Co-authored-by: raskad <32105367+raskad@users.noreply.github.com>
This Pull Request changes the following:
- Remove wrong early errors for static class methods with the computed property name `prototype`.
- Switch static class method definition opcodes from `__define_own_property__` to `define_property_or_throw` to correctly throw runtime errors on property redefinitions.
When compiling a statement list we need to make sure that the last expression that returns a value is compiled with the `use_expr` flag. Currently we set `use_expr` on the last statement of the statement list. This leads to incorrect returns when the last statement does not return a value. This PR fixes this by looking up the last value returning expression in a statement list and setting the `use_expr` appropriately.
This PR changes the following:
- Modifies `EphemeronBox` to be more akin to `GcBox`, with its own header, roots and markers. This also makes it more similar to [Racket's](https://docs.racket-lang.org/reference/ephemerons.html) implementation.
- Removes `EPHEMERON_QUEUE`.
- Ephemerons are now tracked on a special `weak_start` linked list, instead of `strong_start` which is where all other GC boxes live.
- Documents all unsafe blocks.
- Documents our current garbage collection algorithm. I hope this'll clarify a bit what exactly are we doing on every garbage collection.
- Renames/removes some functions.
This Pull Request hanges the following:
- Add early errors for invalid `yield` and `await` usage in function parameters.
- Add missing function types to hoistable ordering.
- Do not attempt to parse `async` with a following line terminator as an async function.
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>
Bumps [toml](https://github.com/toml-rs/toml) from 0.5.10 to 0.5.11.
<details>
<summary>Commits</summary>
<ul>
<li><a href="0c2004aaa5"><code>0c2004a</code></a> chore: Release</li>
<li><a href="22660a5279"><code>22660a5</code></a> docs: Update changelog</li>
<li><a href="8395fd159b"><code>8395fd1</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/toml-rs/toml/issues/476">#476</a> from epage/deprecated</li>
<li><a href="d8dfb1cffe"><code>d8dfb1c</code></a> fix(toml): Deprecate 'Deserializer::end'</li>
<li><a href="266fa47a2e"><code>266fa47</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/toml-rs/toml/issues/393">#393</a> from epage/compat</li>
<li><a href="8ad0d37d2c"><code>8ad0d37</code></a> fix(toml): Deprecate compat hacks</li>
<li>See full diff in <a href="https://github.com/toml-rs/toml/compare/toml-v0.5.10...toml-v0.5.11">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=toml&package-manager=cargo&previous-version=0.5.10&new-version=0.5.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>
Bumps [serde_yaml](https://github.com/dtolnay/serde-yaml) from 0.9.16 to 0.9.17.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/dtolnay/serde-yaml/releases">serde_yaml's releases</a>.</em></p>
<blockquote>
<h2>0.9.17</h2>
<ul>
<li>Improve Debug representation of some error messages</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="1cf6e8ebde"><code>1cf6e8e</code></a> Release 0.9.17</li>
<li><a href="0d9e6c756b"><code>0d9e6c7</code></a> Improve formatting of single quote in Debug</li>
<li><a href="3ff550655d"><code>3ff5506</code></a> Speed up cargo fuzz CI job</li>
<li><a href="8261d9327d"><code>8261d93</code></a> Lint derive_hash_xor_eq renamed to derived_hash_with_manual_eq</li>
<li><a href="bb17d5ee8f"><code>bb17d5e</code></a> Preserve is_human_readable setting of wrapped de/serializer</li>
<li><a href="ecdb5bf2ec"><code>ecdb5bf</code></a> Prevent actions duplication on noop merge commits</li>
<li><a href="aed75edf52"><code>aed75ed</code></a> Sync license text with rust-lang repos</li>
<li>See full diff in <a href="https://github.com/dtolnay/serde-yaml/compare/0.9.16...0.9.17">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_yaml&package-manager=cargo&previous-version=0.9.16&new-version=0.9.17)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
<!---
Thank you for contributing to Boa! Please fill out the template below, and remove or add any
information as you feel necessary.
--->
This Pull Request addresses #2295, and another case that I came across when I was adding `Break` to the `ByteCompiler`
I did have a question that came up during this regarding the spec. We currently don't implement the [BreakableStatement](https://tc39.es/ecma262/#prod-BreakableStatement). Any thoughts on whether we should be? Especially since `BreakableStatement` seems to be a bit of a inaccurate since `LabelledStatement` is breakable too.
It changes the following:
- Moves handling of label jump out of `compile_block` and into `compile_labelled`.
- Adds a couple more tests to keep track of `LabelledStatement` breaks.
Co-authored-by: Ness <Kevin.Ness@Staples.com>
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.
The section about `Symbol` on the [specification](https://tc39.es/ecma262/#sec-ecmascript-language-types-symbol-type) says:
> The Symbol type is the set of all non-String values that may be used as the key of an Object property ([6.1.7](https://tc39.es/ecma262/#sec-object-type)).
Each possible Symbol value is unique and immutable.
Our previous implementation of `JsSymbol` used `Rc` and a thread local `Cell<usize>`. However, this meant that two different symbols in two different threads could share the same hash, making symbols not unique.
Also, the [GlobalSymbolRegistry](https://tc39.es/ecma262/#table-globalsymbolregistry-record-fields) is meant to be shared by all realms, including realms that are not in the same thread as the main one; this forces us to replace our current thread local global symbol registry with a thread-safe one that uses `DashMap` for concurrent access. However, the global symbol registry uses `JsString`s as keys and values, which forces us to either use `Vec<u16>` instead (wasteful and needs to allocate to convert to `JsString` on each access) or make `JsString` thread-safe with an atomic counter. For this reason, I implemented the second option.
This PR changes the following:
- Makes `JsSymbol` thread-safe by using Arc instead of Rc, and making `SYMBOL_HASH_COUNT` an `AtomicU64`.
- ~~Makes `JsString` thread-safe by using `AtomicUsize` instead of `Cell<usize>` for its ref count.~~ EDIT: Talked with @jasonwilliams and we decided to use `Box<[u16]>` for the global registry instead, because this won't penalize common usage of `JsString`, which is used a LOT more than `JsSymbol`.
- Makes the `GLOBAL_SYMBOL_REGISTRY` truly global, using `DashMap` as our global map that is shared by all threads.
- Replaces some thread locals with thread-safe alternatives, such as static arrays and static indices.
- Various improvements to all related code for this.
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.49 to 1.0.50.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/dtolnay/proc-macro2/releases">proc-macro2's releases</a>.</em></p>
<blockquote>
<h2>1.0.50</h2>
<ul>
<li>Implement Hash for proc_macro2::LineColumn (<a href="https://github-redirect.dependabot.com/dtolnay/proc-macro2/issues/362">#362</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="94c7519134"><code>94c7519</code></a> Release 1.0.50</li>
<li><a href="f01da432fa"><code>f01da43</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/dtolnay/proc-macro2/issues/362">#362</a> from dtolnay/hashlinecolumn</li>
<li><a href="d4c564b836"><code>d4c564b</code></a> Implement Hash for LineColumn</li>
<li><a href="92a029553b"><code>92a0295</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/dtolnay/proc-macro2/issues/361">#361</a> from dtolnay/linecolumn</li>
<li><a href="a4be9825bc"><code>a4be982</code></a> Deduplicate implementations of LineColumn</li>
<li><a href="9924b79370"><code>9924b79</code></a> Prevent actions duplication on noop merge commits</li>
<li><a href="37e89e109c"><code>37e89e1</code></a> Sync license text with rust-lang repos</li>
<li><a href="8779f4c658"><code>8779f4c</code></a> Update ui test suite to nightly-2022-12-30</li>
<li>See full diff in <a href="https://github.com/dtolnay/proc-macro2/compare/1.0.49...1.0.50">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=proc-macro2&package-manager=cargo&previous-version=1.0.49&new-version=1.0.50)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
This Pull Request changes the following:
- Do not skip consecutive semicolons while parsing a `StatementList`.
- Expect semicolon in `LexicalDeclaration` and add an special case for `for` loop parsing.
- Adjust `StatementList` compilation to skip empty statements.
- Adjust/add tests to make sure consecutive semicolons are correctly parsed.
Bumps [test262](https://github.com/tc39/test262) from `e1048d0` to `2ac0d3c`.
<details>
<summary>Commits</summary>
<ul>
<li><a href="2ac0d3c47b"><code>2ac0d3c</code></a> Final batch of CLDR backwards-compatibility fixes</li>
<li><a href="2c599b020e"><code>2c599b0</code></a> Fix more 402 Temporal tests broken by ICU72/CLDR42</li>
<li>See full diff in <a href="e1048d0aff...2ac0d3c47b">compare view</a></li>
</ul>
</details>
<br />
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [clap](https://github.com/clap-rs/clap) from 4.0.32 to 4.1.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/releases">clap's releases</a>.</em></p>
<blockquote>
<h2>v4.1.1</h2>
<h2>[4.1.1] - 2023-01-14</h2>
<h3>Fixes</h3>
<ul>
<li><em>(error)</em> Small softening attempt for "unexpected argument" error</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's changelog</a>.</em></p>
<blockquote>
<h2>[4.1.1] - 2023-01-14</h2>
<h3>Fixes</h3>
<ul>
<li><em>(error)</em> Small softening attempt for "unexpected argument" error</li>
</ul>
<h2>[4.1.0] - 2023-01-13</h2>
<h3>Compatibility</h3>
<p>MSRV changed to 1.64.0</p>
<p>For apps with custom <code>--help</code> and <code>--version</code> flags:</p>
<ul>
<li>Descriptions for <code>--help</code> and <code>--version</code> changed</li>
</ul>
<p>When apps have errors imitating clap's error style:</p>
<ul>
<li>Error message style was changed, including
<ul>
<li>Moving away from "did you mean" to tips</li>
<li>Leading letter is lower case</li>
<li>"For more" added some punctuation</li>
</ul>
</li>
</ul>
<h3>Features</h3>
<ul>
<li><code>ArgMatches::get_occurrences</code> support for argument values to be grouped by their occurrence</li>
</ul>
<h3>Fixes</h3>
<ul>
<li><em>(derive)</em> Allow <code>upgrade_from</code> when arguments / subcommands are explicitly marked as required</li>
<li><em>(help)</em> Try be more clearer and succinct with <code>--help</code> and <code>--version</code> (also helps with overflow)</li>
<li><em>(error)</em> Try to be more clearer and succinct with error messages</li>
<li><em>(error)</em> Officially adopt <a href="https://rustc-dev-guide.rust-lang.org/diagnostics.html#suggestion-style-guide">an error style guide</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="74a82d7085"><code>74a82d7</code></a> chore: Release</li>
<li><a href="06f392a0d2"><code>06f392a</code></a> docs: Update changelog</li>
<li><a href="4d913fa4d1"><code>4d913fa</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4639">#4639</a> from epage/error</li>
<li><a href="162a556dba"><code>162a556</code></a> fix(error): Try to soften unexpected argument/value errors</li>
<li><a href="34d856b449"><code>34d856b</code></a> chore: Release</li>
<li><a href="889ca7a537"><code>889ca7a</code></a> chore: Bump versions for 4.1</li>
<li><a href="2bafb9b75d"><code>2bafb9b</code></a> docs(contrib): Define a compatibility policy for help/error output</li>
<li><a href="a41ca2edb0"><code>a41ca2e</code></a> docs: Update changelog</li>
<li><a href="523adc20e7"><code>523adc2</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4635">#4635</a> from epage/stablize</li>
<li><a href="b4f111a978"><code>b4f111a</code></a> feat: Stablize <code>ArgMatches::get_occurrences</code></li>
<li>Additional commits viewable in <a href="https://github.com/clap-rs/clap/compare/v4.0.32...v4.1.1">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.0.32&new-version=4.1.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
<!---
Thank you for contributing to Boa! Please fill out the template below, and remove or add any
information as you feel necessary.
--->
Some small changes to the VM with the hopes of making it a bit more clear and concise.
It changes the following:
- Changes `code` to `code_block` and `code` to `bytecode` in `CallFrame` and `CodeBlock`, respectively.
- Adds some creation methods to `CallFrame`.
- Implements `Default` for `Vm`.
This Pull Request fixes various bugs related to classes.
The biggest changes are:
- Changed private names to be unique across multiple classes.
- Changed private name resolution to work via a visitor after a class is parsed. The way class early errors are defined makes it impossible to perform private name resolution while parsing.
- Added function names to class methods.
- Added class name binding to method function environments.
- Separated opcodes for `static` and non-`static` class method definitions to make the above operations possible.
There are still some bugs and further issues with classes but this is already a lot.