mirror of https://github.com/boa-dev/boa.git
Tree:
fe280ec268
add-vhs-ci
benchmarks
control-flow-graph
expect-lints
feature/node_span
feature/snapshot
features
gh-readonly-queue/main/pr-2877-b0ddf5eed00a53281d67fc7d846233fc0d99ce9c
gh-readonly-queue/main/pr-3144-8e48cec73fae708420b9af88813d4870243c491a
main
nan-boxing
optimization/static-shapes
real_conformance
reduce-environment-allocations
refactor/interner
refactor/register-vm
release-0.20
releases/0.17
releases/0.19
semver_checks
tco
utility-crate
wasm-debugger
nightly
v0.10
v0.11
v0.12
v0.13
v0.14
v0.15
v0.16
v0.17
v0.17.1
v0.17.2
v0.17.3
v0.18
v0.19
v0.19.1
v0.2.0
v0.2.1
v0.3.0
v0.4.0
v0.5.0
v0.5.1
v0.6.0
v0.7.0
v0.8.0
v0.9.0
${ noResults }
37 Commits (fe280ec26815526efcc96d5373ac9fe2072ffb71)
Author | SHA1 | Message | Date |
---|---|---|---|
Addison Crump | e64a20e2a6 |
Parser Idempotency Fuzzer (#2400)
This Pull Request offers a fuzzer which is capable of detecting faults in the parser and interner. It does so by ensuring that the parsed AST remains the same between a parsed source and the result of parsing the `to_interned_string` result of the first parsed source. It changes the following: - Adds a fuzzer for the parser and interner. Any issues I raise in association with this fuzzer will link back to this fuzzer. You may run the fuzzer using the following commands: ```bash $ cd boa_engine $ cargo +nightly fuzz run -s none parser-idempotency ``` Co-authored-by: Addison Crump <addison.crump@cispa.de> |
2 years ago |
José Julián Espina | 91235c77fe |
Rewrite some patterns with let-else and ok_or_else (#2404)
This Pull Request updates the codebase to the newest version of rustc (1.65.0). It changes the following: - Bumps `rust-version` to 1.65.0. - Rewrites some snippets to use the new let else, ok_or_else and some other utils. - Removes the `rustdoc::missing_doc_code_examples` allow lint from our codebase. (Context: https://github.com/rust-lang/rust/pull/101732) |
2 years ago |
dependabot[bot] | 6c70dd6243 |
Bump once_cell from 1.15.0 to 1.16.0 (#2396)
Bumps [once_cell](https://github.com/matklad/once_cell) from 1.15.0 to 1.16.0. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/matklad/once_cell/blob/master/CHANGELOG.md">once_cell's changelog</a>.</em></p> <blockquote> <h2>1.16.0</h2> <ul> <li>Add <code>no_std</code> implementation based on <code>critical-section</code>, <a href="https://github-redirect.dependabot.com/matklad/once_cell/pull/195">#195</a>.</li> <li>Deprecate <code>atomic-polyfill</code> feature (use the new <code>critical-section</code> instead)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
2 years ago |
dependabot[bot] | 946a4ddf74 |
Bump serde from 1.0.145 to 1.0.147 (#2374)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.145 to 1.0.147. <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.147</h2> <ul> <li>Add <code>serde:🇩🇪:value::EnumAccessDeserializer</code> which transforms an <code>EnumAccess</code> into a <code>Deserializer</code> (<a href="https://github-redirect.dependabot.com/serde-rs/serde/issues/2305">#2305</a>)</li> </ul> <h2>v1.0.146</h2> <ul> <li>Allow internally tagged newtype variant to contain unit (<a href="https://github-redirect.dependabot.com/serde-rs/serde/issues/2303">#2303</a>, thanks <a href="https://github.com/tage64"><code>@tage64</code></a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
2 years ago |
Iban Eguia Moraza | f4cef141b0 |
Removed some duplicate code, added `ToIndentedString` (#2367)
In most cases, the `ToInternedString` was just calling `self.to_indented_string(interner, 0)`. This avoids all this duplicate code by adding a new trait, `ToIndentedString`. Any type implementing that automatically implements `ToInternedString`. I have also added a bunch of `#[inline]` in one-liners, and some one-line documentations for some functions. I have noticed that we also use `contains()` and `contains_arguments()` a lot. Would it make sense to create traits for this? |
2 years ago |
José Julián Espina | df70302194 |
First prototype for new `JsString` using UTF-16 (#1659)
I think it's time to address the elephant in the room. This Pull Request will (hopefully!) solve part of #736. This is a complete rewrite of `JsString`, but instead of storing `u8` bytes it stores `u16` words. The `encode!` macro (renamed to `utf16!` for simplicity) from the `const-utf16` crate allows us to create UTF-16 encoded arrays at compilation time. `JsString` implements `Deref<Target=[u16]>` to unlock the slice methods and possibly make some manipulations easier. However, we would need to create our own library of utilities for `JsString`. |
2 years ago |
José Julián Espina | e9e85f5a49 |
Switch to workspace inherited properties (#2297)
This Pull Request switches our codebase to the brand new [workspace inherited keys](https://doc.rust-lang.org/cargo/reference/workspaces.html#the-package-table), which allows us to define common package options that are usable within each crate's Cargo.toml file. It also allows to share dependency versions between crates, but I defined only shared versions for our workspace members. It would be a good follow-up to lift all the shared dependencies between crates into the global Cargo.toml. |
2 years ago |
raskad | c58a8997ca |
Implement `new.target` expression (#2299)
This Pull Request changes the following: - Implement `new.target` expression |
2 years ago |
Iban Eguia | f5be60975b |
Updated dependencies for 0.16 release (#2300)
This Pull Request updates the dependencies for the 0.16 release. Co-authored-by: José Julián Espina <jedel0124@gmail.com> |
2 years ago |
dependabot[bot] | c4c608c17a |
Bump serde from 1.0.144 to 1.0.145 (#2298)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.144 to 1.0.145. <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.145</h2> <ul> <li>Allow RefCell<T>, Mutex<T>, and RwLock<T> to be serialized regardless of whether T is <code>Sized</code> (<a href="https://github-redirect.dependabot.com/serde-rs/serde/issues/2282">#2282</a>, thanks <a href="https://github.com/ChayimFriedman2"><code>@ChayimFriedman2</code></a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
2 years ago |
Choongwoo Han | 2072f51faf |
Allow some keywords as identifiers (#2269)
This PR fixes #2275 There are keywords that are allowed as identifiers. https://tc39.es/ecma262/#sec-keywords-and-reserved-words > Those that are always allowed as identifiers, but also appear as keywords within certain syntactic productions, at places where Identifier is not allowed: as, async, from, get, meta, of, set, and target. This PR adds test cases for them, and fixes some cases such as `class A { set(a, b) { } }` `function of() { }` `let obj = {async: true}` `async()` |
2 years ago |
Choongwoo Han | 90ec460b3f |
Fix property access of call expression (#2273)
Fix a syntax error when accessing literal-like property names of call expression. e.g.) `fn().true` |
2 years ago |
dependabot[bot] | eb5d24ed4a |
Bump serde from 1.0.143 to 1.0.144 (#2249)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.143 to 1.0.144. <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.144</h2> <ul> <li>Change atomic ordering used by Serialize impl of atomic types to match ordering used by Debug impl of those same types (<a href="https://github-redirect.dependabot.com/serde-rs/serde/issues/2263">#2263</a>, thanks <a href="https://github.com/taiki-e"><code>@taiki-e</code></a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
2 years ago |
dependabot[bot] | e9e44d2a96 |
Bump phf from 0.11.0 to 0.11.1 (#2226)
Bumps [phf](https://github.com/rust-phf/rust-phf) from 0.11.0 to 0.11.1. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/rust-phf/rust-phf/releases">phf's releases</a>.</em></p> <blockquote> <h2>phf v0.11.1</h2> <h3>Chore</h3> <ul> <li><!-- raw HTML omitted --> point to local crates for now</li> </ul> <h3>Documentation</h3> <ul> <li>state allowed key expressions in <code>phf_map</code></li> </ul> <h3>Bug Fixes</h3> <ul> <li> <p>remove now-unnecessary <code>proc-macro-hack</code> crate usage Resolves <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/issues/255">rust-phf/rust-phf#255</a>.</p> <p>This resolves an issue with Windows Defender identifying <code>proc-macro-hack</code> as threats. It also sheds a depedency that is no longer necessary, now that the MSRV of this crate is 1.46 and <code>proc-macro-hack</code> is only useful for providing support for Rust versions 1.31 through 1.45. Per <a href="https://github.com/dtolnay/proc-macro-hack">upstream</a>:</p> <blockquote> <p><strong>Note:</strong> <em>As of Rust 1.45 this crate is superseded by native support for #[proc_macro] in expression position. Only consider using this crate if you care about supporting compilers between 1.31 and 1.45.</em></p> </blockquote> </li> </ul> <h3>Commit Statistics</h3> <ul> <li>234 commits contributed to the release over the course of 2957 calendar days.</li> <li>3 commits where understood as <a href="https://www.conventionalcommits.org">conventional</a>.</li> <li>1 unique issue was worked on: <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/issues/249">#249</a></li> </ul> <h3>Commit Details</h3> <!-- raw HTML omitted --> <!-- raw HTML omitted --> <ul> <li><strong><a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/issues/249">#249</a></strong> <ul> <li>Add <code>Map::new()</code> function and <code>Default</code> implementation to create new, empty map (baac7d0)</li> </ul> </li> <li><strong>Uncategorized</strong> <ul> <li>Replace handmade changelog with generated one by <code>cargo-smart-release</code> (cb84cf6)</li> <li>Add category to crates (32a72c3)</li> <li>Update repository links on Cargo.toml (1af3b0f)</li> <li>Release 0.11.0 (d2efdc0)</li> <li>Merge pull request <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/issues/257">#257</a> from JohnTitor/edition-2021 (36ec885)</li> <li>Make crates edition 2021 (b9d25da)</li> <li>remove now-unnecessary <code>proc-macro-hack</code> crate usage (caf1ce7)</li> <li>point to local crates for now (92e7b43)</li> <li>Merge pull request <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/issues/253">#253</a> from JohnTitor/action-tweaks (a3e04bc)</li> <li>Fix some Clippy warnings (71fd47c)</li> <li>Make "unicase + macros" features work (11bb242)</li> <li>Prepare 0.10.1 release (4cc8344)</li> </ul> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/rust-phf/rust-phf/blob/master/RELEASE_PROCESS.md">phf's changelog</a>.</em></p> <blockquote> <h1>How to make a new release</h1> <p>Since v0.11.1, this repository uses <a href="https://crates.io/crates/cargo-smart-release"><code>cargo-smart-release</code></a> to release crates.</p> <h2>Installation</h2> <pre lang="sh"><code>cargo install cargo-smart-release </code></pre> <h2>Before running <code>cargo-smart-release</code></h2> <p>If the next version has a major change or bumps MSRV, i.e. it increases a minor version on <code>v0.Y.Z</code> or a major version on <code>vX.Y.Z</code>, update the versions mentioned on the README and doc comments (and CI config if it touches MSRV).</p> <h2>Run <code>cargo-smart-release</code></h2> <p>First, just run:</p> <pre lang="sh"><code>cargo smart-release phf phf_codegen phf_generator phf_macros phf_shared </code></pre> <p>This would show what <code>cargo-smart-release</code> would do, e.g. how it updates the version number, changelog, etc. If you satisfy the output, run:</p> <pre lang="sh"><code>cargo smart-release -u -e phf phf_codegen phf_generator phf_macros phf_shared </code></pre> <p>This would make actual releases. <code>-e</code> means that it executes actual releases and <code>-u</code> means that it always updates crates-index. <code>cargo-smart-release</code> also takes care of the Git tags.</p> <p>After executing it, ensure that all the releases are actually happened and the tags are pushed. If all the things are fine, that's it!</p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
2 years ago |
dependabot[bot] | a15dd2f305 |
Bump serde from 1.0.142 to 1.0.143 (#2225)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.142 to 1.0.143. <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.143</h2> <ul> <li>Invert build.rs cfgs in serde_test to produce the most modern configuration in the default case (<a href="https://github-redirect.dependabot.com/serde-rs/serde/issues/2253">#2253</a>, thanks <a href="https://github.com/taiki-e"><code>@taiki-e</code></a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
2 years ago |
dependabot[bot] | fc885f19ac |
Bump serde from 1.0.141 to 1.0.142 (#2219)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.141 to 1.0.142. <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.142</h2> <ul> <li>Add keywords to crates.io metadata</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
2 years ago |
dependabot[bot] | 3a28eb400c |
Bump serde from 1.0.140 to 1.0.141 (#2212)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.140 to 1.0.141. <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.141</h2> <ul> <li>Add <code>no-std</code> category to crates.io metadata</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
2 years ago |
dependabot[bot] | e0df739b5a |
Bump serde from 1.0.139 to 1.0.140 (#2198)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.139 to 1.0.140. <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.140</h2> <ul> <li>Invert serde_derive cfgs to convenience non-Cargo builds on a modern toolchain (<a href="https://github-redirect.dependabot.com/serde-rs/serde/issues/2251">#2251</a>, thanks <a href="https://github.com/taiki-e"><code>@taiki-e</code></a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
2 years ago |
dependabot[bot] | e6c96806fc |
Update phf requirement from 0.10.1 to 0.11.0 in /boa_interner (#2192)
Updates the requirements on [phf](https://github.com/sfackler/rust-phf) to permit the latest version. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/sfackler/rust-phf/releases">phf's releases</a>.</em></p> <blockquote> <h2>v0.11.0</h2> <h2>What's Changed</h2> <ul> <li>Implement PhfHash for integral arrays of any size. by <a href="https://github.com/turbocool3r"><code>@turbocool3r</code></a> in <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/pull/247">rust-phf/rust-phf#247</a></li> <li>Fix phf_codegen example by <a href="https://github.com/fgsch"><code>@fgsch</code></a> in <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/pull/248">rust-phf/rust-phf#248</a></li> <li>Add <code>Map::new()</code> function and <code>Default</code> implementation to create new, empty map by <a href="https://github.com/msrd0"><code>@msrd0</code></a> in <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/pull/249">rust-phf/rust-phf#249</a></li> <li>Make "unicase + macros" features work by <a href="https://github.com/JohnTitor"><code>@JohnTitor</code></a> in <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/pull/251">rust-phf/rust-phf#251</a></li> <li>Fix some Clippy warnings by <a href="https://github.com/JohnTitor"><code>@JohnTitor</code></a> in <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/pull/252">rust-phf/rust-phf#252</a></li> <li>Upgrade <code>actions/checkout</code> to v3 by <a href="https://github.com/JohnTitor"><code>@JohnTitor</code></a> in <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/pull/253">rust-phf/rust-phf#253</a></li> <li>fix: remove now-unnecessary <code>proc-macro-hack</code> crate usage by <a href="https://github.com/ErichDonGubler"><code>@ErichDonGubler</code></a> in <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/pull/256">rust-phf/rust-phf#256</a></li> <li>Make crates edition 2021 by <a href="https://github.com/JohnTitor"><code>@JohnTitor</code></a> in <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/pull/257">rust-phf/rust-phf#257</a></li> <li>Release 0.11.0 by <a href="https://github.com/JohnTitor"><code>@JohnTitor</code></a> in <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/pull/258">rust-phf/rust-phf#258</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/turbocool3r"><code>@turbocool3r</code></a> made their first contribution in <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/pull/247">rust-phf/rust-phf#247</a></li> <li><a href="https://github.com/fgsch"><code>@fgsch</code></a> made their first contribution in <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/pull/248">rust-phf/rust-phf#248</a></li> <li><a href="https://github.com/msrd0"><code>@msrd0</code></a> made their first contribution in <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/pull/249">rust-phf/rust-phf#249</a></li> <li><a href="https://github.com/ErichDonGubler"><code>@ErichDonGubler</code></a> made their first contribution in <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/pull/256">rust-phf/rust-phf#256</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/rust-phf/rust-phf/compare/v0.10.1...v0.11.0">https://github.com/rust-phf/rust-phf/compare/v0.10.1...v0.11.0</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/rust-phf/rust-phf/blob/master/CHANGELOG.md">phf's changelog</a>.</em></p> <blockquote> <h2>0.11.0</h2> <ul> <li>Bump up MSRV to 1.60</li> <li>Crates' edition are now 2021 <a href="https://github-redirect.dependabot.com/sfackler/rust-phf/issues/257">#257</a></li> <li>Remove <code>proc-macro-hack</code> dependency <a href="https://github-redirect.dependabot.com/sfackler/rust-phf/issues/256">#256</a></li> <li>Now the <code>unicase</code> feature works fine with the <code>macros</code> feature, doesn't need to import <code>phf-macros</code> directly anymore. <a href="https://github-redirect.dependabot.com/sfackler/rust-phf/issues/251">#251</a></li> </ul> <p><a href="https://github-redirect.dependabot.com/sfackler/rust-phf/issues/251">#251</a>: <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/pull/251">rust-phf/rust-phf#251</a> <a href="https://github-redirect.dependabot.com/sfackler/rust-phf/issues/256">#256</a>: <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/pull/256">rust-phf/rust-phf#256</a> <a href="https://github-redirect.dependabot.com/sfackler/rust-phf/issues/257">#257</a>: <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/pull/257">rust-phf/rust-phf#257</a></p> <h2>0.10.1</h2> <ul> <li>Allow serializing <code>Map</code> (<a href="https://github-redirect.dependabot.com/sfackler/rust-phf/issues/244">#244</a>)</li> <li>Improve docs (<a href="https://github-redirect.dependabot.com/sfackler/rust-phf/issues/240">#240</a>, <a href="https://github-redirect.dependabot.com/sfackler/rust-phf/issues/243">#243</a>)</li> </ul> <p><a href="https://github-redirect.dependabot.com/sfackler/rust-phf/issues/240">#240</a>: <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/pull/240">rust-phf/rust-phf#240</a> <a href="https://github-redirect.dependabot.com/sfackler/rust-phf/issues/243">#243</a>: <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/pull/243">rust-phf/rust-phf#243</a> <a href="https://github-redirect.dependabot.com/sfackler/rust-phf/issues/244">#244</a>: <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/pull/244">rust-phf/rust-phf#244</a></p> <h2>0.10.0</h2> <ul> <li>Constify <code>len</code> and <code>is_empty</code> (<a href="https://github-redirect.dependabot.com/sfackler/rust-phf/issues/224">#224</a>)</li> <li>Implement <code>Clone</code>, <code>Debug</code>, and <code>FusedIterator</code> (<a href="https://github-redirect.dependabot.com/sfackler/rust-phf/issues/226">#226</a>)</li> </ul> <p><a href="https://github-redirect.dependabot.com/sfackler/rust-phf/issues/224">#224</a>: <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/pull/224">rust-phf/rust-phf#224</a> <a href="https://github-redirect.dependabot.com/sfackler/rust-phf/issues/226">#226</a>: <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/pull/226">rust-phf/rust-phf#226</a></p> <h2>0.9.1</h2> <p><strong>Yanked except for <code>phf-generator</code>, use 0.10.0 instead.</strong></p> <ul> <li>(phf-generator): Pin <code>criterion</code> version to keep MSRV</li> <li>Constify <code>len</code> and <code>is_empty</code> (<a href="https://github-redirect.dependabot.com/sfackler/rust-phf/issues/224">#224</a>) (<strong>yanked</strong>)</li> <li>Implement <code>Clone</code>, <code>Debug</code>, and <code>FusedIterator</code> (<a href="https://github-redirect.dependabot.com/sfackler/rust-phf/issues/226">#226</a>) (<strong>yanked</strong>)</li> </ul> <h2>0.9.0</h2> <ul> <li>Our MSRV is now 1.41 or 1.46 (because of dependencies)</li> <li><code>rand</code> dependency has been upgraded to 0.8</li> <li>Fix some crates' build on <code>no_std</code></li> <li>Restore the <code>unicase</code> feature for <code>phf_macros</code></li> <li>Allow using the owned <code>String</code> type for <code>phf</code> dynamic code generation</li> <li>Add back <code>OrderedMap</code> and <code>OrderedSet</code></li> <li>(<strong>breaking change</strong>) Use <code>PhfBorrow</code> trait instead of <code>std::borrow::Borrow</code></li> </ul> <h2>0.8.0</h2> <ul> <li><code>phf_macros</code> now works on stable.</li> <li>🎉 Fixed asymptotic slowdowns when constructing maps over very large datasets (+1M keys)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
2 years ago |
raskad | 6e377d6467 |
Implement Generator Function Constructor (#2174)
This Pull Request changes the following: - Modify `CreateDynamicFunction` to work with generator functions. - Add the name `anonymus` to functions created via `CreateDynamicFunction` to comply with the spec. - Fix a bug in the `Yield` parser where the parser would expect a token when no token is a legal case. - Change the `Yield::new` function to require less turbofishes. |
2 years ago |
dependabot[bot] | 6c65aa350b |
Bump serde from 1.0.138 to 1.0.139 (#2173)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.138 to 1.0.139. <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.139</h2> <ul> <li>Add <code>new</code> constructor function for all <code>IntoDeserializer</code> impls (<a href="https://github-redirect.dependabot.com/serde-rs/serde/issues/2246">#2246</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
2 years ago |
dependabot[bot] | cdaffa788a |
Bump serde from 1.0.137 to 1.0.138 (#2159)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.137 to 1.0.138. <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.138</h2> <ul> <li>Documentation improvements</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
2 years ago |
jedel1043 | f7aef10a61 |
Remove `string-interner` dependency and implement custom string `Interner` (#2147)
So, @raskad and myself had a short discussion about the state of #736, and we came to the conclusion that it would be a good time to implement our own string interner; partly because the `string-interner` crate is a bit unmaintained (as shown by https://github.com/Robbepop/string-interner/pull/42 and https://github.com/Robbepop/string-interner/pull/47), and partly because it would be hard to experiment with custom optimizations for UTF-16 strings. I still want to thank @Robbepop for the original implementation though, because some parts of this design have been shamelessly stolen from it 😅. Having said that, this PR is a complete reimplementation of the interner, but with some modifications to (hopefully!) make it a bit easier to experiment with UTF-16 strings, apply optimizations, and whatnot :) |
2 years ago |
Iban Eguia | 1dbd31e2b7 |
Added changelog, updated dependencies, bumped version number for 0.15 (#2102)
This Pull Request bumps the version number to 0.15, adds the changelog for this new versions and updates all dependencies to the latest versions. |
3 years ago |
jedel1043 | 518bad8109 |
Integrate ICU4X into `Intl` module (#2083)
<!--- Thank you for contributing to Boa! Please fill out the template below, and remove or add any information as you feel neccesary. ---> This Pull Request integrates an `ICU4X` data provider API in our codebase, to make use of the internationalization APIs that this crate provides. It changes the following: - Creates an API for pluggable icu data providers at `Context` creation, adding an `Icu` struct to store the provider (and some other internationalization tools) at runtime. - Slightly changes locale related functions to preserve the `Locale` type and ensure correctness. (Will make some other changes related to this). - Integrates the `sys_locale` crate to fetch the current default locale of an user instead of always returning `en-US`. |
3 years ago |
dependabot[bot] | 72ae29b0fa |
Bump serde from 1.0.136 to 1.0.137 (#2052)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.136 to 1.0.137. <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.137</h2> <ul> <li>Update documentation links to some data formats whose repos have moved (<a href="https://github-redirect.dependabot.com/serde-rs/serde/issues/2201">#2201</a>, thanks <a href="https://github.com/atouchet"><code>@atouchet</code></a>)</li> <li>Fix declared <code>rust-version</code> of serde and serde_test (<a href="https://github-redirect.dependabot.com/serde-rs/serde/issues/2168">#2168</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
3 years ago |
raskad | 223966981c |
Implement Classes (#1976)
This Pull Request fixes/closes #337. It changes the following: - Implement class declaration parsing. - Implement class expression parsing. - Implement class execution. There are still some features like `super` missing and there are some early errors that are not implemented yet. But I think it makes sense to merge this, as we can branch out the missing features from here. |
3 years ago |
Aaron Ross | 520b81ea66 |
add README for crates.io publish (#1952)
This Pull Request closes #1948. It changes the following: - set `readme` in `boa_engine` so `README.md` will be published to crates.io - remove unnecessary `exclude` field from `Cargo.toml` in all apps I was unsure whether using a path outside of the workspace root was allowed for `readme` since it [doesn't get included in the release tarball](https://github.com/rust-lang/cargo/issues/5911), but this exact path is used by [juniper](https://github.com/graphql-rust/juniper/blob/master/juniper/Cargo.toml#L13) and [seems to work there](https://crates.io/crates/juniper). I believe `cargo publish` does a bit more than just uploading the tarball, including pulling the `readme` from any arbitrary path. The default behaviour of `cargo package`/`cargo publish` if neither `exclude` or `include` is specified is to include all files from the package root, excluding - dotfiles - .gitignore'd files - subpackages (any subdirectory with a `Cargo.toml` file) - the `/target` directory There's no need to explicitly exclude files from the parent directory since they're already excluded by default. This can be verified by running `cargo package --list` inside any workspace app: ```plain $ cd boa_wasm $ cargo package --list .gitignore Cargo.toml Cargo.toml.orig src/lib.rs ``` You can read more [here](https://doc.rust-lang.org/cargo/reference/manifest.html#the-exclude-and-include-fields). |
3 years ago |
Jason Williams |
be901735e5
|
generated changelog for 0.14 (#1882)
Co-authored-by: João Borges <rageknify@gmail.com> |
3 years ago |
Iban Eguia |
4d2772d6a0
|
Rename "Boa" to boa_engine, moved GC and profiler to their crates (#1844)
* Separated GC and Profiler * Fixed prettierignore * Removed re-exports, fixed benchmarks, added some caches * Removed empty line * Update boa_engine/Cargo.toml Co-authored-by: raskad <32105367+raskad@users.noreply.github.com> * Fixed the profiler * Removed empty file Co-authored-by: raskad <32105367+raskad@users.noreply.github.com> |
3 years ago |
Iban Eguia | 748465d17b |
Unwrap removal (#1842)
This removes all the calls to `unwrap()` in the codebase, which made me found a couple of places where it wasn't needed, and could be improved. I also noticed we don't have dependabot updates for the test262 submodule and the interner dependencies, so I added those. I added lints so that no new unwraps are added. |
3 years ago |
Iban Eguia | 60b7eb8934 |
General code clean-up and new lint addition (#1809)
This PR adds some Clippy lints. Mainly, it adds the list of pedantic lints excluding some lints that were causing too many warnings. I also denied some useful restriction and pedantic lints, to make sure we use `Self` all the possible times (for better maintainability), and that we pass elements by reference where possible, for example, or that the documentation is properly written. This might even have some small performance gains. I also added a perfect hash function for the CLI keywords, which should be more efficient than a `HashSet`. This is something we could use elsewhere too. |
3 years ago |
Iban Eguia | e37cb6c9f6 |
Updated dependencies (#1803)
The main idea behind this is to upgrade the Unicode version from 13 to 14. I also upgraded the rest of the dependencies, so this closes #1802, #1800 and #1799. |
3 years ago |
raskad | 672eede30d |
Convert `Codeblock` variables to `Sym` (#1798)
It changes the following: - Convert `Codeblock` variables to `Sym` |
3 years ago |
dependabot[bot] | 090d7ace80 |
Bump serde from 1.0.134 to 1.0.135 (#1797)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.134 to 1.0.135. <details> <summary>Commits</summary> <ul> <li><a href=" |
3 years ago |
Iban Eguia | e92cff5920 |
Interner support in the parser (#1765)
This builds on top of #1758 to try to bring #1763 to life. Something that should probably be done here would be to convert `JsString` to a `Sym` internally. Then, further optimizations could be done adding common strings to a custom interner type (those that we know statically). This is definitely work in progress, but I would like to have feedback on the API, and feel free to contribute. Co-authored-by: raskad <32105367+raskad@users.noreply.github.com> |
3 years ago |
Iban Eguia | 48185f393d |
Lexer string interning (#1758)
This Pull Request is part of #279. It adds a string interner to Boa, which allows many types to not contain heap-allocated strings, and just contain a `NonZeroUsize` instead. This can move types to the stack (hopefully I'll be able to move `Token`, for example, maybe some `Node` types too. Note that the internet is for now only available in the lexer. Next steps (in this PR or future ones) would include also using interning in the parser, and finally in execution. The idea is that strings should be represented with a `Sym` until they are displayed. Talking about display. I have changed the `ParseError` type in order to not contain anything that could contain a `Sym` (basically tokens), which might be a bit faster, but what is important is that we don't depend on the interner when displaying errors. The issue I have now is in order to display tokens. This requires the interner if we want to know identifiers, for example. The issue here is that Rust doesn't allow using a `fmt::Formatter` (only in nightly), which is making my head hurt. Maybe someone of you can find a better way of doing this. Then, about `cursor.expect()`, this is the only place where we don't have the expected token type as a static string, so it's failing to compile. We have the option of changing the type definition of `ParseError` to contain an owned string, but maybe we can avoid this by having a `&'static str` come from a `TokenKind` with the default values, such as "identifier" for an identifier. I wanted for you to think about it and maybe we can just add that and avoid allocations there. Oh, and this depends on the VM-only branch, so that has to be merged before :) Another thing to check: should the interner be in its own module? |
3 years ago |