From 698bd56e61ac20cdca98ac8a97e9f0ce63384c94 Mon Sep 17 00:00:00 2001 From: WorldSEnder Date: Sun, 11 Dec 2022 14:07:14 +0000 Subject: [PATCH] Update benchmark crates and workflow (#3027) * update benchmark crates and workflow * default to the merge commit for benchmarking * setup framework benchmark early, after the caches this doesn't restore the comments on PRs; benchmark-action/github-action-benchmark has open issues about it --- .github/workflows/benchmark.yml | 200 ++++------------------ .github/workflows/post-benchmark.yml | 42 +++++ tools/Cargo.lock | 91 ++-------- tools/benchmark-hooks/Cargo.toml | 15 +- tools/benchmark-hooks/package-lock.json | 202 ++++++++++++++++++++--- tools/benchmark-hooks/package.json | 8 +- tools/benchmark-hooks/src/lib.rs | 4 +- tools/benchmark-struct/Cargo.toml | 15 +- tools/benchmark-struct/package-lock.json | 200 +++++++++++++++++++--- tools/benchmark-struct/package.json | 8 +- tools/benchmark-struct/src/lib.rs | 6 +- 11 files changed, 495 insertions(+), 296 deletions(-) create mode 100644 .github/workflows/post-benchmark.yml diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index 68e1d6cc7..5c8464d0b 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -18,52 +18,19 @@ permissions: contents: write jobs: - results: - runs-on: ubuntu-latest - needs: benchmark - - steps: - - uses: actions/checkout@v2 - - - run: | - touch results.json - echo '${{ needs.benchmark.outputs.results }}' >> results.json - - # gh-pages branch is updated and pushed automatically with extracted benchmark data - - name: Store benchmark result - uses: benchmark-action/github-action-benchmark@v1 - # This needs access to secersts so only run it on push to master - if: github.event_name == 'push' - with: - name: "Yew master branch benchmarks (Lower is better)" - tool: "customSmallerIsBetter" - output-file-path: results.json - gh-pages-branch: "gh-pages" - # Access token to deploy GitHub Pages branch - github-token: ${{ secrets.GITHUB_TOKEN }} - # Push and deploy GitHub pages branch automatically - alert-threshold: "200%" - alert-comment-cc-users: "@yewstack/yew" - auto-push: true - save-data-file: true - benchmark: runs-on: ubuntu-latest - outputs: - results: ${{ steps.results.outputs.stdout }} steps: - uses: actions/checkout@v2 with: path: "./yew" - repository: ${{ github.event.pull_request.head.repo.full_name }} - ref: "${{ github.head_ref }}" - uses: actions/checkout@v2 with: repository: krausest/js-framework-benchmark path: "./js-framework-benchmark" - ref: 678cd09a8e02b9a01bcb9b71dc9248d17a33ff82 + ref: 3e0fff7973417acd8b00c2fc3e94a01dfa6f3438 - name: Setup toolchain uses: dtolnay/rust-toolchain@master @@ -92,161 +59,64 @@ jobs: ${{ runner.os }}-benchmark- ${{ runner.os }} - # Optimisation flags has no effect unless set at workspace level. - - name: Write optimisation flags + - name: setup js-framework-benchmark + shell: bash + working-directory: js-framework-benchmark run: | - cat >> Cargo.toml << EOF - [profile.release] - lto = true - codegen-units = 1 - panic = "abort" - EOF - working-directory: yew + npm ci + npm run install-server + npm run install-webdriver-ts - - name: save yew-struct setup + - name: setup benchmark-struct benchmark shell: bash run: | - mkdir yew-struct-setup - cp -r js-framework-benchmark/frameworks/keyed/yew/* yew-struct-setup/ - cd yew-struct-setup/bundled-dist - rm -rf ./* - # Will be enabled after https://github.com/krausest/js-framework-benchmark/pull/985 gets merged - # - name: save yew-hooks setup - # shell: bash - # run: | - # mkdir yew-hooks-setup - # cp -r js-framework-benchmark/frameworks/keyed/yew-hooks/* yew-hooks-setup/ - # cd yew-hooks-setup/bundled-dist - # rm -rf ./* - - - name: replace framework version in yew - shell: bash - run: | - replace=" \"frameworkVersion\": \"\"" - input=$(cat yew-struct-setup/package.json) - output=$(echo "$input" | sed -e "s@\"frameworkVersion\": .*\"@$replace@g") - if [[ "$input" == "$output" ]]; then - echo "ERROR: failed to configure framework version" - exit 1 - fi - echo "$output" > yew-struct-setup/package.json - echo "$output" - - # Will be enabled after https://github.com/krausest/js-framework-benchmark/pull/985 gets merged - # - name: replace framework version in yew-hooks - # shell: bash - # run: | - # replace=" \"frameworkVersion\": \"\"" - # input=$(cat yew-hooks-setup/package.json) - # output=$(echo "$input" | sed -e "s@\"frameworkVersion\": .*\"@$replace@g") - # if [[ "$input" == "$output" ]]; then - # echo "ERROR: failed to configure framework version" - # exit 1 - # fi - # echo "$output" > yew-hooks-setup/package.json - # echo "$output" - - - name: delete all frameworks - shell: bash - run: | - cd js-framework-benchmark/frameworks/keyed - rm -rf ./* - cd ../non-keyed - rm -rf ./* - - - name: create framework folders - shell: bash - run: | - cd js-framework-benchmark/frameworks/keyed - mkdir yew-struct - # Will be enabled after https://github.com/krausest/js-framework-benchmark/pull/985 gets merged - # mkdir yew-hooks - - - name: copy necessary framework files - shell: bash - run: | - cp -r yew-struct-setup/* js-framework-benchmark/frameworks/keyed/yew-struct/ - # Will be enabled after https://github.com/krausest/js-framework-benchmark/pull/985 gets merged - # cp -r yew-hooks-setup/* js-framework-benchmark/frameworks/keyed/yew-hooks/ + sed -i "s#../..#`realpath ./yew/`#" yew/tools/benchmark-struct/Cargo.toml + rm -rf js-framework-benchmark/frameworks/keyed/yew/* + cp -r yew/tools/benchmark-struct/* js-framework-benchmark/frameworks/keyed/yew/ - name: build benchmark-struct app shell: bash + working-directory: js-framework-benchmark/frameworks/keyed/yew/ run: | - cd yew/tools/benchmark-struct npm ci npm run build-prod-without-tools-install + - name: setup yew-hooks benchmark + shell: bash + run: | + sed -i "s#../..#`realpath ./yew/`#" yew/tools/benchmark-hooks/Cargo.toml + rm -rf js-framework-benchmark/frameworks/keyed/yew-hooks/* + cp -r yew/tools/benchmark-hooks/* js-framework-benchmark/frameworks/keyed/yew-hooks/ + - name: build benchmark-hooks app shell: bash + working-directory: js-framework-benchmark/frameworks/keyed/yew-hooks/ run: | - cd yew/tools/benchmark-hooks npm ci npm run build-prod-without-tools-install - - name: move dist files + - name: run js-framework-benchmark server shell: bash - run: | - mv yew/tools/benchmark-struct/bundled-dist js-framework-benchmark/frameworks/keyed/yew-struct/ - # Will be enabled after https://github.com/krausest/js-framework-benchmark/pull/985 gets merged - # mv yew/tools/benchmark-hooks/bundled-dist js-framework-benchmark/frameworks/keyed/yew-hooks/ - - - name: js-framework-benchmark npm ci - shell: bash - run: | - cd js-framework-benchmark - npm ci - - - name: js-framework-benchmark npm start - shell: bash - run: | - cd js-framework-benchmark - npm start & - - - name: js-framework-benchmark/webdriver-ts npm ci - shell: bash - run: | - cd js-framework-benchmark/webdriver-ts - npm ci - npm install chromedriver --chromedriver-force-download - - - name: js-framework-benchmark/webdriver-ts npm run compile - shell: bash - run: | - cd js-framework-benchmark/webdriver-ts - npm run compile - - - name: js-framework-benchmark npm run build-prod - shell: bash - run: | - cd js-framework-benchmark - npm run build-prod + working-directory: js-framework-benchmark + run: npm start & - name: js-framework-benchmark/webdriver-ts npm run bench shell: bash - run: | - cd js-framework-benchmark/webdriver-ts - npm run bench -- --headless - - - name: transform results into json - shell: bash - run: | - cd js-framework-benchmark/webdriver-ts/results - touch temp.txt - echo "[" >> temp.txt - for filename in *.json; do cat ${filename} >> temp.txt; echo "," >> temp.txt; done - sed -i '$ s/.$//' temp.txt #remove trailing comma - echo "]" >> temp.txt - mv temp.txt results.json - - - name: Build process-benchmark-results - shell: bash - run: | - cd yew/tools - cargo build --release -p process-benchmark-results + working-directory: js-framework-benchmark/webdriver-ts + run: npm run tsbench -- --framework keyed/yew keyed/yew-hooks --runner playwright --headless - name: transform results to be fit for display benchmark-action/github-action-benchmark@v1 uses: mathiasvr/command-output@v1 id: results with: - run: cat js-framework-benchmark/webdriver-ts/results/results.json | ./yew/tools/target/release/process-benchmark-results + run: | + mkdir artifacts/ + jq -s . js-framework-benchmark/webdriver-ts/results/*.json | cargo run --manifest-path yew/tools/Cargo.toml --release -p process-benchmark-results > artifacts/results.json + echo ${{ github.event.number }} > artifacts/PR_INFO + - name: Upload result artifacts + uses: actions/upload-artifact@v3 + with: + name: results + path: artifacts/ + if-no-files-found: error diff --git a/.github/workflows/post-benchmark.yml b/.github/workflows/post-benchmark.yml new file mode 100644 index 000000000..69f00c0a1 --- /dev/null +++ b/.github/workflows/post-benchmark.yml @@ -0,0 +1,42 @@ +name: "Post benchmark results" + +on: + workflow_run: + workflows: ["Benchmark"] + types: + - completed + +jobs: + post-benchmark-results: + runs-on: ubuntu-latest + if: github.event.workflow_run.conclusion == 'success' + + steps: + - name: Download result artifacts + uses: Legit-Labs/action-download-artifact@v2 + with: + workflow: benchmark.yml + run_id: ${{ github.event.workflow_run.id }} + name: results + + - name: Test for PR + uses: mathiasvr/command-output@v1 + id: test-pr + with: + run: cat PR_INFO + + # gh-pages branch is updated and pushed automatically with extracted benchmark data + - name: Store benchmark result + uses: benchmark-action/github-action-benchmark@v1 + with: + name: "Yew master branch benchmarks (Lower is better)" + tool: "customSmallerIsBetter" + output-file-path: results.json + gh-pages-branch: "gh-pages" + # Access token to deploy GitHub Pages branch + github-token: ${{ secrets.GITHUB_TOKEN }} + # Push and deploy GitHub pages branch automatically + alert-threshold: "200%" + alert-comment-cc-users: "@yewstack/yew" + auto-push: true + save-data-file: ${{ steps.test-pr.outputs.stdout == "" }} diff --git a/tools/Cargo.lock b/tools/Cargo.lock index 830b26dee..e5301afb8 100644 --- a/tools/Cargo.lock +++ b/tools/Cargo.lock @@ -85,7 +85,7 @@ dependencies = [ "serde_json", "tabled", "tokio", - "yew 0.19.3", + "yew", ] [[package]] @@ -405,7 +405,7 @@ name = "function_router" version = "0.1.0" dependencies = [ "getrandom", - "gloo 0.8.0", + "gloo", "instant", "lipsum", "log", @@ -413,7 +413,7 @@ dependencies = [ "rand", "serde", "wasm-logger", - "yew 0.19.3", + "yew", "yew-router", ] @@ -528,22 +528,6 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" -[[package]] -name = "gloo" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23947965eee55e3e97a5cd142dd4c10631cc349b48cecca0ed230fd296f568cd" -dependencies = [ - "gloo-console", - "gloo-dialogs", - "gloo-events", - "gloo-file", - "gloo-render", - "gloo-storage", - "gloo-timers", - "gloo-utils", -] - [[package]] name = "gloo" version = "0.8.0" @@ -975,7 +959,7 @@ dependencies = [ "rand", "wasm-bindgen", "web-sys", - "yew 0.19.3 (registry+https://github.com/rust-lang/crates.io-index)", + "yew", ] [[package]] @@ -986,7 +970,7 @@ dependencies = [ "rand", "wasm-bindgen", "web-sys", - "yew 0.19.3 (registry+https://github.com/rust-lang/crates.io-index)", + "yew", ] [[package]] @@ -1383,7 +1367,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03b55e106e5791fa5a13abd13c85d6127312e8e09098059ca2bc9b03ca4cf488" dependencies = [ "futures", - "gloo 0.8.0", + "gloo", "num_cpus", "once_cell", "pin-project", @@ -1541,12 +1525,6 @@ dependencies = [ "windows-sys 0.36.1", ] -[[package]] -name = "scoped-tls-hkt" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e9d7eaddb227e8fbaaa71136ae0e1e913ca159b86c7da82f3e8f0044ad3a63" - [[package]] name = "scopeguard" version = "1.1.0" @@ -2131,14 +2109,14 @@ dependencies = [ "boolinator", "derive_more", "glob", - "gloo 0.8.0", + "gloo", "js-sys", "tokio", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", "weblog", - "yew 0.19.3", + "yew", "yew-agent", "yew-router", ] @@ -2285,13 +2263,13 @@ dependencies = [ [[package]] name = "yew" -version = "0.19.3" +version = "0.20.0" dependencies = [ "base64ct", "bincode", "console_error_panic_hook", "futures", - "gloo 0.8.0", + "gloo", "html-escape", "implicit-clone", "indexmap", @@ -2306,39 +2284,20 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "yew-macro 0.19.3", -] - -[[package]] -name = "yew" -version = "0.19.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a1ccb53e57d3f7d847338cf5758befa811cabe207df07f543c06f502f9998cd" -dependencies = [ - "console_error_panic_hook", - "gloo 0.4.2", - "gloo-utils", - "indexmap", - "js-sys", - "scoped-tls-hkt", - "slab", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "yew-macro 0.19.3 (registry+https://github.com/rust-lang/crates.io-index)", + "yew-macro", ] [[package]] name = "yew-agent" -version = "0.1.0" +version = "0.2.0" dependencies = [ "gloo-worker 0.1.2", - "yew 0.19.3", + "yew", ] [[package]] name = "yew-macro" -version = "0.19.3" +version = "0.20.0" dependencies = [ "boolinator", "once_cell", @@ -2349,25 +2308,11 @@ dependencies = [ "syn", ] -[[package]] -name = "yew-macro" -version = "0.19.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fab79082b556d768d6e21811869c761893f0450e1d550a67892b9bce303b7bb" -dependencies = [ - "boolinator", - "lazy_static", - "proc-macro-error", - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "yew-router" -version = "0.16.0" +version = "0.17.0" dependencies = [ - "gloo 0.8.0", + "gloo", "js-sys", "route-recognizer", "serde", @@ -2375,13 +2320,13 @@ dependencies = [ "tracing", "wasm-bindgen", "web-sys", - "yew 0.19.3", + "yew", "yew-router-macro", ] [[package]] name = "yew-router-macro" -version = "0.16.0" +version = "0.17.0" dependencies = [ "proc-macro2", "quote", diff --git a/tools/benchmark-hooks/Cargo.toml b/tools/benchmark-hooks/Cargo.toml index 368d7fcfd..bd2272873 100644 --- a/tools/benchmark-hooks/Cargo.toml +++ b/tools/benchmark-hooks/Cargo.toml @@ -8,11 +8,16 @@ edition = "2021" crate-type = ["cdylib"] [dependencies] -rand = { version = "0.8.4", features = ["small_rng"] } -getrandom = { version = "0.2.1", features = ["js"] } -wasm-bindgen = "0.2.80" -web-sys = { version = "0.3.55", features = ["Window"]} -yew = "0.19.3" +rand = { version = "0.8.5", features = ["small_rng"] } +getrandom = { version = "0.2.8", features = ["js"] } +wasm-bindgen = "0.2.83" +web-sys = { version = "0.3.60", features = ["Window"]} +yew = { version = "0.20.0", features = ["csr"], path = "../../packages/yew" } + +[profile.release] +lto = true +codegen-units = 1 +panic = "abort" [package.metadata.wasm-pack.profile.release] wasm-opt = ['-O4'] diff --git a/tools/benchmark-hooks/package-lock.json b/tools/benchmark-hooks/package-lock.json index 62ce10e68..4699b4eb7 100644 --- a/tools/benchmark-hooks/package-lock.json +++ b/tools/benchmark-hooks/package-lock.json @@ -1,8 +1,170 @@ { - "name": "js-framework-benchmark-non-keyed-yew", + "name": "js-framework-benchmark-non-keyed-yew-hooks", "version": "1.0.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "js-framework-benchmark-non-keyed-yew-hooks", + "version": "1.0.0", + "license": "ISC", + "devDependencies": { + "cpr": "^3.0.1", + "rimraf": "^2.6.3" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cpr": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cpr/-/cpr-3.0.1.tgz", + "integrity": "sha512-Xch4PXQ/KC8lJ+KfJ9JI6eG/nmppLrPPWg5Q+vh65Qr9EjuJEubxh/H/Le1TmCZ7+Xv7iJuNRqapyOFZB+wsxA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.5", + "minimist": "^1.2.0", + "mkdirp": "~0.5.1", + "rimraf": "^2.5.4" + }, + "bin": { + "cpr": "bin/cpr" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + } + }, "dependencies": { "balanced-match": { "version": "1.0.2", @@ -23,13 +185,13 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, "cpr": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/cpr/-/cpr-3.0.1.tgz", - "integrity": "sha1-uaVQOLfNgaNcF7l2GJW9hJau8eU=", + "integrity": "sha512-Xch4PXQ/KC8lJ+KfJ9JI6eG/nmppLrPPWg5Q+vh65Qr9EjuJEubxh/H/Le1TmCZ7+Xv7iJuNRqapyOFZB+wsxA==", "dev": true, "requires": { "graceful-fs": "^4.1.5", @@ -41,33 +203,33 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "requires": { "once": "^1.3.0", @@ -96,18 +258,18 @@ "dev": true }, "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "requires": { - "minimist": "^1.2.5" + "minimist": "^1.2.6" } }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "requires": { "wrappy": "1" @@ -116,7 +278,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true }, "rimraf": { @@ -131,7 +293,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true } } diff --git a/tools/benchmark-hooks/package.json b/tools/benchmark-hooks/package.json index 91d5c76b8..14ba90be5 100644 --- a/tools/benchmark-hooks/package.json +++ b/tools/benchmark-hooks/package.json @@ -1,10 +1,14 @@ { - "name": "js-framework-benchmark-non-keyed-yew-hooks", + "name": "js-framework-benchmark-keyed-yew-hooks", "version": "1.0.0", "description": "Benchmark for Yew Hooks", "license": "ISC", "js-framework-benchmark": { - "frameworkVersion": "latest" + "frameworkVersion": "latest", + "frameworkHomeURL": "https://yew.rs/", + "issues": [ + 1139 + ] }, "scripts": { "build-prod": "echo This is a no-op. && echo Due to heavy dependencies, the generated javascript is already provided. && echo If you really want to rebuild from source use: && echo npm run build-prod-force", diff --git a/tools/benchmark-hooks/src/lib.rs b/tools/benchmark-hooks/src/lib.rs index 171938e6a..027fab5b0 100644 --- a/tools/benchmark-hooks/src/lib.rs +++ b/tools/benchmark-hooks/src/lib.rs @@ -228,7 +228,7 @@ fn jumbotron(props: &JumbotronProps) -> Html {
-

{ "Yew" }

+

{ "Yew-Hooks" }

@@ -287,5 +287,5 @@ fn row(props: &RowProps) -> Html { pub fn start() { let document = window().unwrap().document().unwrap(); let mount_el = document.query_selector("#main").unwrap().unwrap(); - yew::start_app_in_element::(mount_el); + yew::Renderer::::with_root(mount_el).render(); } diff --git a/tools/benchmark-struct/Cargo.toml b/tools/benchmark-struct/Cargo.toml index f201ba9ce..d7feb5c16 100644 --- a/tools/benchmark-struct/Cargo.toml +++ b/tools/benchmark-struct/Cargo.toml @@ -8,11 +8,16 @@ edition = "2021" crate-type = ["cdylib"] [dependencies] -rand = { version = "0.8.4", features = ["small_rng"] } -getrandom = { version = "0.2.1", features = ["js"] } -wasm-bindgen = "0.2.80" -web-sys = { version = "0.3.55", features = ["Window"]} -yew = "0.19.3" +rand = { version = "0.8.5", features = ["small_rng"] } +getrandom = { version = "0.2.8", features = ["js"] } +wasm-bindgen = "0.2.83" +web-sys = { version = "0.3.60", features = ["Window"]} +yew = { version = "0.20.0", features = ["csr"], path = "../../packages/yew" } + +[profile.release] +lto = true +codegen-units = 1 +panic = "abort" [package.metadata.wasm-pack.profile.release] wasm-opt = ['-O4'] diff --git a/tools/benchmark-struct/package-lock.json b/tools/benchmark-struct/package-lock.json index 62ce10e68..ad757df6b 100644 --- a/tools/benchmark-struct/package-lock.json +++ b/tools/benchmark-struct/package-lock.json @@ -1,8 +1,170 @@ { "name": "js-framework-benchmark-non-keyed-yew", "version": "1.0.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "js-framework-benchmark-non-keyed-yew", + "version": "1.0.0", + "license": "ISC", + "devDependencies": { + "cpr": "^3.0.1", + "rimraf": "^2.6.3" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cpr": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cpr/-/cpr-3.0.1.tgz", + "integrity": "sha512-Xch4PXQ/KC8lJ+KfJ9JI6eG/nmppLrPPWg5Q+vh65Qr9EjuJEubxh/H/Le1TmCZ7+Xv7iJuNRqapyOFZB+wsxA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.5", + "minimist": "^1.2.0", + "mkdirp": "~0.5.1", + "rimraf": "^2.5.4" + }, + "bin": { + "cpr": "bin/cpr" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + } + }, "dependencies": { "balanced-match": { "version": "1.0.2", @@ -23,13 +185,13 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, "cpr": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/cpr/-/cpr-3.0.1.tgz", - "integrity": "sha1-uaVQOLfNgaNcF7l2GJW9hJau8eU=", + "integrity": "sha512-Xch4PXQ/KC8lJ+KfJ9JI6eG/nmppLrPPWg5Q+vh65Qr9EjuJEubxh/H/Le1TmCZ7+Xv7iJuNRqapyOFZB+wsxA==", "dev": true, "requires": { "graceful-fs": "^4.1.5", @@ -41,33 +203,33 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "requires": { "once": "^1.3.0", @@ -96,18 +258,18 @@ "dev": true }, "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "requires": { - "minimist": "^1.2.5" + "minimist": "^1.2.6" } }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "requires": { "wrappy": "1" @@ -116,7 +278,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true }, "rimraf": { @@ -131,7 +293,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true } } diff --git a/tools/benchmark-struct/package.json b/tools/benchmark-struct/package.json index 27cfaadf7..db741af2e 100644 --- a/tools/benchmark-struct/package.json +++ b/tools/benchmark-struct/package.json @@ -1,10 +1,14 @@ { - "name": "js-framework-benchmark-non-keyed-yew", + "name": "js-framework-benchmark-keyed-yew", "version": "1.0.0", "description": "Benchmark for Yew", "license": "ISC", "js-framework-benchmark": { - "frameworkVersion": "latest" + "frameworkVersion": "latest", + "frameworkHomeURL": "https://yew.rs/", + "issues": [ + 1139 + ] }, "scripts": { "build-prod": "echo This is a no-op. && echo Due to heavy dependencies, the generated javascript is already provided. && echo If you really want to rebuild from source use: && echo npm run build-prod-force", diff --git a/tools/benchmark-struct/src/lib.rs b/tools/benchmark-struct/src/lib.rs index c9c805fd4..d80846045 100644 --- a/tools/benchmark-struct/src/lib.rs +++ b/tools/benchmark-struct/src/lib.rs @@ -202,7 +202,7 @@ impl Component for Jumbotron {
-

{ "Yew-Hooks" }

+

{ "Yew" }

@@ -257,7 +257,7 @@ impl Component for Row { } } - fn changed(&mut self, ctx: &Context) -> bool { + fn changed(&mut self, ctx: &Context, _: &Self::Properties) -> bool { let id = ctx.props().data.id; self.on_select = ctx.props().on_select.reform(move |_| id); self.on_remove = ctx.props().on_remove.reform(move |_| id); @@ -286,5 +286,5 @@ impl Component for Row { pub fn start() { let document = window().unwrap().document().unwrap(); let mount_el = document.query_selector("#main").unwrap().unwrap(); - yew::start_app_in_element::(mount_el); + yew::Renderer::::with_root(mount_el).render(); }