mirror of https://github.com/boa-dev/boa.git
Tree:
9d89e120c3
add-vhs-ci
benchmarks
bump-temporal-version
control-flow-graph
dependabot/cargo/rust-dependencies-50dc4690b8
expect-lints
feature/node_span
feature/snapshot
features
gh-readonly-queue/main/pr-2877-b0ddf5eed00a53281d67fc7d846233fc0d99ce9c
gh-readonly-queue/main/pr-3144-8e48cec73fae708420b9af88813d4870243c491a
local-parameters-if-mapped-arguments-object-not-accessed
main
nan-boxing
optimization/static-shapes
real_conformance
refactor/interner
refactor/register-vm
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.20
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 }
1615 Commits (9d89e120c318fe0c5ac622f99833e590af2a9e53)
Author | SHA1 | Message | Date |
---|---|---|---|
Halid Odat | 9dda8d3eae |
Toggleable `JsValue` internals displaying (#1865)
This PR makes `JsValue` (object) only display owned properties, cleans up object printing. This can be toggled with `value.display().internals(true)` `>> ({x: 1, y: ""})` _Before:_ <details> <pre> { x: 1, y: "", __proto__: { hasOwnProperty: { length: 1, name: "hasOwnProperty", __proto__: { name: "", length: 0, apply: { length: 1, name: "apply", __proto__: [Cycle] }, bind: { length: 1, name: "bind", __proto__: [Cycle] }, call: { length: 1, name: "call", __proto__: [Cycle] }, toString: { length: 0, name: "toString", __proto__: [Cycle] }, constructor: { length: 1, name: "Function", prototype: [Cycle], __proto__: [Cycle] }, Symbol(Symbol.hasInstance): { length: 1, name: "[Symbol.iterator]", __proto__: [Cycle] }, __proto__: [Cycle] } }, propertyIsEnumerable: { length: 1, name: "propertyIsEnumerable", __proto__: { name: "", length: 0, apply: { length: 1, name: "apply", __proto__: [Cycle] }, bind: { length: 1, name: "bind", __proto__: [Cycle] }, call: { length: 1, name: "call", __proto__: [Cycle] }, toString: { length: 0, name: "toString", __proto__: [Cycle] }, constructor: { length: 1, name: "Function", prototype: [Cycle], __proto__: [Cycle] }, Symbol(Symbol.hasInstance): { length: 1, name: "[Symbol.iterator]", __proto__: [Cycle] }, __proto__: [Cycle] } }, toString: { length: 0, name: "toString", __proto__: { name: "", length: 0, apply: { length: 1, name: "apply", __proto__: [Cycle] }, bind: { length: 1, name: "bind", __proto__: [Cycle] }, call: { length: 1, name: "call", __proto__: [Cycle] }, toString: { length: 0, name: "toString", __proto__: [Cycle] }, constructor: { length: 1, name: "Function", prototype: [Cycle], __proto__: [Cycle] }, Symbol(Symbol.hasInstance): { length: 1, name: "[Symbol.iterator]", __proto__: [Cycle] }, __proto__: [Cycle] } }, valueOf: { length: 0, name: "valueOf", __proto__: { name: "", length: 0, apply: { length: 1, name: "apply", __proto__: [Cycle] }, bind: { length: 1, name: "bind", __proto__: [Cycle] }, call: { length: 1, name: "call", __proto__: [Cycle] }, toString: { length: 0, name: "toString", __proto__: [Cycle] }, constructor: { length: 1, name: "Function", prototype: [Cycle], __proto__: [Cycle] }, Symbol(Symbol.hasInstance): { length: 1, name: "[Symbol.iterator]", __proto__: [Cycle] }, __proto__: [Cycle] } }, isPrototypeOf: { length: 1, name: "isPrototypeOf", __proto__: { name: "", length: 0, apply: { length: 1, name: "apply", __proto__: [Cycle] }, bind: { length: 1, name: "bind", __proto__: [Cycle] }, call: { length: 1, name: "call", __proto__: [Cycle] }, toString: { length: 0, name: "toString", __proto__: [Cycle] }, constructor: { length: 1, name: "Function", prototype: [Cycle], __proto__: [Cycle] }, Symbol(Symbol.hasInstance): { length: 1, name: "[Symbol.iterator]", __proto__: [Cycle] }, __proto__: [Cycle] } }, constructor: { create: { length: 2, name: "create", __proto__: { name: "", length: 0, apply: { length: 1, name: "apply", __proto__: [Cycle] }, bind: { length: 1, name: "bind", __proto__: [Cycle] }, call: { length: 1, name: "call", __proto__: [Cycle] }, toString: { length: 0, name: "toString", __proto__: [Cycle] }, constructor: { length: 1, name: "Function", prototype: [Cycle], __proto__: [Cycle] }, Symbol(Symbol.hasInstance): { length: 1, name: "[Symbol.iterator]", __proto__: [Cycle] }, __proto__: [Cycle] } }, setPrototypeOf: { length: 2, name: "setPrototypeOf", __proto__: { name: "", length: 0, apply: { length: 1, name: "apply", __proto__: [Cycle] }, bind: { length: 1, name: "bind", __proto__: [Cycle] }, call: { length: 1, name: "call", __proto__: [Cycle] }, toString: { length: 0, name: "toString", __proto__: [Cycle] }, constructor: { length: 1, name: "Function", prototype: [Cycle], __proto__: [Cycle] }, Symbol(Symbol.hasInstance): { length: 1, name: "[Symbol.iterator]", __proto__: [Cycle] }, __proto__: [Cycle] } }, getPrototypeOf: { length: 1, name: "getPrototypeOf", __proto__: { name: "", length: 0, apply: { length: 1, name: "apply", __proto__: [Cycle] }, bind: { length: 1, name: "bind", __proto__: [Cycle] }, call: { length: 1, name: "call", __proto__: [Cycle] }, toString: { length: 0, name: "toString", __proto__: [Cycle] }, constructor: { length: 1, name: "Function", prototype: [Cycle], __proto__: [Cycle] }, Symbol(Symbol.hasInstance): { length: 1, name: "[Symbol.iterator]", __proto__: [Cycle] }, __proto__: [Cycle] } }, defineProperty: { length: 3, name: "defineProperty", __proto__: { name: "", length: 0, apply: { length: 1, name: "apply", __proto__: [Cycle] }, bind: { length: 1, name: "bind", __proto__: [Cycle] }, call: { length: 1, name: "call", __proto__: [Cycle] }, toString: { length: 0, name: "toString", __proto__: [Cycle] }, constructor: { length: 1, name: "Function", prototype: [Cycle], __proto__: [Cycle] }, Symbol(Symbol.hasInstance): { length: 1, name: "[Symbol.iterator]", __proto__: [Cycle] }, __proto__: [Cycle] } }, defineProperties: { length: 2, name: "defineProperties", __proto__: { name: "", length: 0, apply: { length: 1, name: "apply", __proto__: [Cycle] }, bind: { length: 1, name: "bind", __proto__: [Cycle] }, call: { length: 1, name: "call", __proto__: [Cycle] }, toString: { length: 0, name: "toString", __proto__: [Cycle] }, constructor: { length: 1, name: "Function", prototype: [Cycle], __proto__: [Cycle] }, Symbol(Symbol.hasInstance): { length: 1, name: "[Symbol.iterator]", __proto__: [Cycle] }, __proto__: [Cycle] } }, assign: { length: 2, name: "assign", __proto__: { name: "", length: 0, apply: { length: 1, name: "apply", __proto__: [Cycle] }, bind: { length: 1, name: "bind", __proto__: [Cycle] }, call: { length: 1, name: "call", __proto__: [Cycle] }, toString: { length: 0, name: "toString", __proto__: [Cycle] }, constructor: { length: 1, name: "Function", prototype: [Cycle], __proto__: [Cycle] }, Symbol(Symbol.hasInstance): { length: 1, name: "[Symbol.iterator]", __proto__: [Cycle] }, __proto__: [Cycle] } }, is: { length: 2, name: "is", __proto__: { name: "", length: 0, apply: { length: 1, name: "apply", __proto__: [Cycle] }, bind: { length: 1, name: "bind", __proto__: [Cycle] }, call: { length: 1, name: "call", __proto__: [Cycle] }, toString: { length: 0, name: "toString", __proto__: [Cycle] }, constructor: { length: 1, name: "Function", prototype: [Cycle], __proto__: [Cycle] }, Symbol(Symbol.hasInstance): { length: 1, name: "[Symbol.iterator]", __proto__: [Cycle] }, __proto__: [Cycle] } }, keys: { length: 1, name: "keys", __proto__: { name: "", length: 0, apply: { length: 1, name: "apply", __proto__: [Cycle] }, bind: { length: 1, name: "bind", __proto__: [Cycle] }, call: { length: 1, name: "call", __proto__: [Cycle] }, toString: { length: 0, name: "toString", __proto__: [Cycle] }, constructor: { length: 1, name: "Function", prototype: [Cycle], __proto__: [Cycle] }, Symbol(Symbol.hasInstance): { length: 1, name: "[Symbol.iterator]", __proto__: [Cycle] }, __proto__: [Cycle] } }, values: { length: 1, name: "values", __proto__: { name: "", length: 0, apply: { length: 1, name: "apply", __proto__: [Cycle] }, bind: { length: 1, name: "bind", __proto__: [Cycle] }, call: { length: 1, name: "call", __proto__: [Cycle] }, toString: { length: 0, name: "toString", __proto__: [Cycle] }, constructor: { length: 1, name: "Function", prototype: [Cycle], __proto__: [Cycle] }, Symbol(Symbol.hasInstance): { length: 1, name: "[Symbol.iterator]", __proto__: [Cycle] }, __proto__: [Cycle] } }, entries: { length: 1, name: "entries", __proto__: { name: "", length: 0, apply: { length: 1, name: "apply", __proto__: [Cycle] }, bind: { length: 1, name: "bind", __proto__: [Cycle] }, call: { length: 1, name: "call", __proto__: [Cycle] }, toString: { length: 0, name: "toString", __proto__: [Cycle] }, constructor: { length: 1, name: "Function", prototype: [Cycle], __proto__: [Cycle] }, Symbol(Symbol.hasInstance): { length: 1, name: "[Symbol.iterator]", __proto__: [Cycle] }, __proto__: [Cycle] } }, seal: { length: 1, name: "seal", __proto__: { name: "", length: 0, apply: { length: 1, name: "apply", __proto__: [Cycle] }, bind: { length: 1, name: "bind", __proto__: [Cycle] }, call: { length: 1, name: "call", __proto__: [Cycle] }, toString: { length: 0, name: "toString", __proto__: [Cycle] }, constructor: { length: 1, name: "Function", prototype: [Cycle], __proto__: [Cycle] }, Symbol(Symbol.hasInstance): { length: 1, name: "[Symbol.iterator]", __proto__: [Cycle] }, __proto__: [Cycle] } }, isSealed: { length: 1, name: "isSealed", __proto__: { name: "", length: 0, apply: { length: 1, name: "apply", __proto__: [Cycle] }, bind: { length: 1, name: "bind", __proto__: [Cycle] }, call: { length: 1, name: "call", __proto__: [Cycle] }, toString: { length: 0, name: "toString", __proto__: [Cycle] }, constructor: { length: 1, name: "Function", prototype: [Cycle], __proto__: [Cycle] }, Symbol(Symbol.hasInstance): { length: 1, name: "[Symbol.iterator]", __proto__: [Cycle] }, __proto__: [Cycle] } }, freeze: { length: 1, name: "freeze", __proto__: { name: "", length: 0, apply: { length: 1, name: "apply", __proto__: [Cycle] }, bind: { length: 1, name: "bind", __proto__: [Cycle] }, call: { length: 1, name: "call", __proto__: [Cycle] }, toString: { length: 0, name: "toString", __proto__: [Cycle] }, constructor: { length: 1, name: "Function", prototype: [Cycle], __proto__: [Cycle] }, Symbol(Symbol.hasInstance): { length: 1, name: "[Symbol.iterator]", __proto__: [Cycle] }, __proto__: [Cycle] } }, isFrozen: { length: 1, name: "isFrozen", __proto__: { name: "", length: 0, apply: { length: 1, name: "apply", __proto__: [Cycle] }, bind: { length: 1, name: "bind", __proto__: [Cycle] }, call: { length: 1, name: "call", __proto__: [Cycle] }, toString: { length: 0, name: "toString", __proto__: [Cycle] }, constructor: { length: 1, name: "Function", prototype: [Cycle], __proto__: [Cycle] }, Symbol(Symbol.hasInstance): { length: 1, name: "[Symbol.iterator]", __proto__: [Cycle] }, __proto__: [Cycle] } }, preventExtensions: { length: 1, name: "preventExtensions", __proto__: { name: "", length: 0, apply: { length: 1, name: "apply", __proto__: [Cycle] }, bind: { length: 1, name: "bind", __proto__: [Cycle] }, call: { length: 1, name: "call", __proto__: [Cycle] }, toString: { length: 0, name: "toString", __proto__: [Cycle] }, constructor: { length: 1, name: "Function", prototype: [Cycle], __proto__: [Cycle] }, Symbol(Symbol.hasInstance): { length: 1, name: "[Symbol.iterator]", __proto__: [Cycle] }, __proto__: [Cycle] } }, isExtensible: { length: 1, name: "isExtensible", __proto__: { name: "", length: 0, apply: { length: 1, name: "apply", __proto__: [Cycle] }, bind: { length: 1, name: "bind", __proto__: [Cycle] }, call: { length: 1, name: "call", __proto__: [Cycle] }, toString: { length: 0, name: "toString", __proto__: [Cycle] }, constructor: { length: 1, name: "Function", prototype: [Cycle], __proto__: [Cycle] }, Symbol(Symbol.hasInstance): { length: 1, name: "[Symbol.iterator]", __proto__: [Cycle] }, __proto__: [Cycle] } }, getOwnPropertyDescriptor: { length: 2, name: "getOwnPropertyDescriptor", __proto__: { name: "", length: 0, apply: { length: 1, name: "apply", __proto__: [Cycle] }, bind: { length: 1, name: "bind", __proto__: [Cycle] }, call: { length: 1, name: "call", __proto__: [Cycle] }, toString: { length: 0, name: "toString", __proto__: [Cycle] }, constructor: { length: 1, name: "Function", prototype: [Cycle], __proto__: [Cycle] }, Symbol(Symbol.hasInstance): { length: 1, name: "[Symbol.iterator]", __proto__: [Cycle] }, __proto__: [Cycle] } }, getOwnPropertyDescriptors: { length: 1, name: "getOwnPropertyDescriptors", __proto__: { name: "", length: 0, apply: { length: 1, name: "apply", __proto__: [Cycle] }, bind: { length: 1, name: "bind", __proto__: [Cycle] }, call: { length: 1, name: "call", __proto__: [Cycle] }, toString: { length: 0, name: "toString", __proto__: [Cycle] }, constructor: { length: 1, name: "Function", prototype: [Cycle], __proto__: [Cycle] }, Symbol(Symbol.hasInstance): { length: 1, name: "[Symbol.iterator]", __proto__: [Cycle] }, __proto__: [Cycle] } }, getOwnPropertyNames: { length: 1, name: "getOwnPropertyNames", __proto__: { name: "", length: 0, apply: { length: 1, name: "apply", __proto__: [Cycle] }, bind: { length: 1, name: "bind", __proto__: [Cycle] }, call: { length: 1, name: "call", __proto__: [Cycle] }, toString: { length: 0, name: "toString", __proto__: [Cycle] }, constructor: { length: 1, name: "Function", prototype: [Cycle], __proto__: [Cycle] }, Symbol(Symbol.hasInstance): { length: 1, name: "[Symbol.iterator]", __proto__: [Cycle] }, __proto__: [Cycle] } }, getOwnPropertySymbols: { length: 1, name: "getOwnPropertySymbols", __proto__: { name: "", length: 0, apply: { length: 1, name: "apply", __proto__: [Cycle] }, bind: { length: 1, name: "bind", __proto__: [Cycle] }, call: { length: 1, name: "call", __proto__: [Cycle] }, toString: { length: 0, name: "toString", __proto__: [Cycle] }, constructor: { length: 1, name: "Function", prototype: [Cycle], __proto__: [Cycle] }, Symbol(Symbol.hasInstance): { length: 1, name: "[Symbol.iterator]", __proto__: [Cycle] }, __proto__: [Cycle] } }, hasOwn: { length: 2, name: "hasOwn", __proto__: { name: "", length: 0, apply: { length: 1, name: "apply", __proto__: [Cycle] }, bind: { length: 1, name: "bind", __proto__: [Cycle] }, call: { length: 1, name: "call", __proto__: [Cycle] }, toString: { length: 0, name: "toString", __proto__: [Cycle] }, constructor: { length: 1, name: "Function", prototype: [Cycle], __proto__: [Cycle] }, Symbol(Symbol.hasInstance): { length: 1, name: "[Symbol.iterator]", __proto__: [Cycle] }, __proto__: [Cycle] } }, fromEntries: { length: 1, name: "fromEntries", __proto__: { name: "", length: 0, apply: { length: 1, name: "apply", __proto__: [Cycle] }, bind: { length: 1, name: "bind", __proto__: [Cycle] }, call: { length: 1, name: "call", __proto__: [Cycle] }, toString: { length: 0, name: "toString", __proto__: [Cycle] }, constructor: { length: 1, name: "Function", prototype: [Cycle], __proto__: [Cycle] }, Symbol(Symbol.hasInstance): { length: 1, name: "[Symbol.iterator]", __proto__: [Cycle] }, __proto__: [Cycle] } }, length: 1, name: "Object", prototype: [Cycle], __proto__: { name: "", length: 0, apply: { length: 1, name: "apply", __proto__: [Cycle] }, bind: { length: 1, name: "bind", __proto__: [Cycle] }, call: { length: 1, name: "call", __proto__: [Cycle] }, toString: { length: 0, name: "toString", __proto__: [Cycle] }, constructor: { length: 1, name: "Function", prototype: [Cycle], __proto__: [Cycle] }, Symbol(Symbol.hasInstance): { length: 1, name: "[Symbol.iterator]", __proto__: [Cycle] }, __proto__: [Cycle] } }, __proto__: null } } </pre> </details> _After:_ ```text { x: 1, y: "" } ``` |
3 years ago |
Addison Crump | 2c19c6a4b5 |
Correct pop_on_return behaviour (#1853)
This PR changes the following: - Updates the value of `pop_on_return` after a catch as to prevent VM stack corruption - Adds two test cases which demonstrate the issue and demonstrate that it has been fixed I am unsure if it is possible to abuse the patch provided; one would need to catch from within an array initialisation without calling into another frame (e.g., with a lambda), which I don't think is possible. |
3 years ago |
dependabot[bot] | d07945ddf3 |
Bump getrandom from 0.2.4 to 0.2.5 (#1863)
Bumps [getrandom](https://github.com/rust-random/getrandom) from 0.2.4 to 0.2.5. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/rust-random/getrandom/blob/master/CHANGELOG.md">getrandom's changelog</a>.</em></p> <blockquote> <h2>[0.2.5] - 2022-02-22</h2> <h3>Added</h3> <ul> <li>ESP-IDF targets (<code>*‑espidf</code>) support <a href="https://github-redirect.dependabot.com/rust-random/getrandom/issues/245">#245</a></li> </ul> <h3>Fixed</h3> <ul> <li>Webpack warning caused by dynamic require <a href="https://github-redirect.dependabot.com/rust-random/getrandom/issues/234">#234</a></li> <li>Error checking on iOS for <code>SecRandomCopyBytes</code> <a href="https://github-redirect.dependabot.com/rust-random/getrandom/issues/244">#244</a></li> </ul> <p><a href="https://github-redirect.dependabot.com/rust-random/getrandom/issues/234">#234</a>: <a href="https://github-redirect.dependabot.com/rust-random/getrandom/pull/234">rust-random/getrandom#234</a> <a href="https://github-redirect.dependabot.com/rust-random/getrandom/issues/244">#244</a>: <a href="https://github-redirect.dependabot.com/rust-random/getrandom/pull/244">rust-random/getrandom#244</a> <a href="https://github-redirect.dependabot.com/rust-random/getrandom/issues/245">#245</a>: <a href="https://github-redirect.dependabot.com/rust-random/getrandom/pull/245">rust-random/getrandom#245</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
3 years ago |
dependabot[bot] | 8ffae90400 |
Bump boa-dev/criterion-compare-action from 3.1.0 to 3.2.0 (#1862)
Bumps [boa-dev/criterion-compare-action](https://github.com/boa-dev/criterion-compare-action) from 3.1.0 to 3.2.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/boa-dev/criterion-compare-action/releases">boa-dev/criterion-compare-action's releases</a>.</em></p> <blockquote> <h2>v3.2.0</h2> <p>This release adds support for the <code>--no-default-features</code> tag.</p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
3 years ago |
Iban Eguia | 8c92a8fa25 |
Added conversions from and to serde_json's Value type (#1851)
This Pull Request closes #1693. It changes the following: - It adds a fallible conversion from `serde_json::Value` to `JsValue`, which requires a context. - It adds a fallible conversion from `JsValue` to `serde_json::Value`, which requires a context. - Added examples to the documentation of both methods. - Removed some duplicate and non-needed code that I found while doing this. Co-authored-by: RageKnify <RageKnify@gmail.com> |
3 years ago |
Iban Eguia | 0a2c60a9aa |
Fixed dependabot for submodule (#1856)
This Pull Request fixes dependabot updates for the Test262 submodule. |
3 years ago |
dependabot[bot] | 2c6acebe6c |
Bump test262 from `281c781` to `18ce639` (#1857)
Bumps [test262](https://github.com/tc39/test262) from `281c781` to `18ce639`. <details> <summary>Commits</summary> <ul> <li><a href=" |
3 years ago |
Iban Eguia | ab4d2899d5 |
Fixing main branch workflows (#1858)
It seems that the workflow in the `main` branch is failing to push benchmark results, so I think this should fix it, let's see. |
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 |
Aäron Munsters | 517c6724c9 |
Correct reference error message (#1855)
This Pull Request fixes/closes the incorrect message thrown for the following code: ```javascript "use strict"; foo = "bar"; ``` Which would throw the following before the change (incorrect): `Uncaught "ReferenceError": "binding already exists: foo"` And would throw the following after the change (correct): `Uncaught "ReferenceError": "assignment to undeclared variable foo"` |
3 years ago |
Addison Crump | 1d2851465f |
Add assertion to check that a break label is identified at compile-time (#1852)
This PR changes the following: - Adds a check at compile time for the existence of a break label (this should be a syntax error in the future; refactor from panics to results in compile should be a separate PR) - Adds a test for break label existence in boa/tests 262 misses some fairly important JS parity issues and not performing this check eagerly can lead to other more severe issues during VM execution. |
3 years ago |
Halid Odat | 9f6aa1972c |
Feature `JsArray` (#1746)
This PR introduces a new API for JavaScript builtin objects in Rust (such as `Array`, `Map`, `Proxy`, etc). Rather than just expose the raw builtin functions as discussed here #1692 (though having raw API exposed may be nice as well), In this PR we introduce a very light wrapper around the raw API, for a more pleasant user experience. The wrapper implements functions that are specific to the wrapper type (for `Array` this would be methods like `pop`, `push`, etc) as well as implementing `Deref<Target = JsObject>` so we can call `JsObject` functions without converting to `JsObject` and `Into<JsValue>` for easy to `JsValue` conversions. Please check `jsarray.rs` in the `examples` |
3 years ago |
raskad | 1d6e14763b |
Refactor mapped `Arguments` object (#1849)
This refactors the representation of the `[[ParameterMap]]` internal slot on the `Arguments` exotic object to be faster at runtime. Previously `[[ParameterMap]]` was a `JsObject` like the spec describes. This can be pretty slow a runtime, because the argument getters and setters must be represented as function objects on the `[[ParameterMap]]` object. In addition to the time spend on creation and calling of those functions, every getter/setter needs a cloned gc reference to the function environment to access the bindings. This adds to the gc overhead. The spec states that the `[[ParameterMap]]` internal slot doesn't have to be a `JsObject`. See NOTE 3 here: https://tc39.es/ecma262/#sec-arguments-exotic-objects Leveraging this freedom, we can use a more optimized representation, that avoids any `JsObject` usage and only needs one clone of the function environment. |
3 years ago |
Iban Eguia | 46f96d4bea |
Fix wasm use outside browsers (#1846)
This Pull Request fixes/closes #1670. It changes the following: - Removes the "js" feature by default from getrandom for wasm (still there for boa_wasm) - Updates dependencies Note that this change was introduced in #1521, after #1475. We must make sure that the issue doesn't come back. |
3 years ago |
Timo | fabbf15dd3 |
Handle allocation errors (#1850)
Fixes #1847 by wrapping the `std::alloc::alloc()` call in `try_alloc()`, which checks that the returned pointer is non-null and handles allocation errors that way. It will now abort the process instead of executing UB in the error path |
3 years ago |
raskad | 29cd909f88 |
Refactor the environment for runtime performance (#1829)
This is an attempt to refactor the environments to be more performant at runtime. The idea is, to shift the dynamic hashmap environment lookups from runtime to compile time. Currently the environments hold hashmaps that contain binding identifiers, values and additional information that is needed to identify some errors. Because bindings in outer environments are accessible from inner environments, this can lead to a traversal through all environments (in the worst case to the global environment). This change to the environment structure pushes most of the work that is needed to access bindings to the compile time. At compile time, environments and bindings in the environments are being assigned indices. These indices are then stored instead of the `Sym` that is currently used to access bindings. At runtime, the indices are used to access bindings in a fixed size `Vec` per environment. This brings multiple benefits: - No hashmap access needed at runtime - The number of bindings per environment is known at compile time. Environments only need a single allocation, as their size is constant. - Potential for optimizations with `unsafe` https://doc.rust-lang.org/std/vec/struct.Vec.html#method.get_unchecked Additionally, this changes the global object to have it's bindings directly stored on the `Realm`. This should reduce some overhead from access trough gc objects and makes some optimizations for the global object possible. The benchmarks look not that great on the first sight. But if you look closer, I think it is apparent, that this is a positive change. The difference is most apparent on Mini and Clean as they are longer (still not near any real life js but less specific that most other benchmarks): | Test | Base | PR | % | |------|--------------|------------------|---| | Clean js (Compiler) | **1929.1±5.37ns** | 4.1±0.02µs | **+112.53%** | | Clean js (Execution) | 1487.4±7.50µs | **987.3±3.78µs** | **-33.62%** | The compile time is up in all benchmarks, as expected. The percentage is huge, but if we look at the real numbers, we can see that this is an issue of orders of magnitude. While compile is up `112.53%`, the real change is `~+2µs`. Execution is only down `33.62%`, but the real time changed by `~-500µs`. Co-authored-by: Iban Eguia <razican@protonmail.ch> |
3 years ago |
dependabot[bot] | e800283552 |
Bump benchmark-action/github-action-benchmark from 1.12.0 to 1.13.0 (#1845)
Bumps [benchmark-action/github-action-benchmark](https://github.com/benchmark-action/github-action-benchmark) from 1.12.0 to 1.13.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/benchmark-action/github-action-benchmark/releases">benchmark-action/github-action-benchmark's releases</a>.</em></p>
<blockquote>
<h2>v1.13.0</h2>
<p>Feat: Updated urls to support GHES (<a href="https://github-redirect.dependabot.com/benchmark-action/github-action-benchmark/issues/104">#104</a>)
Feat: Add support for BenchmarkDotNet (<a href="https://github-redirect.dependabot.com/benchmark-action/github-action-benchmark/issues/109">#109</a>)
Chore: Bump node-fetch from 2.6.6 to 2.6.7 (<a href="https://github-redirect.dependabot.com/benchmark-action/github-action-benchmark/issues/107">#107</a>)</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/benchmark-action/github-action-benchmark/blob/master/CHANGELOG.md">benchmark-action/github-action-benchmark's changelog</a>.</em></p>
<blockquote>
<h1><a href="https://github.com/benchmark-action/github-action-benchmark/releases/tag/v1.13.0">v1.13.0</a> - 17 Feb 2022</h1>
<ul>
<li><strong>Feat:</strong> Updated urls to support GHES (<a href="https://github-redirect.dependabot.com/benchmark-action/github-action-benchmark/issues/104">#104</a>)</li>
<li><strong>Feat:</strong> Add support for BenchmarkDotNet (<a href="https://github-redirect.dependabot.com/benchmark-action/github-action-benchmark/issues/109">#109</a>)</li>
<li><strong>Chore</strong> Bump node-fetch from 2.6.6 to 2.6.7 (<a href="https://github-redirect.dependabot.com/benchmark-action/github-action-benchmark/issues/107">#107</a>)</li>
</ul>
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="
|
3 years ago |
dependabot[bot] | 4a33d20c71 |
Bump webpack from 5.69.0 to 5.69.1 (#1843)
Bumps [webpack](https://github.com/webpack/webpack) from 5.69.0 to 5.69.1. <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.69.1</h2> <h1>Revert</h1> <ul> <li>revert "handle multiple alternative directories (e. g. due to resolve.alias or resolve.modules) when creating an context module"</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
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 |
dependabot[bot] | 3d9c8b229d |
Bump serde_json from 1.0.78 to 1.0.79 (#1838)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.78 to 1.0.79. <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.79</h2> <ul> <li>Allow <code>RawValue</code> deserialization to propagate <code>\u</code> escapes for unmatched surrogates, which can later by deserialized to Vec<u8> (<a href="https://github-redirect.dependabot.com/serde-rs/json/issues/830">#830</a>, thanks <a href="https://github.com/lucacasonato"><code>@lucacasonato</code></a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
3 years ago |
raskad | 51537badc3 |
Ignore wastefull `RegExp` tests (#1840)
With the implementation of `String.fromCodePoint` in #1123 some `RegExp` tests are now running for a long time. These tests check every unicode codepoint for all regexp property escape/character classes. This not only makes the developer experience significantly worse, but also wastes cpu resources for the benefit of "completeness". I think these tests are completely useless. Ironically the unicode tables in the tests are generated - from the same data, that the unicode tables in the regex engine are also generated. 262 suite runtime: Before: ~03:30 https://github.com/boa-dev/boa/runs/5191567446?check_suite_focus=true After: ~31:00 https://github.com/boa-dev/boa/runs/5196405437?check_suite_focus=true |
3 years ago |
Aäron Munsters | 826adb2009 |
Rework RegExp struct to include bitflags field (#1837)
This Pull Request fixes/closes #1819. It changes the following: - Move the bitflags from `boa/src/syntax/lexer/regex.rs` to `boa/src/builtins/regexp/mod.rs` - Replace the booleans in the RegExp struct to include the bitflags struct - Update match expressions to make use of the bitflags struct Co-authored-by: Aäron Munsters <45006406+aaronmunsters@users.noreply.github.com> |
3 years ago |
dependabot[bot] | 7716c53fa6 |
Bump rand from 0.8.4 to 0.8.5 (#1839)
Bumps [rand](https://github.com/rust-random/rand) from 0.8.4 to 0.8.5. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/rust-random/rand/blob/master/CHANGELOG.md">rand's changelog</a>.</em></p> <blockquote> <h2>[0.8.5] - 2021-08-20</h2> <h3>Fixes</h3> <ul> <li>Fix build on non-32/64-bit architectures (<a href="https://github-redirect.dependabot.com/rust-random/rand/issues/1144">#1144</a>)</li> <li>Fix "min_const_gen" feature for <code>no_std</code> (<a href="https://github-redirect.dependabot.com/rust-random/rand/issues/1173">#1173</a>)</li> <li>Check <code>libc::pthread_atfork</code> return value with panic on error (<a href="https://github-redirect.dependabot.com/rust-random/rand/issues/1178">#1178</a>)</li> <li>More robust reseeding in case <code>ReseedingRng</code> is used from a fork handler (<a href="https://github-redirect.dependabot.com/rust-random/rand/issues/1178">#1178</a>)</li> <li>Fix nightly: remove unused <code>slice_partition_at_index</code> feature (<a href="https://github-redirect.dependabot.com/rust-random/rand/issues/1215">#1215</a>)</li> <li>Fix nightly + <code>simd_support</code>: update <code>packed_simd</code> (<a href="https://github-redirect.dependabot.com/rust-random/rand/issues/1216">#1216</a>)</li> </ul> <h3>Rngs</h3> <ul> <li><code>StdRng</code>: Switch from HC128 to ChaCha12 on emscripten (<a href="https://github-redirect.dependabot.com/rust-random/rand/issues/1142">#1142</a>). We now use ChaCha12 on all platforms.</li> </ul> <h3>Documentation</h3> <ul> <li>Added docs about rand's use of const generics (<a href="https://github-redirect.dependabot.com/rust-random/rand/issues/1150">#1150</a>)</li> <li>Better random chars example (<a href="https://github-redirect.dependabot.com/rust-random/rand/issues/1157">#1157</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
3 years ago |
dependabot[bot] | 6db813f055 |
Bump webpack from 5.68.0 to 5.69.0 (#1841)
Bumps [webpack](https://github.com/webpack/webpack) from 5.68.0 to 5.69.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.69.0</h2> <h1>Features</h1> <ul> <li>automatically switch to an ESM compatible environment when enabling ESM output mode</li> <li>handle multiple alternative directories (e. g. due to <code>resolve.alias</code> or <code>resolve.modules</code>) when creating an context module</li> <li>add <code>util/types</code> to node.js built-in modules</li> <li>add <code>__webpack_exports_info__.<name>.canMangle</code> api</li> </ul> <h1>Bugfixes</h1> <ul> <li>fix bug in chunk graph generation which leads to modules being included in chunk desprite them being already included in parent chunks</li> <li>avoid writing more than 2GB at once during cache serialization (as workaround for node.js/libuv bug on MacOS)</li> <li>fix handling of whitespaces in semver ranges when using Module Federation</li> <li>avoid generating hashes which contain only numbers as they likely conflict with module ids</li> <li>fix resource name based placeholders for data uris</li> <li>fix cache serialization for context elements</li> <li>fix passing of <code>stage</code> option when instrumenting plugins for the ProfilingPlugin</li> <li>fix tracking of declarations in concatenated modules to avoid conflicts</li> <li>fix unstable mangling of exports</li> <li>fix handling of <code>#</code> in paths of loaders</li> <li>avoid unnecessary cache update when using <code>experiments.buildHttp</code></li> </ul> <h1>Contributing</h1> <ul> <li>update typescript and jest</li> </ul> <h1>Developer Experience</h1> <ul> <li>expose some additional typings for usage in webpack-cli</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
3 years ago |
Jevan Chan | be26b10ea8 |
Fix string.prototype methods and add static string methods (#1123)
<!--- 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 fixes existing string prototype methods in #13 and adds static methods. It changes the following: - Fix bugs in existing string prototype methods and improve readability (e.g. rename variables to match the names in spec) - Add static methods `String.raw`, `String.fromCharCode`, `String.fromCodePoint` - Fix broken unit tests Co-authored-by: RageKnify <RageKnify@gmail.com> |
3 years ago |
Djordje Lukic | 7e772768e2 |
Give the arrow function its proper name (#1832)
With this change an arrow function name is correctly set to the name of the variable: ```javascript const myFunction = () => {}; console.log(myFunction.name); // Prints "myFunction" ``` _Note:_ I'm still getting familiar with the codebase and am pretty new to Rust so I won't be offended if this isn't merged. I am actually surprised I had to make so many changes to give the right code the name it needed. Maybe there is a better way? I'm all ears :) |
3 years ago |
Iban Eguia | 53ef07b1a6 |
Using the new formatting arguments from Rust 1.58 (#1834)
In [Rust 1.58](https://blog.rust-lang.org/2022/01/13/Rust-1.58.0.html#captured-identifiers-in-format-strings), capturing of bindings were added to format strings. This makes things more clear, so I added this where possible. |
3 years ago |
dependabot[bot] | 7b2dc881a0 |
Bump follow-redirects from 1.14.7 to 1.14.8 (#1833)
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.7 to 1.14.8. <details> <summary>Commits</summary> <ul> <li><a href=" |
3 years ago |
dependabot[bot] | 7779c1a6f1 |
Bump boa-dev/criterion-compare-action from 3.0.2 to 3.1.0 (#1827)
Bumps [boa-dev/criterion-compare-action](https://github.com/boa-dev/criterion-compare-action) from 3.0.2 to 3.1.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/boa-dev/criterion-compare-action/releases">boa-dev/criterion-compare-action's releases</a>.</em></p> <blockquote> <h2>v3.1.0</h2> <p>Added the possibility to add feature flags for a benchmark (<a href="https://github-redirect.dependabot.com/boa-dev/criterion-compare-action/pull/32">boa-dev/criterion-compare-action#32</a>)</p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
3 years ago |
Iban Eguia | 5759447250 |
Reduced the size of AST nodes (#1821)
This PR boxes the `Try` and `TaggedTemplate` nodes reducing the size of the `Node` structure from 88 to 56 bytes. This should improve performance in most cases, by adding another indirection with code with `try` and templates. |
3 years ago |
Iban Eguia | 4a11ca1773 |
Fixed #1768 (#1820)
This Pull Request fixes/closes #1768. It adds one extra peeked token in the buffered lexer, since it didn't take into account that the stream might end just after the last peeked token. The panic was only happening in debug mode, but still, this was wrong. |
3 years ago |
Iban Eguia | 55e85adbc5 |
Using production builds for WebAssembly (#1825)
This commit selects the production build (instead of development) for the WebAssembly compilation with Webpack, used in our playground. This might make things a bit faster and smaller. I also took the opportunity to update all the dependencies and the Test262 suite, but unfortunately this doesn't solve #1824. |
3 years ago |
dependabot[bot] | b34d581db5 |
Bump monaco-editor from 0.31.1 to 0.32.0 (#1818)
Bumps [monaco-editor](https://github.com/microsoft/monaco-editor) from 0.31.1 to 0.32.0. <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.32.0] (03.02.2022)</h2> <h3>Breaking Changes</h3> <ul> <li>The binary format for <code>IEncodedLineTokens</code> has changed to support strikethrough text.</li> <li><code>IDiffEditor.getDomNode()</code> has been renamed to <code>IDiffEditor.getContainerDomNode()</code>.</li> <li><code>InlayHint.text</code> has been replaced by <code>InlayHint.label</code> and <code>InlayHintsProvider.provideInlayHints</code> now returns an <code>InlayHintList</code>.</li> </ul> <h3>Thank you</h3> <p>Contributions to <code>monaco-editor</code>:</p> <ul> <li><a href="https://github.com/blutorange"><code>@blutorange (Andre Wachsmuth)</code></a>: Implements <a href="https://github-redirect.dependabot.com/microsoft/monaco-editor/issues/2383">#2383</a> Add syntax modes for FreeMarker template language [PR <a href="https://github-redirect.dependabot.com/microsoft/monaco-editor/issues/2847">#2847</a>](<a href="https://github-redirect.dependabot.com/microsoft/monaco-editor/pull/2847">microsoft/monaco-editor#2847</a>)</li> <li><a href="https://github.com/forensicmike"><code>@forensicmike (forensicmike1)</code></a>: Add "cd monaco-editor" to the step by step commandline instructions for cloning and running the samples [PR <a href="https://github-redirect.dependabot.com/microsoft/monaco-editor/issues/2894">#2894</a>](<a href="https://github-redirect.dependabot.com/microsoft/monaco-editor/pull/2894">microsoft/monaco-editor#2894</a>)</li> <li><a href="https://github.com/juan-carlos-diaz"><code>@juan-carlos-diaz</code></a>: Fix <a href="https://github-redirect.dependabot.com/microsoft/monaco-editor/issues/2851">#2851</a> Highlight correctly the attributes and identifiers (with dashes) for Shell language [PR <a href="https://github-redirect.dependabot.com/microsoft/monaco-editor/issues/2871">#2871</a>](<a href="https://github-redirect.dependabot.com/microsoft/monaco-editor/pull/2871">microsoft/monaco-editor#2871</a>)</li> <li><a href="https://github.com/MasterOdin"><code>@MasterOdin (Matthew Peveler)</code></a>: Only run publish workflow on main monaco-editor repo [PR <a href="https://github-redirect.dependabot.com/microsoft/monaco-editor/issues/2926">#2926</a>](<a href="https://github-redirect.dependabot.com/microsoft/monaco-editor/pull/2926">microsoft/monaco-editor#2926</a>)</li> <li><a href="https://github.com/philipturner"><code>@philipturner (Philip Turner)</code></a> <ul> <li>Update Swift language specification to version 5.5 [PR <a href="https://github-redirect.dependabot.com/microsoft/monaco-editor/issues/2855">#2855</a>](<a href="https://github-redirect.dependabot.com/microsoft/monaco-editor/pull/2855">microsoft/monaco-editor#2855</a>)</li> <li>Add <a href="https://github.com/preconcurrency"><code>@preconcurrency</code></a> to Swift declaration attributes [PR <a href="https://github-redirect.dependabot.com/microsoft/monaco-editor/issues/2924">#2924</a>](<a href="https://github-redirect.dependabot.com/microsoft/monaco-editor/pull/2924">microsoft/monaco-editor#2924</a>)</li> </ul> </li> <li><a href="https://github.com/rcjsuen"><code>@rcjsuen (Remy Suen)</code></a>: Support hyphenated HTML tags in Markdown syntax [PR <a href="https://github-redirect.dependabot.com/microsoft/monaco-editor/issues/2864">#2864</a>](<a href="https://github-redirect.dependabot.com/microsoft/monaco-editor/pull/2864">microsoft/monaco-editor#2864</a>)</li> <li><a href="https://github.com/resistdesign"><code>@resistdesign (Ryan Graff)</code></a>: doc: (samples) Simplify Browser ESM Parcel build [PR <a href="https://github-redirect.dependabot.com/microsoft/monaco-editor/issues/2832">#2832</a>](<a href="https://github-redirect.dependabot.com/microsoft/monaco-editor/pull/2832">microsoft/monaco-editor#2832</a>)</li> <li><a href="https://github.com/ValeraS"><code>@ValeraS (Valeriy)</code></a> <ul> <li>fix(monaco-editor-webpack-plugin): load monaco-editor with webpack 4 [PR <a href="https://github-redirect.dependabot.com/microsoft/monaco-editor/issues/2818">#2818</a>](<a href="https://github-redirect.dependabot.com/microsoft/monaco-editor/pull/2818">microsoft/monaco-editor#2818</a>)</li> <li>tune(monaco-editor-webpack-plugin): expose plugin options type [PR <a href="https://github-redirect.dependabot.com/microsoft/monaco-editor/issues/2853">#2853</a>](<a href="https://github-redirect.dependabot.com/microsoft/monaco-editor/pull/2853">microsoft/monaco-editor#2853</a>)</li> </ul> </li> <li><a href="https://github.com/ZusorCode"><code>@ZusorCode (Tobias Messner)</code></a>: Add .cjs extension for javascript files [PR <a href="https://github-redirect.dependabot.com/microsoft/monaco-editor/issues/2929">#2929</a>](<a href="https://github-redirect.dependabot.com/microsoft/monaco-editor/pull/2929">microsoft/monaco-editor#2929</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/microsoft/monaco-editor/commits">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.31.1&new-version=0.32.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> |
3 years ago |
Iban Eguia | 3d21e83701 |
Fixed the GitHub actions badge (#1813)
This uses the official GitHub actions badge. |
3 years ago |
dependabot[bot] | 0dfe6ec8b2 |
Bump webpack from 5.67.0 to 5.68.0 (#1814)
Bumps [webpack](https://github.com/webpack/webpack) from 5.67.0 to 5.68.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.68.0</h2> <h1>Features</h1> <ul> <li>allow to disable compile time evaluation of import.meta.url</li> <li>add <code>__webpack_module__</code> and <code>__webpack_module__.id</code> to the api</li> </ul> <h1>Bugfixes</h1> <ul> <li>fix handling of errors thrown in async modules</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
3 years ago |
dependabot[bot] | 6777eb4286 |
Bump css-loader from 6.5.1 to 6.6.0 (#1817)
Bumps [css-loader](https://github.com/webpack-contrib/css-loader) from 6.5.1 to 6.6.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/webpack-contrib/css-loader/releases">css-loader's releases</a>.</em></p> <blockquote> <h2>v6.6.0</h2> <h2><a href="https://github.com/webpack-contrib/css-loader/compare/v6.5.1...v6.6.0">6.6.0</a> (2022-02-02)</h2> <h3>Features</h3> <ul> <li>added the <code>hashStrategy</code> option (<a href=" |
3 years ago |
dependabot[bot] | fdd23b154b |
Bump webpack-dev-server from 4.7.3 to 4.7.4 (#1816)
Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 4.7.3 to 4.7.4. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/webpack/webpack-dev-server/releases">webpack-dev-server's releases</a>.</em></p> <blockquote> <h2>v4.7.4</h2> <h3><a href="https://github.com/webpack/webpack-dev-server/compare/v4.7.3...v4.7.4">4.7.4</a> (2022-02-02)</h3> <h3>Bug Fixes</h3> <ul> <li>add <code>@types/express</code> (<a href="https://github-redirect.dependabot.com/webpack/webpack-dev-server/issues/4226">#4226</a>) (<a href=" |
3 years ago |
dependabot[bot] | 23208d8134 |
Bump copy-webpack-plugin from 10.2.3 to 10.2.4 (#1815)
Bumps [copy-webpack-plugin](https://github.com/webpack-contrib/copy-webpack-plugin) from 10.2.3 to 10.2.4. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/webpack-contrib/copy-webpack-plugin/releases">copy-webpack-plugin's releases</a>.</em></p> <blockquote> <h2>v10.2.4</h2> <h3><a href="https://github.com/webpack-contrib/copy-webpack-plugin/compare/v10.2.3...v10.2.4">10.2.4</a> (2022-01-31)</h3> <h3>Bug Fixes</h3> <ul> <li>types (<a href="https://github-redirect.dependabot.com/webpack-contrib/copy-webpack-plugin/issues/666">#666</a>) (<a href=" |
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 |
dependabot[bot] | d96b6407d5 |
Bump benchmark-action/github-action-benchmark from 1.11.3 to 1.12.0 (#1811)
Bumps [benchmark-action/github-action-benchmark](https://github.com/benchmark-action/github-action-benchmark) from 1.11.3 to 1.12.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/benchmark-action/github-action-benchmark/releases">benchmark-action/github-action-benchmark's releases</a>.</em></p>
<blockquote>
<h2>v1.12.0</h2>
<p>Feat: Support private repositories (<a href="https://github-redirect.dependabot.com/benchmark-action/github-action-benchmark/issues/105">#105</a>)
Chore: Bump action runner to node v16 (<a href="https://github-redirect.dependabot.com/benchmark-action/github-action-benchmark/issues/106">#106</a>)</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/benchmark-action/github-action-benchmark/blob/master/CHANGELOG.md">benchmark-action/github-action-benchmark's changelog</a>.</em></p>
<blockquote>
<h1><a href="https://github.com/benchmark-action/github-action-benchmark/releases/tag/v1.12.0">v1.12.0</a> - 28 Jan 2022</h1>
<ul>
<li><strong>Feat:</strong> Support private repositories (<a href="https://github-redirect.dependabot.com/benchmark-action/github-action-benchmark/issues/105">#105</a>)</li>
<li><strong>Chore</strong> Bump action runner to node v16 (<a href="https://github-redirect.dependabot.com/benchmark-action/github-action-benchmark/issues/106">#106</a>)</li>
</ul>
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="
|
3 years ago |
dependabot[bot] | f685a6757d |
Bump copy-webpack-plugin from 10.2.2 to 10.2.3 (#1810)
Bumps [copy-webpack-plugin](https://github.com/webpack-contrib/copy-webpack-plugin) from 10.2.2 to 10.2.3. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/webpack-contrib/copy-webpack-plugin/releases">copy-webpack-plugin's releases</a>.</em></p> <blockquote> <h2>v10.2.3</h2> <h3><a href="https://github.com/webpack-contrib/copy-webpack-plugin/compare/v10.2.2...v10.2.3">10.2.3</a> (2022-01-29)</h3> <h3>Bug Fixes</h3> <ul> <li>async <code>to</code> support (<a href=" |
3 years ago |
Iban Eguia | 98faa73bbe |
Update the PR benchmarks action (#1774)
This is just for debugging for now. If we find out a fix, we can merge it. |
3 years ago |
Iban Eguia | db067cf864 |
Updated the Test262 test suite (#1794)
This PR just updates the Test262 sub-module to bring all the new tests created in the last month and a half. |
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 |
dependabot[bot] | 4eb29c966a |
Bump serde_json from 1.0.76 to 1.0.78 (#1796)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.76 to 1.0.78. <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.78</h2> <ul> <li>Support deserializing as <code>&RawValue</code> in map key position, which would previously fail with <em>"invalid type: newtype struct"</em> (<a href="https://github-redirect.dependabot.com/serde-rs/json/issues/851">#851</a>)</li> </ul> <h2>v1.0.77</h2> <ul> <li>Include discord invite links in the published readme</li> <li>Improve compile error on compiling with neither <code>std</code> nor <code>alloc</code> feature enabled</li> <li>Include integration tests in published package (<a href="https://github-redirect.dependabot.com/serde-rs/json/issues/578">#578</a>)</li> </ul> </blockquote> </details> <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 |
raskad | 80794e5ba5 |
Adjust `compile` and `execute` to avoid clones (#1778)
It changes the following: - Adjust the `context` methods `compile` and `execute` to avoid clones on `StatementList` and `CodeBlock` 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 |