Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Merged by Bors] - Migrate to NPM and cleanup Playground #1951

Closed
wants to merge 4 commits into from

Conversation

jedel1043
Copy link
Member

This Pull Request closes #1912 by migrating to a NPM based build, hopefully making it easier to contribute to the Playground.

Also, reduces the number of features of the editor, since most of them were support for other languages or features that don't make sense in a playground environment. This considerably reduces the number of fetched files per page load and the total size of the playground.

@jedel1043 jedel1043 requested review from Razican, jasonwilliams, HalidOdat, RageKnify and raskad and removed request for Razican March 17, 2022 03:11
@jedel1043 jedel1043 added webassembly Anything related to using Boa with WASM javascript Pull requests that update Javascript code labels Mar 17, 2022
@jedel1043 jedel1043 added this to the v0.15.0 milestone Mar 17, 2022
Copy link
Member

@Razican Razican left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks mostly good, except for the wash dep update, which fails in clippy

boa_wasm/Cargo.toml Outdated Show resolved Hide resolved
@jasonwilliams
Copy link
Member

jasonwilliams commented Mar 17, 2022

i'm sure the Github/workflow files are using yarn too. Did you do a search for yarn references? Also you mentioned ESBuild couldn't be used because of top-level await, where was top level await being used?

@jasonwilliams jasonwilliams added the Internal Category for changelog label Mar 17, 2022
@jedel1043
Copy link
Member Author

i'm sure the Github/workflow files are using yarn too. Did you do a search for yarn references?

Forgot about that 😅, I'll fix it ASAP.

Also you mentioned ESBuild couldn't be used because of top-level await, where was top level await being used?

If it was in our code it would be easier to fix, but it's used by https://github.com/Tschrock/esbuild-plugin-wasm. I also tried to export the wasm build as --target web but it honestly makes the integration a bit sloppier.

@jasonwilliams
Copy link
Member

I’d been keen to take a look at this when I get some time, I’ve used the esbuild wasm plugin and not had issues before.
What do you mean about the workspace? Does our frontend build care about that?

@jedel1043
Copy link
Member Author

jedel1043 commented Mar 17, 2022

I’d been keen to take a look at this when I get some time, I’ve used the esbuild wasm plugin and not had issues before. What do you mean about the workspace? Does our frontend build care about that?

That's related to https://github.com/Tschrock/esbuild-plugin-wasm-pack. The cause is rustwasm/wasm-pack#642, since the plugin tries to run wasm-pack directly from the root instead of cding into the specified path (which WasmPackPlugin does correctly). I made a patch for it, and I'll open a PR soon.

@github-actions
Copy link

Test262 conformance changes

VM implementation

Test result main count PR count difference
Total 88,428 88,428 0
Passed 43,986 43,986 0
Ignored 21,495 21,495 0
Failed 22,947 22,947 0
Panics 0 0 0
Conformance 49.74% 49.74% 0.00%

@codecov
Copy link

codecov bot commented Mar 17, 2022

Codecov Report

Merging #1951 (8a9f78a) into main (3b4708c) will not change coverage.
The diff coverage is n/a.

❗ Current head 8a9f78a differs from pull request most recent head 55ac3b0. Consider uploading reports for the commit 55ac3b0 to get more accurate results

@@           Coverage Diff           @@
##             main    #1951   +/-   ##
=======================================
  Coverage   45.87%   45.87%           
=======================================
  Files         206      206           
  Lines       17102    17102           
=======================================
  Hits         7846     7846           
  Misses       9256     9256           

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 3b4708c...55ac3b0. Read the comment docs.

@jasonwilliams
Copy link
Member

https://github.com/boa-dev/boa/blob/main/.github/workflows/release.yml#L29-L39 will need changing to the npm equivalent

@jedel1043
Copy link
Member Author

https://github.com/boa-dev/boa/blob/main/.github/workflows/release.yml#L29-L39 will need changing to the npm equivalent

Fixed! I also decided to use node 14 since its package-lock.json is still compatible with older versions of npm.

@github-actions
Copy link

Benchmark for 2fd4956

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 506.0±1.88ns 448.6±2.72ns -11.34%
Arithmetic operations (Execution) 1735.7±3.39ns 1968.2±13.83ns +13.40%
Arithmetic operations (Parser) 5.3±0.01µs 5.3±0.01µs 0.00%
Array access (Compiler) 1266.2±2.17ns 1269.9±1.85ns +0.29%
Array access (Execution) 9.7±0.03µs 9.7±0.02µs 0.00%
Array access (Parser) 11.6±0.02µs 11.6±0.04µs 0.00%
Array creation (Compiler) 1823.6±6.09ns 1834.7±4.10ns +0.61%
Array creation (Execution) 3.2±0.00ms 3.2±0.01ms 0.00%
Array creation (Parser) 13.2±0.03µs 13.2±0.02µs 0.00%
Array pop (Compiler) 3.8±0.01µs 3.8±0.01µs 0.00%
Array pop (Execution) 1382.9±4.17µs 1391.0±4.06µs +0.59%
Array pop (Parser) 130.1±0.39µs 130.3±0.40µs +0.15%
Boolean Object Access (Compiler) 1118.1±3.88ns 979.9±4.65ns -12.36%
Boolean Object Access (Execution) 5.7±0.02µs 5.7±0.02µs 0.00%
Boolean Object Access (Parser) 14.0±0.02µs 14.0±0.03µs 0.00%
Clean js (Compiler) 3.4±0.01µs 3.4±0.01µs 0.00%
Clean js (Execution) 959.7±4.00µs 1088.0±7.97µs +13.37%
Clean js (Parser) 28.1±0.03µs 28.2±0.03µs +0.36%
Create Realm 264.7±0.42ns 272.4±0.45ns +2.91%
Dynamic Object Property Access (Compiler) 1627.5±8.83ns 1627.5±8.99ns 0.00%
Dynamic Object Property Access (Execution) 6.8±0.01µs 6.7±0.02µs -1.47%
Dynamic Object Property Access (Parser) 10.3±0.01µs 9.2±0.02µs -10.68%
Fibonacci (Compiler) 2.3±0.01µs 2.3±0.01µs 0.00%
Fibonacci (Execution) 1779.9±1.97µs 1779.4±4.85µs -0.03%
Fibonacci (Parser) 15.6±0.02µs 13.9±0.05µs -10.90%
For loop (Compiler) 1940.6±3.67ns 1928.4±3.49ns -0.63%
For loop (Execution) 42.6±0.10µs 42.8±0.11µs +0.47%
For loop (Parser) 13.5±0.04µs 11.9±0.04µs -11.85%
Mini js (Compiler) 3.3±0.01µs 3.3±0.01µs 0.00%
Mini js (Execution) 878.7±4.85µs 998.5±9.39µs +13.63%
Mini js (Parser) 24.7±0.04µs 24.7±0.03µs 0.00%
Number Object Access (Compiler) 1044.9±2.33ns 1038.9±3.76ns -0.57%
Number Object Access (Execution) 4.7±0.08µs 4.5±0.02µs -4.26%
Number Object Access (Parser) 10.9±0.01µs 10.9±0.02µs 0.00%
Object Creation (Compiler) 1387.5±5.54ns 1398.4±5.82ns +0.79%
Object Creation (Execution) 6.0±0.03µs 6.0±0.02µs 0.00%
Object Creation (Parser) 9.0±0.02µs 9.1±0.02µs +1.11%
RegExp (Compiler) 1605.6±1.61ns 1628.5±11.67ns +1.43%
RegExp (Execution) 12.5±0.07µs 12.6±0.08µs +0.80%
RegExp (Parser) 9.8±0.03µs 9.9±0.02µs +1.02%
RegExp Creation (Compiler) 1410.1±5.61ns 1404.3±5.54ns -0.41%
RegExp Creation (Execution) 9.4±0.06µs 9.3±0.04µs -1.06%
RegExp Creation (Parser) 8.2±0.03µs 8.3±0.01µs +1.22%
RegExp Literal (Compiler) 1619.7±9.13ns 1618.8±9.23ns -0.06%
RegExp Literal (Execution) 12.6±0.08µs 12.5±0.07µs -0.79%
RegExp Literal (Parser) 8.0±0.02µs 8.0±0.02µs 0.00%
RegExp Literal Creation (Compiler) 1393.0±5.35ns 1383.8±4.57ns -0.66%
RegExp Literal Creation (Execution) 9.3±0.05µs 9.3±0.05µs 0.00%
RegExp Literal Creation (Parser) 5.6±0.01µs 6.4±0.01µs +14.29%
Static Object Property Access (Compiler) 1411.2±6.17ns 1404.3±5.51ns -0.49%
Static Object Property Access (Execution) 6.3±0.02µs 6.2±0.03µs -1.59%
Static Object Property Access (Parser) 9.6±0.02µs 9.7±0.16µs +1.04%
String Object Access (Compiler) 1489.6±6.57ns 1478.2±6.06ns -0.77%
String Object Access (Execution) 7.5±0.02µs 7.6±0.02µs +1.33%
String Object Access (Parser) 13.8±0.01µs 13.7±0.03µs -0.72%
String comparison (Compiler) 2.1±0.01µs 2.1±0.02µs 0.00%
String comparison (Execution) 5.8±0.02µs 5.8±0.02µs 0.00%
String comparison (Parser) 10.8±0.03µs 11.1±0.04µs +2.78%
String concatenation (Compiler) 1624.2±2.89ns 1615.5±4.01ns -0.54%
String concatenation (Execution) 5.3±0.02µs 5.2±0.02µs -1.89%
String concatenation (Parser) 7.4±0.01µs 7.6±0.03µs +2.70%
String copy (Compiler) 1276.2±3.44ns 1287.7±2.91ns +0.90%
String copy (Execution) 4.7±0.02µs 4.6±0.01µs -2.13%
String copy (Parser) 5.5±0.01µs 5.6±0.02µs +1.82%
Symbols (Compiler) 902.4±3.68ns 900.8±3.61ns -0.18%
Symbols (Execution) 4.5±0.01µs 4.5±0.01µs 0.00%
Symbols (Parser) 4.3±0.01µs 3.8±0.01µs -11.63%

@github-actions
Copy link

Benchmark for 6879882

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 497.6±0.78ns 495.1±0.71ns -0.50%
Arithmetic operations (Execution) 1784.2±3.16ns 1783.2±3.80ns -0.06%
Arithmetic operations (Parser) 5.6±0.08µs 5.5±0.07µs -1.79%
Array access (Compiler) 1348.5±9.66ns 1329.0±1.08ns -1.45%
Array access (Execution) 10.1±0.05µs 10.1±0.04µs 0.00%
Array access (Parser) 12.1±0.04µs 12.2±0.09µs +0.83%
Array creation (Compiler) 1981.2±9.51ns 1953.7±4.31ns -1.39%
Array creation (Execution) 3.1±0.01ms 3.1±0.01ms 0.00%
Array creation (Parser) 13.6±0.08µs 13.7±0.07µs +0.74%
Array pop (Compiler) 3.8±0.01µs 3.8±0.01µs 0.00%
Array pop (Execution) 1397.7±9.81µs 1363.8±7.22µs -2.43%
Array pop (Parser) 137.0±0.20µs 137.1±0.20µs +0.07%
Boolean Object Access (Compiler) 1127.1±3.50ns 1132.7±4.29ns +0.50%
Boolean Object Access (Execution) 5.9±0.01µs 5.8±0.01µs -1.69%
Boolean Object Access (Parser) 14.3±0.05µs 14.4±0.10µs +0.70%
Clean js (Compiler) 3.7±0.01µs 3.7±0.01µs 0.00%
Clean js (Execution) 1064.4±6.32µs 1069.5±8.11µs +0.48%
Clean js (Parser) 29.3±0.03µs 29.3±0.05µs 0.00%
Create Realm 257.1±2.82ns 256.0±0.23ns -0.43%
Dynamic Object Property Access (Compiler) 1757.1±12.05ns 1741.0±5.10ns -0.92%
Dynamic Object Property Access (Execution) 6.9±0.03µs 6.8±0.02µs -1.45%
Dynamic Object Property Access (Parser) 10.6±0.03µs 10.7±0.02µs +0.94%
Fibonacci (Compiler) 2.4±0.01µs 2.5±0.01µs +4.17%
Fibonacci (Execution) 1893.0±10.85µs 1893.7±11.92µs +0.04%
Fibonacci (Parser) 16.3±0.20µs 16.2±0.05µs -0.61%
For loop (Compiler) 2.1±0.01µs 2.1±0.01µs 0.00%
For loop (Execution) 39.8±0.14µs 39.9±0.14µs +0.25%
For loop (Parser) 14.0±0.07µs 14.0±0.06µs 0.00%
Mini js (Compiler) 3.5±0.01µs 3.5±0.02µs 0.00%
Mini js (Execution) 979.9±5.29µs 981.1±5.41µs +0.12%
Mini js (Parser) 25.8±0.05µs 26.0±0.13µs +0.78%
Number Object Access (Compiler) 1087.2±7.56ns 1074.5±2.55ns -1.17%
Number Object Access (Execution) 4.7±0.07µs 4.7±0.04µs 0.00%
Number Object Access (Parser) 11.4±0.12µs 11.3±0.08µs -0.88%
Object Creation (Compiler) 1445.7±9.43ns 1468.4±3.19ns +1.57%
Object Creation (Execution) 6.2±0.03µs 6.2±0.09µs 0.00%
Object Creation (Parser) 9.3±0.02µs 9.4±0.06µs +1.08%
RegExp (Compiler) 1735.1±8.96ns 1712.6±4.22ns -1.30%
RegExp (Execution) 12.6±0.08µs 12.6±0.08µs 0.00%
RegExp (Parser) 10.2±0.07µs 10.4±0.18µs +1.96%
RegExp Creation (Compiler) 1497.0±3.86ns 1465.8±4.65ns -2.08%
RegExp Creation (Execution) 9.4±0.05µs 9.4±0.05µs 0.00%
RegExp Creation (Parser) 8.6±0.10µs 8.6±0.08µs 0.00%
RegExp Literal (Compiler) 1731.4±10.00ns 1707.4±5.08ns -1.39%
RegExp Literal (Execution) 12.6±0.09µs 12.6±0.07µs 0.00%
RegExp Literal (Parser) 8.4±0.09µs 8.5±0.09µs +1.19%
RegExp Literal Creation (Compiler) 1469.3±6.69ns 1472.0±6.46ns +0.18%
RegExp Literal Creation (Execution) 9.4±0.05µs 9.3±0.05µs -1.06%
RegExp Literal Creation (Parser) 6.7±0.08µs 6.7±0.05µs 0.00%
Static Object Property Access (Compiler) 1505.1±13.21ns 1504.3±3.97ns -0.05%
Static Object Property Access (Execution) 6.5±0.12µs 6.3±0.10µs -3.08%
Static Object Property Access (Parser) 10.0±0.05µs 10.1±0.07µs +1.00%
String Object Access (Compiler) 1538.2±9.15ns 1523.8±9.04ns -0.94%
String Object Access (Execution) 8.2±0.03µs 8.1±0.02µs -1.22%
String Object Access (Parser) 14.1±0.02µs 13.9±0.01µs -1.42%
String comparison (Compiler) 2.2±0.01µs 2.3±0.04µs +4.55%
String comparison (Execution) 6.0±0.01µs 6.0±0.03µs 0.00%
String comparison (Parser) 11.2±0.01µs 11.2±0.02µs 0.00%
String concatenation (Compiler) 1715.7±9.13ns 1719.8±4.82ns +0.24%
String concatenation (Execution) 5.5±0.03µs 5.5±0.02µs 0.00%
String concatenation (Parser) 7.7±0.01µs 7.7±0.02µs 0.00%
String copy (Compiler) 1343.6±12.14ns 1351.6±4.85ns +0.60%
String copy (Execution) 4.9±0.02µs 4.9±0.02µs 0.00%
String copy (Parser) 5.8±0.01µs 5.8±0.02µs 0.00%
Symbols (Compiler) 948.7±4.03ns 954.6±2.55ns +0.62%
Symbols (Execution) 4.6±0.01µs 4.7±0.02µs +2.17%
Symbols (Parser) 4.5±0.02µs 4.5±0.01µs 0.00%

@github-actions
Copy link

Benchmark for c66cbd3

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 582.1±23.36ns 558.9±24.34ns -3.99%
Arithmetic operations (Execution) 2.3±0.05µs 2.2±0.10µs -4.35%
Arithmetic operations (Parser) 5.2±0.19µs 5.3±0.22µs +1.92%
Array access (Compiler) 1436.3±49.08ns 1385.5±55.37ns -3.54%
Array access (Execution) 10.5±0.44µs 10.7±0.43µs +1.90%
Array access (Parser) 11.9±0.44µs 12.0±0.45µs +0.84%
Array creation (Compiler) 1980.4±93.99ns 1950.8±83.15ns -1.49%
Array creation (Execution) 3.7±0.10ms 3.5±0.12ms -5.41%
Array creation (Parser) 13.1±0.55µs 13.9±0.38µs +6.11%
Array pop (Compiler) 4.3±0.14µs 4.2±0.17µs -2.33%
Array pop (Execution) 1625.2±30.45µs 1544.7±56.68µs -4.95%
Array pop (Parser) 137.3±6.36µs 140.2±3.68µs +2.11%
Boolean Object Access (Compiler) 1094.4±48.02ns 1099.5±45.17ns +0.47%
Boolean Object Access (Execution) 6.7±0.16µs 6.3±0.30µs -5.97%
Boolean Object Access (Parser) 14.0±0.58µs 14.4±0.61µs +2.86%
Clean js (Compiler) 3.7±0.13µs 3.9±0.06µs +5.41%
Clean js (Execution) 1282.4±17.11µs 1193.9±46.64µs -6.90%
Clean js (Parser) 28.9±0.95µs 29.0±0.96µs +0.35%
Create Realm 295.2±12.17ns 314.9±6.99ns +6.67%
Dynamic Object Property Access (Compiler) 1800.2±54.93ns 1783.0±58.98ns -0.96%
Dynamic Object Property Access (Execution) 7.2±0.31µs 7.5±0.25µs +4.17%
Dynamic Object Property Access (Parser) 10.3±0.39µs 10.2±0.43µs -0.97%
Fibonacci (Compiler) 2.5±0.10µs 2.6±0.06µs +4.00%
Fibonacci (Execution) 2.0±0.08ms 1945.9±76.01µs -2.70%
Fibonacci (Parser) 16.0±0.63µs 16.4±0.76µs +2.50%
For loop (Compiler) 2.2±0.07µs 2.1±0.09µs -4.55%
For loop (Execution) 46.5±1.79µs 49.3±1.08µs +6.02%
For loop (Parser) 13.8±0.63µs 14.5±0.37µs +5.07%
Mini js (Compiler) 3.6±0.13µs 3.7±0.10µs +2.78%
Mini js (Execution) 1156.9±34.16µs 1102.4±39.64µs -4.71%
Mini js (Parser) 25.4±0.90µs 24.6±1.04µs -3.15%
Number Object Access (Compiler) 1063.3±44.92ns 1025.5±52.71ns -3.55%
Number Object Access (Execution) 5.4±0.20µs 4.9±0.19µs -9.26%
Number Object Access (Parser) 11.1±0.31µs 11.0±0.43µs -0.90%
Object Creation (Compiler) 1583.6±47.46ns 1598.4±45.62ns +0.93%
Object Creation (Execution) 6.6±0.28µs 6.6±0.30µs 0.00%
Object Creation (Parser) 9.1±0.35µs 9.0±0.40µs -1.10%
RegExp (Compiler) 1813.7±66.98ns 1785.1±75.72ns -1.58%
RegExp (Execution) 13.6±0.49µs 13.6±0.62µs 0.00%
RegExp (Parser) 10.2±0.34µs 10.2±0.27µs 0.00%
RegExp Creation (Compiler) 1538.4±62.65ns 1552.4±64.29ns +0.91%
RegExp Creation (Execution) 10.2±0.43µs 10.0±0.39µs -1.96%
RegExp Creation (Parser) 8.3±0.34µs 8.8±0.31µs +6.02%
RegExp Literal (Compiler) 1786.6±71.87ns 1811.5±67.98ns +1.39%
RegExp Literal (Execution) 13.8±0.49µs 13.5±0.59µs -2.17%
RegExp Literal (Parser) 8.3±0.26µs 8.3±0.24µs 0.00%
RegExp Literal Creation (Compiler) 1567.3±65.39ns 1544.5±67.40ns -1.45%
RegExp Literal Creation (Execution) 10.2±0.33µs 10.5±0.41µs +2.94%
RegExp Literal Creation (Parser) 6.3±0.26µs 6.7±0.22µs +6.35%
Static Object Property Access (Compiler) 1604.7±45.62ns 1538.4±66.62ns -4.13%
Static Object Property Access (Execution) 7.1±0.24µs 6.9±0.26µs -2.82%
Static Object Property Access (Parser) 9.6±0.39µs 9.7±0.42µs +1.04%
String Object Access (Compiler) 1503.8±73.90ns 1496.0±63.60ns -0.52%
String Object Access (Execution) 9.0±0.17µs 8.7±0.27µs -3.33%
String Object Access (Parser) 14.2±0.47µs 14.8±0.37µs +4.23%
String comparison (Compiler) 2.3±0.09µs 2.3±0.10µs 0.00%
String comparison (Execution) 6.3±0.27µs 6.3±0.27µs 0.00%
String comparison (Parser) 11.3±0.40µs 11.3±0.45µs 0.00%
String concatenation (Compiler) 1776.2±64.15ns 1809.0±80.17ns +1.85%
String concatenation (Execution) 6.2±0.14µs 5.9±0.22µs -4.84%
String concatenation (Parser) 7.7±0.26µs 7.6±0.27µs -1.30%
String copy (Compiler) 1417.1±58.40ns 1427.9±70.49ns +0.76%
String copy (Execution) 5.1±0.24µs 5.2±0.20µs +1.96%
String copy (Parser) 5.4±0.26µs 5.6±0.20µs +3.70%
Symbols (Compiler) 990.8±49.54ns 999.9±38.98ns +0.92%
Symbols (Execution) 5.0±0.16µs 5.2±0.12µs +4.00%
Symbols (Parser) 4.1±0.19µs 4.3±0.19µs +4.88%

.github/workflows/release.yml Outdated Show resolved Hide resolved
.github/workflows/webassembly.yml Outdated Show resolved Hide resolved
CONTRIBUTING.md Outdated Show resolved Hide resolved
@RageKnify
Copy link
Member

LGTM, agree with changing to node 16

.github/workflows/release.yml Outdated Show resolved Hide resolved
.github/workflows/webassembly.yml Outdated Show resolved Hide resolved
@jedel1043
Copy link
Member Author

Unrolled downgrade to v14, switched to npm ci command and bumped setup-node to v3

@github-actions
Copy link

Benchmark for 32ff1d7

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 513.7±1.75ns 509.3±1.44ns -0.86%
Arithmetic operations (Execution) 1973.7±1.84ns 1973.7±2.97ns 0.00%
Arithmetic operations (Parser) 5.2±0.01µs 5.2±0.01µs 0.00%
Array access (Compiler) 1255.6±2.90ns 1277.0±2.48ns +1.70%
Array access (Execution) 9.7±0.02µs 9.8±0.02µs +1.03%
Array access (Parser) 11.4±0.11µs 11.4±0.01µs 0.00%
Array creation (Compiler) 1814.9±4.00ns 1819.1±4.85ns +0.23%
Array creation (Execution) 3.2±0.00ms 3.2±0.00ms 0.00%
Array creation (Parser) 12.9±0.01µs 12.9±0.03µs 0.00%
Array pop (Compiler) 3.8±0.01µs 3.8±0.01µs 0.00%
Array pop (Execution) 1385.7±3.17µs 1395.5±4.54µs +0.71%
Array pop (Parser) 129.3±0.13µs 129.1±0.13µs -0.15%
Boolean Object Access (Compiler) 1120.9±4.03ns 1117.6±3.73ns -0.29%
Boolean Object Access (Execution) 5.7±0.02µs 5.7±0.02µs 0.00%
Boolean Object Access (Parser) 13.7±0.02µs 13.8±0.02µs +0.73%
Clean js (Compiler) 3.4±0.01µs 3.4±0.01µs 0.00%
Clean js (Execution) 1094.0±7.81µs 1088.0±6.02µs -0.55%
Clean js (Parser) 27.9±0.03µs 27.8±0.04µs -0.36%
Create Realm 266.0±2.71ns 266.1±0.28ns +0.04%
Dynamic Object Property Access (Compiler) 1633.1±5.65ns 1613.8±3.14ns -1.18%
Dynamic Object Property Access (Execution) 6.7±0.03µs 6.8±0.02µs +1.49%
Dynamic Object Property Access (Parser) 10.1±0.02µs 10.2±0.02µs +0.99%
Fibonacci (Compiler) 2.3±0.02µs 2.3±0.01µs 0.00%
Fibonacci (Execution) 1804.0±2.50µs 1816.0±3.23µs +0.67%
Fibonacci (Parser) 15.6±0.02µs 15.5±0.14µs -0.64%
For loop (Compiler) 1951.5±3.28ns 1953.7±3.37ns +0.11%
For loop (Execution) 42.5±0.24µs 42.6±0.10µs +0.24%
For loop (Parser) 13.2±0.04µs 13.3±0.03µs +0.76%
Mini js (Compiler) 3.2±0.01µs 3.3±0.01µs +3.12%
Mini js (Execution) 1004.6±8.16µs 997.6±6.40µs -0.70%
Mini js (Parser) 24.4±0.03µs 24.3±0.08µs -0.41%
Number Object Access (Compiler) 1037.9±2.62ns 1046.4±3.40ns +0.82%
Number Object Access (Execution) 4.7±0.02µs 4.6±0.03µs -2.13%
Number Object Access (Parser) 10.8±0.02µs 10.8±0.04µs 0.00%
Object Creation (Compiler) 1385.1±5.81ns 1369.9±5.69ns -1.10%
Object Creation (Execution) 6.0±0.02µs 6.1±0.02µs +1.67%
Object Creation (Parser) 8.8±0.01µs 8.8±0.02µs 0.00%
RegExp (Compiler) 1610.1±3.20ns 1619.7±4.22ns +0.60%
RegExp (Execution) 12.6±0.08µs 12.6±0.10µs 0.00%
RegExp (Parser) 9.8±0.02µs 9.7±0.02µs -1.02%
RegExp Creation (Compiler) 1409.7±5.98ns 1417.7±4.63ns +0.57%
RegExp Creation (Execution) 9.3±0.04µs 9.3±0.04µs 0.00%
RegExp Creation (Parser) 8.1±0.01µs 8.1±0.02µs 0.00%
RegExp Literal (Compiler) 1605.8±4.38ns 1633.7±4.30ns +1.74%
RegExp Literal (Execution) 12.6±0.08µs 12.6±0.19µs 0.00%
RegExp Literal (Parser) 7.9±0.02µs 7.9±0.02µs 0.00%
RegExp Literal Creation (Compiler) 1385.9±5.61ns 1405.4±5.59ns +1.41%
RegExp Literal Creation (Execution) 9.3±0.08µs 9.3±0.04µs 0.00%
RegExp Literal Creation (Parser) 6.2±0.02µs 6.2±0.02µs 0.00%
Static Object Property Access (Compiler) 1413.8±4.38ns 1416.3±35.86ns +0.18%
Static Object Property Access (Execution) 6.3±0.03µs 6.3±0.02µs 0.00%
Static Object Property Access (Parser) 9.5±0.03µs 9.5±0.01µs 0.00%
String Object Access (Compiler) 1484.5±7.90ns 1482.3±11.27ns -0.15%
String Object Access (Execution) 7.7±0.01µs 7.5±0.03µs -2.60%
String Object Access (Parser) 13.5±0.02µs 13.5±0.02µs 0.00%
String comparison (Compiler) 2.1±0.01µs 2.1±0.02µs 0.00%
String comparison (Execution) 5.8±0.01µs 5.8±0.01µs 0.00%
String comparison (Parser) 10.6±0.01µs 10.6±0.01µs 0.00%
String concatenation (Compiler) 1618.6±2.73ns 1653.4±5.13ns +2.15%
String concatenation (Execution) 5.3±0.02µs 5.3±0.02µs 0.00%
String concatenation (Parser) 7.3±0.01µs 7.3±0.01µs 0.00%
String copy (Compiler) 1286.4±2.64ns 1305.3±3.67ns +1.47%
String copy (Execution) 4.6±0.01µs 4.8±0.02µs +4.35%
String copy (Parser) 5.4±0.02µs 5.4±0.01µs 0.00%
Symbols (Compiler) 910.9±3.63ns 927.9±2.69ns +1.87%
Symbols (Execution) 4.5±0.01µs 4.5±0.01µs 0.00%
Symbols (Parser) 4.2±0.01µs 4.2±0.01µs 0.00%

@github-actions
Copy link

Benchmark for 96fd628

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 637.1±18.93ns 648.5±25.90ns +1.79%
Arithmetic operations (Execution) 2.3±0.09µs 2.4±0.08µs +4.35%
Arithmetic operations (Parser) 6.2±0.20µs 6.1±0.15µs -1.61%
Array access (Compiler) 1648.9±88.43ns 1634.6±47.35ns -0.87%
Array access (Execution) 11.9±0.43µs 11.9±0.60µs 0.00%
Array access (Parser) 13.3±0.42µs 13.4±0.53µs +0.75%
Array creation (Compiler) 2.3±0.08µs 2.4±0.12µs +4.35%
Array creation (Execution) 3.6±0.13ms 3.5±0.12ms -2.78%
Array creation (Parser) 15.2±0.92µs 15.0±0.53µs -1.32%
Array pop (Compiler) 4.6±0.14µs 4.6±0.19µs 0.00%
Array pop (Execution) 1555.6±49.82µs 1596.2±83.74µs +2.61%
Array pop (Parser) 159.3±4.73µs 161.5±8.09µs +1.38%
Boolean Object Access (Compiler) 1359.1±52.52ns 1352.6±74.94ns -0.48%
Boolean Object Access (Execution) 7.0±0.31µs 6.9±0.22µs -1.43%
Boolean Object Access (Parser) 16.1±0.64µs 15.8±0.40µs -1.86%
Clean js (Compiler) 4.3±0.17µs 4.3±0.26µs 0.00%
Clean js (Execution) 1258.1±38.14µs 1277.5±52.32µs +1.54%
Clean js (Parser) 32.4±1.23µs 32.2±1.16µs -0.62%
Create Realm 312.5±12.16ns 315.6±13.19ns +0.99%
Dynamic Object Property Access (Compiler) 2.0±0.05µs 2.0±0.08µs 0.00%
Dynamic Object Property Access (Execution) 8.5±0.40µs 8.2±0.35µs -3.53%
Dynamic Object Property Access (Parser) 12.0±0.55µs 11.9±0.39µs -0.83%
Fibonacci (Compiler) 2.9±0.09µs 2.9±0.12µs 0.00%
Fibonacci (Execution) 2.2±0.07ms 2.2±0.10ms 0.00%
Fibonacci (Parser) 17.9±0.56µs 18.1±0.59µs +1.12%
For loop (Compiler) 2.4±0.08µs 2.5±0.07µs +4.17%
For loop (Execution) 50.6±1.63µs 50.5±2.08µs -0.20%
For loop (Parser) 15.6±0.93µs 15.8±0.59µs +1.28%
Mini js (Compiler) 4.2±0.14µs 4.1±0.16µs -2.38%
Mini js (Execution) 1149.4±36.40µs 1154.2±46.44µs +0.42%
Mini js (Parser) 28.4±1.37µs 28.5±0.78µs +0.35%
Number Object Access (Compiler) 1272.7±49.95ns 1274.6±61.88ns +0.15%
Number Object Access (Execution) 5.6±0.24µs 5.6±0.24µs 0.00%
Number Object Access (Parser) 12.5±0.54µs 12.6±0.52µs +0.80%
Object Creation (Compiler) 1704.4±67.12ns 1759.2±78.61ns +3.22%
Object Creation (Execution) 7.6±0.35µs 7.5±0.37µs -1.32%
Object Creation (Parser) 10.2±0.32µs 10.3±0.44µs +0.98%
RegExp (Compiler) 2.0±0.07µs 2.0±0.07µs 0.00%
RegExp (Execution) 15.3±0.51µs 15.5±0.92µs +1.31%
RegExp (Parser) 11.3±0.76µs 11.3±0.40µs 0.00%
RegExp Creation (Compiler) 1759.6±53.69ns 1766.3±88.87ns +0.38%
RegExp Creation (Execution) 11.3±0.39µs 11.0±0.35µs -2.65%
RegExp Creation (Parser) 9.4±0.32µs 9.4±0.33µs 0.00%
RegExp Literal (Compiler) 2.0±0.17µs 2.1±0.09µs +5.00%
RegExp Literal (Execution) 15.0±0.48µs 15.5±0.93µs +3.33%
RegExp Literal (Parser) 9.1±0.39µs 9.3±0.46µs +2.20%
RegExp Literal Creation (Compiler) 1766.2±94.29ns 1793.8±66.86ns +1.56%
RegExp Literal Creation (Execution) 11.3±0.54µs 11.1±0.48µs -1.77%
RegExp Literal Creation (Parser) 7.2±0.30µs 7.2±0.27µs 0.00%
Static Object Property Access (Compiler) 1788.6±53.85ns 1796.3±80.98ns +0.43%
Static Object Property Access (Execution) 7.8±0.25µs 7.8±0.25µs 0.00%
Static Object Property Access (Parser) 10.9±0.70µs 11.0±0.49µs +0.92%
String Object Access (Compiler) 1799.4±76.14ns 1810.8±69.41ns +0.63%
String Object Access (Execution) 9.2±0.30µs 9.4±0.46µs +2.17%
String Object Access (Parser) 15.9±0.82µs 15.8±0.66µs -0.63%
String comparison (Compiler) 2.6±0.10µs 2.8±0.10µs +7.69%
String comparison (Execution) 7.0±0.25µs 7.2±0.32µs +2.86%
String comparison (Parser) 12.5±0.48µs 12.5±0.40µs 0.00%
String concatenation (Compiler) 2.0±0.07µs 2.1±0.10µs +5.00%
String concatenation (Execution) 6.5±0.21µs 6.5±0.22µs 0.00%
String concatenation (Parser) 8.7±0.32µs 8.7±0.26µs 0.00%
String copy (Compiler) 1657.9±58.44ns 1676.6±76.78ns +1.13%
String copy (Execution) 5.8±0.25µs 5.9±0.18µs +1.72%
String copy (Parser) 6.5±0.31µs 6.4±0.19µs -1.54%
Symbols (Compiler) 1188.4±41.25ns 1186.3±39.13ns -0.18%
Symbols (Execution) 5.6±0.24µs 5.6±0.42µs 0.00%
Symbols (Parser) 4.9±0.17µs 4.8±0.19µs -2.04%

@github-actions
Copy link

Benchmark for 3ecdfba

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 613.8±8.97ns 600.2±8.72ns -2.22%
Arithmetic operations (Execution) 2.4±0.02µs 2.3±0.04µs -4.17%
Arithmetic operations (Parser) 5.7±0.06µs 5.6±0.07µs -1.75%
Array access (Compiler) 1513.1±25.81ns 1490.4±22.05ns -1.50%
Array access (Execution) 11.5±0.13µs 11.4±0.13µs -0.87%
Array access (Parser) 12.3±0.18µs 12.4±0.17µs +0.81%
Array creation (Compiler) 2.1±0.02µs 2.1±0.02µs 0.00%
Array creation (Execution) 3.8±0.04ms 3.8±0.03ms 0.00%
Array creation (Parser) 14.1±0.16µs 14.1±0.14µs 0.00%
Array pop (Compiler) 4.4±0.13µs 4.5±0.03µs +2.27%
Array pop (Execution) 1651.5±24.48µs 1643.4±33.07µs -0.49%
Array pop (Parser) 146.8±1.86µs 146.4±1.57µs -0.27%
Boolean Object Access (Compiler) 1181.3±13.14ns 1177.2±16.23ns -0.35%
Boolean Object Access (Execution) 6.8±0.08µs 6.7±0.09µs -1.47%
Boolean Object Access (Parser) 15.1±0.21µs 15.3±0.09µs +1.32%
Clean js (Compiler) 3.9±0.06µs 3.9±0.06µs 0.00%
Clean js (Execution) 1289.6±12.08µs 1284.5±22.21µs -0.40%
Clean js (Parser) 30.3±0.29µs 30.0±0.79µs -0.99%
Create Realm 316.2±5.25ns 316.1±4.26ns -0.03%
Dynamic Object Property Access (Compiler) 1924.5±13.61ns 1897.1±37.56ns -1.42%
Dynamic Object Property Access (Execution) 8.0±0.05µs 7.9±0.06µs -1.25%
Dynamic Object Property Access (Parser) 10.8±0.19µs 10.8±0.15µs 0.00%
Fibonacci (Compiler) 2.6±0.04µs 2.7±0.02µs +3.85%
Fibonacci (Execution) 2.1±0.04ms 2.1±0.01ms 0.00%
Fibonacci (Parser) 17.0±0.20µs 17.0±0.26µs 0.00%
For loop (Compiler) 2.3±0.02µs 2.3±0.03µs 0.00%
For loop (Execution) 51.0±0.22µs 50.3±0.58µs -1.37%
For loop (Parser) 14.6±0.21µs 14.6±0.14µs 0.00%
Mini js (Compiler) 3.9±0.02µs 3.8±0.04µs -2.56%
Mini js (Execution) 1177.2±14.98µs 1179.3±13.69µs +0.18%
Mini js (Parser) 26.5±0.20µs 26.7±0.19µs +0.75%
Number Object Access (Compiler) 1124.5±16.41ns 1113.5±11.73ns -0.98%
Number Object Access (Execution) 5.4±0.05µs 5.4±0.06µs 0.00%
Number Object Access (Parser) 11.6±0.14µs 11.6±0.17µs 0.00%
Object Creation (Compiler) 1640.5±21.11ns 1650.2±11.61ns +0.59%
Object Creation (Execution) 7.1±0.10µs 7.1±0.06µs 0.00%
Object Creation (Parser) 9.5±0.13µs 9.5±0.15µs 0.00%
RegExp (Compiler) 1910.8±28.68ns 1926.0±17.34ns +0.80%
RegExp (Execution) 14.5±0.21µs 14.5±0.16µs 0.00%
RegExp (Parser) 10.4±0.19µs 10.5±0.12µs +0.96%
RegExp Creation (Compiler) 1647.2±30.07ns 1685.3±15.66ns +2.31%
RegExp Creation (Execution) 11.1±0.07µs 11.0±0.09µs -0.90%
RegExp Creation (Parser) 8.8±0.10µs 8.7±0.10µs -1.14%
RegExp Literal (Compiler) 1909.4±34.71ns 1924.7±20.66ns +0.80%
RegExp Literal (Execution) 14.5±0.14µs 14.5±0.20µs 0.00%
RegExp Literal (Parser) 8.5±0.09µs 8.5±0.11µs 0.00%
RegExp Literal Creation (Compiler) 1662.9±19.49ns 1650.9±37.90ns -0.72%
RegExp Literal Creation (Execution) 11.0±0.07µs 11.0±0.06µs 0.00%
RegExp Literal Creation (Parser) 6.6±0.10µs 6.7±0.07µs +1.52%
Static Object Property Access (Compiler) 1691.8±20.64ns 1666.7±18.15ns -1.48%
Static Object Property Access (Execution) 7.5±0.05µs 7.5±0.08µs 0.00%
Static Object Property Access (Parser) 10.3±0.12µs 10.2±0.12µs -0.97%
String Object Access (Compiler) 1624.4±23.93ns 1615.8±22.10ns -0.53%
String Object Access (Execution) 9.0±0.19µs 9.0±0.09µs 0.00%
String Object Access (Parser) 14.9±0.17µs 14.9±0.14µs 0.00%
String comparison (Compiler) 2.5±0.03µs 2.5±0.05µs 0.00%
String comparison (Execution) 6.9±0.09µs 6.9±0.08µs 0.00%
String comparison (Parser) 11.7±0.15µs 11.6±0.14µs -0.85%
String concatenation (Compiler) 1974.3±32.26ns 1955.2±13.03ns -0.97%
String concatenation (Execution) 6.2±0.09µs 6.2±0.08µs 0.00%
String concatenation (Parser) 7.8±0.14µs 7.8±0.11µs 0.00%
String copy (Compiler) 1569.7±10.73ns 1524.7±23.58ns -2.87%
String copy (Execution) 5.5±0.07µs 5.5±0.09µs 0.00%
String copy (Parser) 5.8±0.05µs 5.8±0.16µs 0.00%
Symbols (Compiler) 1081.4±12.57ns 1079.1±11.32ns -0.21%
Symbols (Execution) 5.3±0.02µs 5.3±0.06µs 0.00%
Symbols (Parser) 4.4±0.04µs 4.4±0.05µs 0.00%

@Razican
Copy link
Member

Razican commented Mar 20, 2022

bors r+

bors bot pushed a commit that referenced this pull request Mar 20, 2022
This Pull Request closes #1912 by migrating to a NPM based build, hopefully making it easier to contribute to the Playground.

Also, reduces the number of features of the editor, since most of them were support for other languages or features that don't make sense in a playground environment. This considerably reduces the number of fetched files per page load and the total size of the playground.
@bors
Copy link

bors bot commented Mar 20, 2022

Pull request successfully merged into main.

Build succeeded:

@bors bors bot changed the title Migrate to NPM and cleanup Playground [Merged by Bors] - Migrate to NPM and cleanup Playground Mar 20, 2022
@bors bors bot closed this Mar 20, 2022
@bors bors bot deleted the npm-mig branch March 20, 2022 14:08
Razican pushed a commit that referenced this pull request Jun 8, 2022
This Pull Request closes #1912 by migrating to a NPM based build, hopefully making it easier to contribute to the Playground.

Also, reduces the number of features of the editor, since most of them were support for other languages or features that don't make sense in a playground environment. This considerably reduces the number of fetched files per page load and the total size of the playground.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Internal Category for changelog javascript Pull requests that update Javascript code webassembly Anything related to using Boa with WASM
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Migrate to npm
5 participants