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 [sys-locale](https://github.com/1Password/sys-locale) from 0.2.4 to 0.3.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/1Password/sys-locale/releases">sys-locale's releases</a>.</em></p>
<blockquote>
<h2>v0.3.0</h2>
<p>See <a href="https://github.com/1Password/sys-locale/blob/main/CHANGELOG.md#030---2023-04-04">the changelog</a> for details.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/1Password/sys-locale/blob/main/CHANGELOG.md">sys-locale's changelog</a>.</em></p>
<blockquote>
<h2>[0.3.0] - 2023-04-04</h2>
<h3>Changed</h3>
<ul>
<li>The crate now only uses <code>wasm-bindgen</code> when targeting WebAssembly on the web.
Use the new <code>js</code> feature to target the web.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>The crate now compiles for unsupported platforms.</li>
<li>Cleaned up typos and grammar in README.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="2fc3bb56e8"><code>2fc3bb5</code></a> Release 0.3.0</li>
<li><a href="36e9c9590a"><code>36e9c95</code></a> Clarify WASM platform support further (<a href="https://redirect.github.com/1Password/sys-locale/issues/20">#20</a>)</li>
<li><a href="67b2a5c7cc"><code>67b2a5c</code></a> Fix support for WebAssembly (<a href="https://redirect.github.com/1Password/sys-locale/issues/18">#18</a>)</li>
<li><a href="4cf74aa047"><code>4cf74aa</code></a> Improve README.md library description</li>
<li>See full diff in <a href="https://github.com/1Password/sys-locale/compare/v0.2.4...v0.3.0">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sys-locale&package-manager=cargo&previous-version=0.2.4&new-version=0.3.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [num_enum](https://github.com/illicitonion/num_enum) from 0.5.11 to 0.6.0.
<details>
<summary>Commits</summary>
<ul>
<li><a href="d5662e436f"><code>d5662e4</code></a> Update to edition 2021</li>
<li><a href="b6fc9f00c6"><code>b6fc9f0</code></a> Specify MSRV</li>
<li><a href="df815d982f"><code>df815d9</code></a> Specify exact dep on derive crate</li>
<li><a href="425277bf57"><code>425277b</code></a> Reduce minimum syn version to 2 (<a href="https://redirect.github.com/illicitonion/num_enum/issues/114">#114</a>)</li>
<li><a href="9bc84b1c12"><code>9bc84b1</code></a> Update syn to v2 (<a href="https://redirect.github.com/illicitonion/num_enum/issues/113">#113</a>)</li>
<li><a href="e02abdcaca"><code>e02abdc</code></a> UnsafeFromPrimitive ignores default/alternatives (<a href="https://redirect.github.com/illicitonion/num_enum/issues/112">#112</a>)</li>
<li><a href="9b4642e5a7"><code>9b4642e</code></a> Make UnsafeFromPrimitive a trait (<a href="https://redirect.github.com/illicitonion/num_enum/issues/79">#79</a>)</li>
<li><a href="c90528c5b9"><code>c90528c</code></a> Bump to 0.6.0</li>
<li><a href="0e2d006daa"><code>0e2d006</code></a> TryFromPrimitive ignores default attributes</li>
<li>See full diff in <a href="https://github.com/illicitonion/num_enum/compare/0.5.11...0.6.0">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=num_enum&package-manager=cargo&previous-version=0.5.11&new-version=0.6.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [spin](https://github.com/mvdnes/spin-rs) from 0.9.7 to 0.9.8.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/mvdnes/spin-rs/blob/master/CHANGELOG.md">spin's changelog</a>.</em></p>
<blockquote>
<h1>[0.9.8] - 2023-04-03</h1>
<h3>Fixed</h3>
<ul>
<li>Unsoundness in <code>Once::try_call_once</code> caused by an <code>Err(_)</code> result</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/mvdnes/spin-rs/commits">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=spin&package-manager=cargo&previous-version=0.9.7&new-version=0.9.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)
You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/boa-dev/boa/network/alerts).
</details>
This PR resolves the failing CI in #2777
It changes the following:
- Adds `json-parse-with-source` feature to `boa_tester`
- Bumps `test262` module to `be0abd9`
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.12 to 2.0.13.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/dtolnay/syn/releases">syn's releases</a>.</em></p>
<blockquote>
<h2>2.0.13</h2>
<ul>
<li>Improve spans of Expr::Field parsed from a float Literal (<a href="https://redirect.github.com/dtolnay/syn/issues/1433">#1433</a>, <a href="https://redirect.github.com/dtolnay/syn/issues/1436">#1436</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="ac5f15d09a"><code>ac5f15d</code></a> Release 2.0.13</li>
<li><a href="856c5ddcf0"><code>856c5dd</code></a> Pull in proc-macro2 1.0.55's Literal span fixes</li>
<li><a href="9aae2b459c"><code>9aae2b4</code></a> Merge pull request <a href="https://redirect.github.com/dtolnay/syn/issues/1436">#1436</a> from dtolnay/floatsubspan</li>
<li><a href="b0861b99a1"><code>b0861b9</code></a> Ignore range_plus_one pedantic clippy lint</li>
<li><a href="3b7c555397"><code>3b7c555</code></a> Improve spans of Expr::Field parsed from a float Literal</li>
<li><a href="b80c69ac13"><code>b80c69a</code></a> Link to issues tracking unimplemented syntax</li>
<li><a href="80d4248765"><code>80d4248</code></a> Improve stderr filtering to handle compiletest's "revisions" mechanism</li>
<li><a href="c001c26595"><code>c001c26</code></a> Pass only .rs file paths to for_each_rust_file closure</li>
<li><a href="f7b4ef3608"><code>f7b4ef3</code></a> Share repo walkdir logic between the 2 repo walk tests</li>
<li><a href="ced12d42f7"><code>ced12d4</code></a> Update "rust" repo benchmark to parse compiler and standard library only</li>
<li>Additional commits viewable in <a href="https://github.com/dtolnay/syn/compare/2.0.12...2.0.13">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=syn&package-manager=cargo&previous-version=2.0.12&new-version=2.0.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 [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.54 to 1.0.56.
<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.56</h2>
<ul>
<li>Circumvent clippy::octal_escapes lint inside generated string and byte-string literals (<a href="https://redirect.github.com/dtolnay/proc-macro2/issues/363">#363</a>, <a href="https://redirect.github.com/dtolnay/proc-macro2/issues/380">#380</a>)</li>
<li>Provide RefUnwindSafe impls for compilers older than 1.58 (<a href="https://redirect.github.com/dtolnay/proc-macro2/issues/382">#382</a>)</li>
</ul>
<h2>1.0.55</h2>
<ul>
<li>Set a meaningful <code>Span</code> for literals produced via the <code>FromStr</code> impl of <code>Literal</code> (<a href="https://redirect.github.com/dtolnay/proc-macro2/issues/378">#378</a>)</li>
<li>Implement <code>Literal::subspan</code> in non-macro contexts when "span-locations" feature is enabled (<a href="https://redirect.github.com/dtolnay/proc-macro2/issues/379">#379</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="72ee0b3b05"><code>72ee0b3</code></a> Release 1.0.56</li>
<li><a href="ddf769275b"><code>ddf7692</code></a> Merge pull request <a href="https://redirect.github.com/dtolnay/proc-macro2/issues/382">#382</a> from dtolnay/refunwindsafe</li>
<li><a href="cda93c5eef"><code>cda93c5</code></a> Ensure data structures are RefUnwindSafe on all versions of Rust</li>
<li><a href="e82b0749f8"><code>e82b074</code></a> Merge pull request <a href="https://redirect.github.com/dtolnay/proc-macro2/issues/381">#381</a> from dtolnay/escape0</li>
<li><a href="7efc1c4db2"><code>7efc1c4</code></a> Implement consistent behavior for Literal::string on all versions of Rust</li>
<li><a href="9c092a3284"><code>9c092a3</code></a> Merge pull request <a href="https://redirect.github.com/dtolnay/proc-macro2/issues/380">#380</a> from dtolnay/octalescape</li>
<li><a href="6c216275bc"><code>6c21627</code></a> Fix literal_string test on rustc older than 1.61</li>
<li><a href="5d3e58b9c6"><code>5d3e58b</code></a> Ignore octal_escapes clippy lint in test</li>
<li><a href="57b4db1f78"><code>57b4db1</code></a> Circumvent clippy::octal_escapes lint in generated literals</li>
<li><a href="d827973a8d"><code>d827973</code></a> Add regression test of \0 escaping for issue 363</li>
<li>Additional commits viewable in <a href="https://github.com/dtolnay/proc-macro2/compare/1.0.54...1.0.56">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.54&new-version=1.0.56)](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 [syn](https://github.com/dtolnay/syn) from 2.0.11 to 2.0.12.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/dtolnay/syn/releases">syn's releases</a>.</em></p>
<blockquote>
<h2>2.0.12</h2>
<ul>
<li>Refer to <code>compile_error!</code> by absolute path in token stream produced by syn::Error::to_compile_error (<a href="https://redirect.github.com/dtolnay/syn/issues/1431">#1431</a>, thanks <a href="https://github.com/smoelius"><code>@smoelius</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="42e86861c5"><code>42e8686</code></a> Release 2.0.12</li>
<li><a href="cc7cf9914e"><code>cc7cf99</code></a> Absolute path to refer to core crate in compile_error expansion</li>
<li><a href="4d1fd26229"><code>4d1fd26</code></a> Merge pull request 1431 from smoelius/compile-error</li>
<li><a href="07601a83cc"><code>07601a8</code></a> Use <code>core</code> instead of <code>std</code></li>
<li><a href="710908453b"><code>7109084</code></a> Qualify <code>compile_error!</code></li>
<li>See full diff in <a href="https://github.com/dtolnay/syn/compare/2.0.11...2.0.12">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=syn&package-manager=cargo&previous-version=2.0.11&new-version=2.0.12)](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 closes#1975. It's still a work in progress, but tries to go in that direction.
It changes the following:
- Adds a new `TryFromJs` trait, that can be derived using a new `boa_derive` crate.
- Adds a new `try_js_into()` function that, similarly to the standard library `TryInto` trait
Things to think about:
- Should the `boa_derive` crate be re-exported in `boa_engine` using a `derive` feature, similar to how it's done in `serde`?
- The current implementation only converts perfectly valid values. So, if we try to convert a big integer into an `i8`, or any floating point number to an `f32`. So, you cannot derive `TryFromJs` for structures that contain an `f32` for example (you can still manually implement the trait, though, and decide in favour of a loss of precision). Should we also provide some traits for transparent loss of precision?
- Currently, you cannot convert between types, so if the JS struct has an integer, you cannot cast it to a boolean, for example. Should we provide a `TryConvertJs` trait, for example to force conversions?
- Currently we only have basic types and object conversions. Should add `Array` to `Vec` conversion, for example, right? Should we also add `TypedArray` conversions? What about `Map` and `Set`? Does this step over the fine grained APIs that we were creating?
Note that this still requires a bunch of documentation, tests, and validation from the dev team and from the users that requested this feature. I'm particularly interested in @lastmjs's thoughts on this API.
I already added an usage example in `boa_examples/src/bin/derive.rs`.
Co-authored-by: jedel1043 <jedel0124@gmail.com>
Currently we have no explicit representation for parenthesized expressions which makes some behaviours impossible to detect. A bonus is that we can now turn AST that contains parenthesized expressions back to code.
This Pull Request changes the following:
- Add an AST node for parenthesized expressions.
- Adjust some conversions and checks to "ignore"/"expand" parenthesized expressions.
- Fix some tests that had parenthesized expressions.
Bumps [webpack](https://github.com/webpack/webpack) from 5.76.3 to 5.77.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/webpack/webpack/releases">webpack's releases</a>.</em></p>
<blockquote>
<h2>v5.77.0</h2>
<h2>New Features</h2>
<ul>
<li>Add a new output option, <code>output.workerPublicPath</code> by <a href="https://github.com/thomastay"><code>@thomastay</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/16671">webpack/webpack#16671</a></li>
</ul>
<h2>Developer Experience</h2>
<ul>
<li>Improve <code>resolve.extensions</code> error message to suggest when <code>"."</code> is missing before the extension by <a href="https://github.com/snitin315"><code>@snitin315</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/16807">webpack/webpack#16807</a></li>
</ul>
<h2>Contributor Experience</h2>
<ul>
<li>Enable GitHub Copilot for PR's into default Pull Request Template by <a href="https://github.com/TheLarkInn"><code>@TheLarkInn</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/16881">webpack/webpack#16881</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/thomastay"><code>@thomastay</code></a> made their first contribution in <a href="https://redirect.github.com/webpack/webpack/pull/16671">webpack/webpack#16671</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/webpack/webpack/compare/v5.76.3...v5.77.0">https://github.com/webpack/webpack/compare/v5.76.3...v5.77.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="263f291890"><code>263f291</code></a> 5.77.0</li>
<li><a href="ae9f0e065a"><code>ae9f0e0</code></a> Merge pull request <a href="https://redirect.github.com/webpack/webpack/issues/16881">#16881</a> from webpack/feature/beta-test-github-template-copi...</li>
<li><a href="fdcdc2d8c7"><code>fdcdc2d</code></a> Pilot the Copilot for PR in default PR template, retain original template</li>
<li><a href="a3ab4e78b6"><code>a3ab4e7</code></a> Merge pull request <a href="https://redirect.github.com/webpack/webpack/issues/16807">#16807</a> from snitin315/improve-resolve-extention-error</li>
<li><a href="d9604e9003"><code>d9604e9</code></a> refactor: move RegExp to a variable and use RegExp.prototype.test()</li>
<li><a href="eac5d8cacb"><code>eac5d8c</code></a> Merge pull request <a href="https://redirect.github.com/webpack/webpack/issues/16671">#16671</a> from thomastay/main</li>
<li><a href="8c6a1a47cd"><code>8c6a1a4</code></a> revert weird space issues part 2</li>
<li><a href="f33c2b07d0"><code>f33c2b0</code></a> Merge branch 'webpack:main' into main</li>
<li><a href="2cad865c43"><code>2cad865</code></a> change hash</li>
<li><a href="628125f69d"><code>628125f</code></a> revert weird space issues</li>
<li>Additional commits viewable in <a href="https://github.com/webpack/webpack/compare/v5.76.3...v5.77.0">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=webpack&package-manager=npm_and_yarn&previous-version=5.76.3&new-version=5.77.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.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>
Most objects don't have indexed properties, and those who have, have dense properties, this PR uses `ThinVec` to reduce the size of dense properties.
It changes the following:
- Trim `16` bytes from `IndexedProperties`, this reduces all objects size
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
`boa_tester` wasn't deserializing `SpecEdition` correcly. This was because the attribute `serde(untagged)` just removes the u8 tag instead of trying to deserialize as a number. This PR fixes this using the `serde_repr` crate.
This needs #2763 to be merged for it to pass CI.
This Pull Request fixes/closes #2672.
It changes the following:
- Get the super constructor and the new target before executing arguments in super calls.
This Pull Request closes#2687.
It changes the following:
- Adds a `JsPromise` wrapper to manipulate promises from Rust.
- Cleans up the `promise` module to ease the integration of `JsPromise` with it.
cc @lastmjs
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 [synstructure](https://github.com/mystor/synstructure) from 0.12.6 to 0.13.0.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/mystor/synstructure/commits">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=synstructure&package-manager=cargo&previous-version=0.12.6&new-version=0.13.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Co-authored-by: jedel1043 <jedel0124@gmail.com>
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.158 to 1.0.159.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/serde/releases">serde's releases</a>.</em></p>
<blockquote>
<h2>v1.0.159</h2>
<ul>
<li>Accept empty #[serde()] attribute (<a href="https://redirect.github.com/serde-rs/serde/issues/2422">#2422</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="d6de911855"><code>d6de911</code></a> Release 1.0.159</li>
<li><a href="04af32230e"><code>04af322</code></a> Merge pull request <a href="https://redirect.github.com/serde-rs/serde/issues/2422">#2422</a> from dtolnay/emptyattr</li>
<li><a href="4cb8d079f8"><code>4cb8d07</code></a> Accept empty #[serde()] attribute</li>
<li><a href="6ab55a1e52"><code>6ab55a1</code></a> Add regression test for issue 2415</li>
<li><a href="acfd19cb46"><code>acfd19c</code></a> Release serde_derive_internals 0.27.0</li>
<li>See full diff in <a href="https://github.com/serde-rs/serde/compare/v1.0.158...v1.0.159">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde&package-manager=cargo&previous-version=1.0.158&new-version=1.0.159)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.94 to 1.0.95.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/json/releases">serde_json's releases</a>.</em></p>
<blockquote>
<h2>v1.0.95</h2>
<ul>
<li>Preserve f32 precision when serializing f32 -> serde_json::Value -> JSON string in "arbitrary_precision" mode (<a href="https://redirect.github.com/serde-rs/json/issues/1004">#1004</a>, <a href="https://redirect.github.com/serde-rs/json/issues/1005">#1005</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="4ea38c4001"><code>4ea38c4</code></a> Release 1.0.95</li>
<li><a href="731886c08e"><code>731886c</code></a> Merge pull request <a href="https://redirect.github.com/serde-rs/json/issues/1005">#1005</a> from dtolnay/f32cast</li>
<li><a href="c9bff92c1f"><code>c9bff92</code></a> Fix PartialEq between Value and f32</li>
<li><a href="06f3443c6e"><code>06f3443</code></a> Eliminate f32-to-f64 casting in arbitrary_precision mode</li>
<li><a href="b0990a51db"><code>b0990a5</code></a> Add regression test for issue 1004</li>
<li><a href="02e583360d"><code>02e5833</code></a> Update fuzz crate gitignore to ignore coverage dir</li>
<li><a href="4b9699612f"><code>4b96996</code></a> No longer test so many old compiler versions</li>
<li>See full diff in <a href="https://github.com/serde-rs/json/compare/v1.0.94...v1.0.95">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_json&package-manager=cargo&previous-version=1.0.94&new-version=1.0.95)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.10 to 2.0.11.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/dtolnay/syn/releases">syn's releases</a>.</em></p>
<blockquote>
<h2>2.0.11</h2>
<ul>
<li>Improve error message on empty parens inside parse_nested_meta (<a href="https://redirect.github.com/dtolnay/syn/issues/1428">#1428</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="c58aceb0b1"><code>c58aceb</code></a> Release 2.0.11</li>
<li><a href="161be5acec"><code>161be5a</code></a> Merge pull request <a href="https://redirect.github.com/dtolnay/syn/issues/1428">#1428</a> from dtolnay/emptyattr</li>
<li><a href="0b7da9641c"><code>0b7da96</code></a> Improve error message on empty parens inside parse_nested_meta</li>
<li><a href="02961800aa"><code>0296180</code></a> Update test suite to nightly-2023-03-28</li>
<li><a href="e19a0fbfe1"><code>e19a0fb</code></a> Merge pull request <a href="https://redirect.github.com/dtolnay/syn/issues/1425">#1425</a> from dtolnay/alert</li>
<li><a href="dffe82b26e"><code>dffe82b</code></a> Perform build-time alerts in test suite using build-alert crate</li>
<li><a href="85d086ff09"><code>85d086f</code></a> Expose a way to fuzz with span-locations</li>
<li><a href="741f67ec4b"><code>741f67e</code></a> Update fuzz crate gitignore to ignore coverage dir</li>
<li><a href="f954499c76"><code>f954499</code></a> Merge pull request <a href="https://redirect.github.com/dtolnay/syn/issues/1423">#1423</a> from dtolnay/codegen</li>
<li><a href="efe6fcbef4"><code>efe6fcb</code></a> Revert "Decouple current syntax tree from the one codegen uses"</li>
<li>Additional commits viewable in <a href="https://github.com/dtolnay/syn/compare/2.0.10...2.0.11">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=syn&package-manager=cargo&previous-version=2.0.10&new-version=2.0.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 [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>
The fields like `[[PrivateElements]]` are hardly used but they occupy `24` bytes (on 64-bit arch.) the `ThinVec` type stores the `len` and `cap` right before the elements (like our `JsString` implementation) and only a pointer is kept (if not used it does not allocate!), was going to use this in #2723 , since it uses a `Vec` as a dense storage, but the PR is already too big.
It changes the following:
- Shrink object from `328` to `288` bytes (40 bytes reduction)
- Add the `thin_vec` lightweight crate (single file)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.8 to 2.0.10.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/dtolnay/syn/releases">syn's releases</a>.</em></p>
<blockquote>
<h2>2.0.10</h2>
<ul>
<li>Fix visibility being parsed incorrectly on macro invocations inside of a trait</li>
</ul>
<h2>2.0.9</h2>
<ul>
<li>Disallow <code>type</code> items in an extern block, trait, or module from being marked <code>default</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="c4976f19f0"><code>c4976f1</code></a> Release 2.0.10</li>
<li><a href="1f705d8ec6"><code>1f705d8</code></a> Remove precedence logic for the removed type ascription expression</li>
<li><a href="64ed2b1b19"><code>64ed2b1</code></a> Disallow visibility and defaultness on macro call in trait item position</li>
<li><a href="a33ffa388a"><code>a33ffa3</code></a> Fix parsing of const, async, unsafe, and extern fns inside impl block</li>
<li><a href="94439aae5f"><code>94439aa</code></a> Restore lookahead peek for better error message</li>
<li><a href="275d368069"><code>275d368</code></a> Release 2.0.9</li>
<li><a href="280d5e478d"><code>280d5e4</code></a> Remove dead code from ImplItemFn's ToTokens</li>
<li><a href="5036fd9c6e"><code>5036fd9</code></a> Clean up ImplItemFn hack using ImplItem::Verbatim</li>
<li><a href="0f99d27656"><code>0f99d27</code></a> Factor out some common code for type parsing</li>
<li><a href="fd8d37ee5c"><code>fd8d37e</code></a> Disallow some nonsensical configurations of items</li>
<li>Additional commits viewable in <a href="https://github.com/dtolnay/syn/compare/2.0.8...2.0.10">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=syn&package-manager=cargo&previous-version=2.0.8&new-version=2.0.10)](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 [indexmap](https://github.com/bluss/indexmap) from 1.9.2 to 1.9.3.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/bluss/indexmap/blob/master/RELEASES.md">indexmap's changelog</a>.</em></p>
<blockquote>
<ul>
<li>
<p>1.9.3</p>
<ul>
<li>Bump the <code>rustc-rayon</code> dependency, for compiler use only.</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="861fad73de"><code>861fad7</code></a> Merge pull request <a href="https://redirect.github.com/bluss/indexmap/issues/259">#259</a> from cuviper/indexmap-1-rustc-rayon-0.5</li>
<li><a href="3413435112"><code>3413435</code></a> Release 1.9.3</li>
<li><a href="6c6700066a"><code>6c67000</code></a> Update rustc-rayon to 0.5</li>
<li>See full diff in <a href="https://github.com/bluss/indexmap/compare/1.9.2...1.9.3">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=indexmap&package-manager=cargo&previous-version=1.9.2&new-version=1.9.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.53 to 1.0.54.
<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.54</h2>
<ul>
<li>Performance improvement to "span-locations" feature (<a href="https://redirect.github.com/dtolnay/proc-macro2/issues/373">#373</a>)</li>
<li>Fix unbounded memory usage when calling proc-macro2's parser from a fuzzer (<a href="https://redirect.github.com/dtolnay/proc-macro2/issues/374">#374</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="9f9328b7f0"><code>9f9328b</code></a> Release 1.0.54</li>
<li><a href="35cda6d129"><code>35cda6d</code></a> Merge pull request <a href="https://redirect.github.com/dtolnay/proc-macro2/issues/374">#374</a> from dtolnay/cfgfuzzing</li>
<li><a href="da3949d36b"><code>da3949d</code></a> Disable sourcemap thread_local during fuzzing</li>
<li><a href="eb49335540"><code>eb49335</code></a> Expose a way to fuzz with span-locations enabled</li>
<li><a href="16c2edab1c"><code>16c2eda</code></a> Turn off proc-macro feature for fuzzer</li>
<li><a href="5c05f4bd3a"><code>5c05f4b</code></a> Merge pull request <a href="https://redirect.github.com/dtolnay/proc-macro2/issues/373">#373</a> from dtolnay/filepath</li>
<li><a href="6eda714718"><code>6eda714</code></a> Lazily construct PathBuf for sourcemap entries</li>
<li><a href="990ddbb3f4"><code>990ddbb</code></a> Update fuzz crate gitignore to ignore coverage dir</li>
<li>See full diff in <a href="https://github.com/dtolnay/proc-macro2/compare/1.0.53...1.0.54">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.53&new-version=1.0.54)](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>
This PR changes the following:
- Adds a new (very simple) security policy, to comply with GitHub standards
- Changes the internal links of the documentation to point to the new boajs.dev domain
- The developer documentation link now lies in the CONTRIBUTING.md file
<!---
Thank you for contributing to Boa! Please fill out the template below, and remove or add any
information as you feel necessary.
--->
This pr adds the boa doc `html_logo_url` and `html_favicon_url` on the pages missing the logo for boa's hosted docs.
Currently update expressions get values multiple times. This can lead to multiple executions of object property getters.
This is very similar to #2551. Unfortunateley it seems like we have to sacrifice some code duplication for correctness in these cases. But that is probably for the best, as we can generate more optimized bytecode for each of these `get/set` cases.
Bumps [prettier](https://github.com/prettier/prettier) from 2.8.6 to 2.8.7.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/prettier/prettier/releases">prettier's releases</a>.</em></p>
<blockquote>
<h2>2.8.7</h2>
<ul>
<li>Allow multiple decorators on same getter/setter</li>
</ul>
<p>🔗 <a href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md#287">Changelog</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md">prettier's changelog</a>.</em></p>
<blockquote>
<h1>2.8.7</h1>
<p><a href="https://github.com/prettier/prettier/compare/2.8.6...2.8.7">diff</a></p>
<h4>Allow multiple decorators on same getter/setter (<a href="https://redirect.github.com/prettier/prettier/pull/14584">#14584</a> by <a href="https://github.com/fisker"><code>@fisker</code></a>)</h4>
<!-- raw HTML omitted -->
<pre lang="ts"><code>// Input
class A {
@decorator()
get foo () {}
<p><a href="https://github.com/decorator"><code>@decorator</code></a>()
set foo (value) {}
}</p>
<p>// Prettier 2.8.6
SyntaxError: Decorators cannot be applied to multiple get/set accessors of the same name. (5:3)
3 | get foo () {}
4 |<br />
> 5 | <a href="https://github.com/decorator"><code>@decorator</code></a>()
| ^^^^^^^^^^^^
6 | set foo (value) {}
7 | }</p>
<p>// Prettier 2.8.7
class A {
<a href="https://github.com/decorator"><code>@decorator</code></a>()
get foo() {}</p>
<p><a href="https://github.com/decorator"><code>@decorator</code></a>()
set foo(value) {}
}
</code></pre></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="543a9d71a7"><code>543a9d7</code></a> Release 2.8.7</li>
<li><a href="f9fae7f34c"><code>f9fae7f</code></a> Allow multiple decorators on same getter/setter (<a href="https://redirect.github.com/prettier/prettier/issues/14584">#14584</a>)</li>
<li>See full diff in <a href="https://github.com/prettier/prettier/compare/2.8.6...2.8.7">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=prettier&package-manager=npm_and_yarn&previous-version=2.8.6&new-version=2.8.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>
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 [syn](https://github.com/dtolnay/syn) from 2.0.3 to 2.0.8.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/dtolnay/syn/releases">syn's releases</a>.</em></p>
<blockquote>
<h2>2.0.8</h2>
<ul>
<li>Treat <code>try</code> keyword as 2015-edition identifier in definition of try macro (<a href="https://redirect.github.com/dtolnay/syn/issues/1422">#1422</a>)</li>
</ul>
<h2>2.0.7</h2>
<ul>
<li>Fix parsing of <code>mut self</code> inside of Type::BareFn</li>
</ul>
<h2>2.0.6</h2>
<ul>
<li>Improve error message on missing ';' between statements (<a href="https://redirect.github.com/dtolnay/syn/issues/1419">#1419</a>)</li>
<li>Keep non-brace macro invocations in trailing expr position as Expr::Macro (<a href="https://redirect.github.com/dtolnay/syn/issues/1420">#1420</a>)</li>
</ul>
<h2>2.0.5</h2>
<ul>
<li>Expose <code>ExprMacro</code> data structure even when <code>features="full"</code> is not used (<a href="https://redirect.github.com/dtolnay/syn/issues/1417">#1417</a>)</li>
</ul>
<h2>2.0.4</h2>
<ul>
<li>Improve error reporting when parsing identifiers and paths (<a href="https://redirect.github.com/dtolnay/syn/issues/1415">#1415</a>, <a href="https://redirect.github.com/dtolnay/syn/issues/1416">#1416</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="2fea56f57a"><code>2fea56f</code></a> Release 2.0.8</li>
<li><a href="40aa291011"><code>40aa291</code></a> Merge pull request <a href="https://redirect.github.com/dtolnay/syn/issues/1422">#1422</a> from dtolnay/trymacro</li>
<li><a href="f3a4a4c0c1"><code>f3a4a4c</code></a> Treat try keyword as 2015 ident in definition of try macro</li>
<li><a href="b862eff8aa"><code>b862eff</code></a> Release 2.0.7</li>
<li><a href="e6b1bdfc29"><code>e6b1bdf</code></a> Disallow consecutive path separator in use paths</li>
<li><a href="8ae37b75d6"><code>8ae37b7</code></a> Fix duplicated name of mut self bare fn arg</li>
<li><a href="78401020ba"><code>7840102</code></a> Release 2.0.6</li>
<li><a href="e76d6441fd"><code>e76d644</code></a> Merge pull request <a href="https://redirect.github.com/dtolnay/syn/issues/1420">#1420</a> from dtolnay/nonbracemacro</li>
<li><a href="6dcc48070f"><code>6dcc480</code></a> Keep non-brace macro invocations in trailing expr position as Expr::Macro</li>
<li><a href="d12db40c49"><code>d12db40</code></a> Merge pull request <a href="https://redirect.github.com/dtolnay/syn/issues/1419">#1419</a> from dtolnay/expectedsemi</li>
<li>Additional commits viewable in <a href="https://github.com/dtolnay/syn/compare/2.0.3...2.0.8">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=syn&package-manager=cargo&previous-version=2.0.3&new-version=2.0.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>
This Pull Request changes the following:
- Add locking for `Set`s during iteration. We already do this for `Map`s.
- Properly implement negative zero handling for `add`, `has` and `delete`.
- Refactor some `Set` functions and add spec comments.
This Pull Request improves our test results display per edition and cleanups our edition detector logic.
It changes the following:
- Adds a new `edition` flag to limit the maximum edition that will be tested.
- Adds a new `versioned` flag to display all tested editions in a table.
- Adds utility methods to `SpecEdition` to detect the edition of a test and get all the available editions.
- Cleanups logic.
Output with this PR ~(We only collect ES5, ES6 and ES13 stats, so all other editions are a WIP)~:
![image](https://user-images.githubusercontent.com/38230983/227010384-883f0934-47be-4be7-84c2-a21feb9de8a9.png)
~Marking as a draft since I need to determine the version of the remaining features, but feel free to review everything else.~ Finished!