This allows `thread_local` contexts to have owned `HostHooks` and `JobQueues`.
It changes the following:
- Creates a new `MaybeShared` struct that can hold either a reference or an `Rc`.
- Changes the `job_queue` and `host_hooks` parameters of `Context` to use `MaybeShared`.
This PR also allows us to make `SimpleJobQueue` the default promise runner, which I think it's pretty cool :)
cc @lastmjs
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.13 to 2.0.14.
<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.14</h2>
<ul>
<li>Add Punctuated::pop_punct() (<a href="https://redirect.github.com/dtolnay/syn/issues/1442">#1442</a>, thanks <a href="https://github.com/programmerjake"><code>@programmerjake</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="23686e408a"><code>23686e4</code></a> Release 2.0.14</li>
<li><a href="ed15fda5e8"><code>ed15fda</code></a> Merge pull request <a href="https://redirect.github.com/dtolnay/syn/issues/1442">#1442</a> from programmerjake/add-pop-punct</li>
<li><a href="81c503550e"><code>81c5035</code></a> add Punctuated::pop_punct()</li>
<li><a href="2dc79880cd"><code>2dc7988</code></a> Update test suite to nightly-2023-04-05</li>
<li><a href="1c1c2f074f"><code>1c1c2f0</code></a> Release syn-codegen 0.3.1</li>
<li><a href="97e79f52c8"><code>97e79f5</code></a> Fix html_root_url of syn-codegen crate</li>
<li><a href="fe5e16247f"><code>fe5e162</code></a> Merge pull request <a href="https://redirect.github.com/dtolnay/syn/issues/1440">#1440</a> from dtolnay/indexmap</li>
<li><a href="f761f2480d"><code>f761f24</code></a> Force indexmap std support</li>
<li>See full diff in <a href="https://github.com/dtolnay/syn/compare/2.0.13...2.0.14">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.13&new-version=2.0.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>
This Pull Request lifts the `InternalObjectMethods` vtable from `Object`, which should technically improve performance, since we now won't need to call `borrow` to use any of the internal methods, but let's see what the benchmarks show.
It changes the following:
- Adds a new `VTableObject` struct, containing the old `GcRefCell<Object>` and the lifted `InternalObjectMethods`.
- Changes the definition of `JsObject` to `Gc<VTableObject>`. Note that this means the `InternalObjectMethods` are accessible through the `Gc` pointer.
- Reestructures intrinsic initialization and initialization APIs to accommodate this change.
This Pull Request fixes/closes #2475.
It changes the following:
- Do not use the `wasmbind` feature by default in the `chrono` crate. This can be enabled selectively if needed.
- Updated the `boa_wasm` crate to use this new approach.
I'm interested on knowing if this fixes @lastmjs's issue, and on checking with the team if this is the best approach to solve it.
This change allows using built-in `JsObject` wrappers with the `TryFromJs` logic, which makes it easier to derive it in complex objects containing known built-ins, being able to use all the power of the wrappers even inside complex structures.
It changes the following:
* Implements `TryFromJs` for all `JsObject` wrappers ~, except for `JsProxy` and `Js<Int>Array` wrappers~ -> This has now been added.
* Adds checker functions for individual typed array objects.
* Adds some missing checker functions from `Object` to `JsObject`
~The reason for not implementing it for `JsProxy` is that we don't have a way (as far as I can tell) to know if a `JsObject` is a `Proxy` object. The reason for the typed arrays (note that `JsTypedArray` implements `TryFromJs`) is that I didn't find an easy way to know which type of typed array a `JsObject` was. Do we have a way of using a `JsObject` to create a Rust `JsUint8Array` or the like?~
This Pull Request changes the following:
- Fix the assignment of variables in destructive for-of initializers.
- Fix the environment handling in the compilation of `for-of/in` loops.
- Close iterators in destructive for-of loop assignments, when the code throws during the assignment.
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.159 to 1.0.160.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/serde/releases">serde's releases</a>.</em></p>
<blockquote>
<h2>v1.0.160</h2>
<ul>
<li>Make derived serializer/deserializer internals <code>doc(hidden)</code> (<a href="https://redirect.github.com/serde-rs/serde/issues/2426">#2426</a>, thanks <a href="https://github.com/compiler-errors"><code>@compiler-errors</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="0c6a2bbf79"><code>0c6a2bb</code></a> Release 1.0.160</li>
<li><a href="a80d830f27"><code>a80d830</code></a> Merge pull request <a href="https://redirect.github.com/serde-rs/serde/issues/2426">#2426</a> from compiler-errors/dont-doc-private</li>
<li><a href="5f3fd9994e"><code>5f3fd99</code></a> Make serializer/deserializer internals doc(hidden)</li>
<li>See full diff in <a href="https://github.com/serde-rs/serde/compare/v1.0.159...v1.0.160">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde&package-manager=cargo&previous-version=1.0.159&new-version=1.0.160)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
With this and #2805 , `annex-b/builtins/string` should have 100% conformance, also fixed the `normalize` method incorrect `length` value, which was the last failing tests in `normalize` test suite
Fixes the remaining failing tests on `String.prototype.substr()`
It changes the following:
- Fixes the remaining failing tests on `String.prototype.substr()
- Move `substr` under the `"annex-b"` feature flag.
Implements all Annex-B string html methods, they are deprecated but still part of the ES5 spec. They have been feature gated under the `"annex-b"` feature flag
This Pull Request fixes#2317 and #1835, finally giving our engine proper realms 🥳.
It changes the following:
- Extracts the compile environment stack from `Realm` and into `Vm`.
- Adjusts the bytecompiler to accommodate this change.
- Adjusts `call/construct_internal` to accommodate this change. This also coincidentally fixed#2317, which I'm pretty happy about.
- Adjusts several APIs (`NativeJob`, `Realm`) and builtins (`eval`, initializers) to accommodate this change.
- Adjusts `JsNativeError`s to hold a reference to the Realm from which they were created. This only affects errors created within calls to function objects. Native calls don't need to set the realm because it's inherited by the next outer active function object. TLDR: `JsError` API stays the same, we just set the origin Realm of errors in `JsObject::call/construct_internal`.
Bumps [test262](https://github.com/tc39/test262) from `be0abd9` to `f756ff6`.
<details>
<summary>Commits</summary>
<ul>
<li><a href="f756ff63c8"><code>f756ff6</code></a> Add some Array.from async tests (<a href="https://redirect.github.com/tc39/test262/issues/3791">#3791</a>)</li>
<li><a href="0178aa2114"><code>0178aa2</code></a> Change Temporal.TimeZone.prototype.toJSON not to call toString</li>
<li><a href="8c37094e1f"><code>8c37094</code></a> Change Temporal.TimeZone compare semantics to use .id</li>
<li><a href="960070549b"><code>9600705</code></a> Store strings or objects in Temporal.ZonedDateTime [[TimeZone]] slot</li>
<li><a href="f2871840b8"><code>f287184</code></a> Replace Temporal.ZonedDateTime.timeZone getter with new API</li>
<li><a href="61d84cc6bc"><code>61d84cc</code></a> Change Temporal.Calendar.prototype.toJSON not to call toString</li>
<li><a href="aee3a937dc"><code>aee3a93</code></a> Change Temporal.Calendar compare semantics to use .id</li>
<li><a href="41ffc678b0"><code>41ffc67</code></a> Store strings or objects in Temporal objects' [[Calendar]] slot</li>
<li><a href="a1bf99771c"><code>a1bf997</code></a> Replace Temporal objects' .calendar getters with .calendarId/.getCalendar</li>
<li><a href="55fdf60820"><code>55fdf60</code></a> Remove calendar slot from Temporal.PlainTime</li>
<li>Additional commits viewable in <a href="be0abd93cd...f756ff63c8">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>
It changes the following:
- Fixes`Symbol.prototype[@@iterator]` so it calls `RequireObjectCoercible` and then `ToString`
- Makes string iterator store a `JsString` which should be faster, instead of `JsValue` then calling `ToString` on every iteration
This Pull Request fixes test [`assert-throws-same-realm.js`](eb44f67274/test/harness/assert-throws-same-realm.js).
It changes the following:
- Handles global variables through the global object, instead of the `context`.
- Adds an `active_function` field to the vm, which is used as the `NewTarget` when certain builtins aren't called with `new`.
- Adds a `realm_intrinsics` field to `Function`.
Bumps [monaco-editor](https://github.com/microsoft/monaco-editor) from 0.37.0 to 0.37.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/microsoft/monaco-editor/blob/main/CHANGELOG.md">monaco-editor's changelog</a>.</em></p>
<blockquote>
<h2>[0.37.1]</h2>
<ul>
<li>Fixes Inline Completions feature</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="20a8d5a651"><code>20a8d5a</code></a> Merge pull request <a href="https://redirect.github.com/microsoft/monaco-editor/issues/3892">#3892</a> from microsoft/hediet/b/radical-python</li>
<li><a href="d04d8188c9"><code>d04d818</code></a> 0.37.1</li>
<li><a href="e0f314294d"><code>e0f3142</code></a> Merge pull request <a href="https://redirect.github.com/microsoft/monaco-editor/issues/3890">#3890</a> from microsoft/hediet/b/bewildered-swordtail</li>
<li><a href="c526b6bf0b"><code>c526b6b</code></a> Merge pull request <a href="https://redirect.github.com/microsoft/monaco-editor/issues/3889">#3889</a> from microsoft/hediet/b/characteristic-rabbit</li>
<li><a href="842214b80e"><code>842214b</code></a> Don't load monaco editor in fullscreen</li>
<li><a href="29bf7f9a91"><code>29bf7f9</code></a> Implements option to disable auto-reload</li>
<li><a href="1c6f48aa7d"><code>1c6f48a</code></a> Merge pull request <a href="https://redirect.github.com/microsoft/monaco-editor/issues/3879">#3879</a> from microsoft/hediet/webcomponent-bugfix</li>
<li><a href="6c77360f6b"><code>6c77360</code></a> Sets tsc target to fix playground compile issues</li>
<li><a href="4886e1da08"><code>4886e1d</code></a> Fixes webcomponent sample for local development</li>
<li>See full diff in <a href="https://github.com/microsoft/monaco-editor/compare/v0.37.0...v0.37.1">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=monaco-editor&package-manager=npm_and_yarn&previous-version=0.37.0&new-version=0.37.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [serde_yaml](https://github.com/dtolnay/serde-yaml) from 0.9.19 to 0.9.21.
<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.21</h2>
<ul>
<li>Make <code>Tag::new</code> panic if given empty string, since YAML has no syntax for an empty tag</li>
</ul>
<h2>0.9.20</h2>
<ul>
<li>Allow an empty YAML document to deserialize to <code>None</code> or <code>Value::Null</code>, in addition to the previously supported empty vector, empty map, and struct with no required fields</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="8057faddd6"><code>8057fad</code></a> Release 0.9.21</li>
<li><a href="19a7bd3d9b"><code>19a7bd3</code></a> Merge pull request <a href="https://redirect.github.com/dtolnay/serde-yaml/issues/371">#371</a> from dtolnay/emptytag</li>
<li><a href="ebb4b7af3a"><code>ebb4b7a</code></a> Fix deserialization of tag !<%21></li>
<li><a href="879a57fe91"><code>879a57f</code></a> Factor out conversion function from libyaml Tag to tag string</li>
<li><a href="e3b9a02a13"><code>e3b9a02</code></a> Merge pull request <a href="https://redirect.github.com/dtolnay/serde-yaml/issues/370">#370</a> from dtolnay/emptytag</li>
<li><a href="ef435495d1"><code>ef43549</code></a> Treat Tag::new("!") as tag %21, instead of empty tag</li>
<li><a href="221154cc1b"><code>221154c</code></a> Merge pull request <a href="https://redirect.github.com/dtolnay/serde-yaml/issues/369">#369</a> from dtolnay/emptytag</li>
<li><a href="39a866c695"><code>39a866c</code></a> Reuse Tag visitor in Value's Deserialize impl</li>
<li><a href="80e53a5166"><code>80e53a5</code></a> Merge pull request <a href="https://redirect.github.com/dtolnay/serde-yaml/issues/368">#368</a> from dtolnay/emptytag</li>
<li><a href="f668f71ea4"><code>f668f71</code></a> Preserve location information better when parsing invalid tag</li>
<li>Additional commits viewable in <a href="https://github.com/dtolnay/serde-yaml/compare/0.9.19...0.9.21">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.19&new-version=0.9.21)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
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)