Skip to content

Commit

Permalink
Merge commit 9d94f24 (no conflict)
Browse files Browse the repository at this point in the history
  • Loading branch information
cecton committed Jul 20, 2022
2 parents 218ca31 + 9d94f24 commit d264bd7
Show file tree
Hide file tree
Showing 987 changed files with 58,416 additions and 47,437 deletions.
3 changes: 3 additions & 0 deletions .cargo/config → .cargo/config.toml
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
[target.'cfg(target_arch = "wasm32")']
runner = 'wasm-bindgen-test-runner'

[unstable]
doctest-xcompile = true
5 changes: 4 additions & 1 deletion .firebaserc
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,11 @@
],
"examples": [
"yew-rs-examples"
],
"api": [
"yew-rs-api"
]
}
}
}
}
}
3 changes: 3 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,6 @@ contact_links:
- name: Feature proposal
url: https://github.com/yewstack/yew/discussions/categories/ideas
about: Start a discussion for a feature you would like to see
- name: Issue with the Playground?
url: https://github.com/yewstack/yew-playground/issues/new
about: Open an issue on the yew-playground repository
1 change: 0 additions & 1 deletion .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ Fixes #0000 <!-- replace with issue number or remove if not applicable -->

<!-- For further details, please read CONTRIBUTING.md -->

- [ ] I have run `cargo make pr-flow`
- [ ] I have reviewed my own code
- [ ] I have added tests
<!-- If this is a bug fix, these tests will fail if the bug is present (to stop it from cropping up again) -->
Expand Down
6 changes: 6 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,9 @@ updates:
interval: "weekly"
day: "friday"
open-pull-requests-limit: 5

- package-ecosystem: "npm"
directory: "/website"
schedule:
interval: "monthly"
target-branch: "master"
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,18 @@ on: pull_request_target
jobs:
auto-approve:
runs-on: ubuntu-latest
if: github.event.pull_request.draft == false
steps:
- name: Check if organization member
id: is_organization_member
uses: JamesSingleton/is-organization-member@1.0.0
with:
organization: 'yewstack'
organization: "yewstack"
username: ${{ github.actor }}
token: ${{ secrets.GITHUB_TOKEN }}

- name: Auto approve
uses: hmarr/auto-approve-action@v2
if: ${{ steps.is_organization_member.outputs.result == 'true' }}
if: ${{ steps.is_organization_member.outputs.result == 'true' || github.actor == 'dependabot[bot]' }}
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
281 changes: 220 additions & 61 deletions .github/workflows/benchmark.yml
Original file line number Diff line number Diff line change
@@ -1,94 +1,253 @@
name: Benchmark

on:
push:
paths-ignore:
- 'website/**'
branches:
- master
pull_request:
if: >-
(github.event.action == 'labeled' && github.event.label.name == 'performance') ||
(github.event.action == 'synchronize' && contains(github.event.pull_request.labels.*.name, 'performance'))
branches: [master]
types: [labeled, synchronize]
paths-ignore:
- 'website/**'
types: [labeled, synchronize, opened, reopened]

workflow_dispatch:
branches: [master]
permissions:
# deployments permission to deploy GitHub pages website
deployments: write
# contents permission to update benchmark contents in gh-pages branch
contents: write

jobs:
build:
results:
runs-on: ubuntu-latest
needs: benchmark

steps:
- uses: actions/checkout@v2
with:
repository: yewstack/js-framework-benchmark

- name: Configure benchmark
run: |
replace="yew = { git = \"${REPO_HTML_URL}\", branch = \"${BRANCH}\" }"
input=$(cat frameworks/keyed/yew/Cargo.toml)
output=$(echo "$input" | sed -e "s@yew = .*}@$replace@g")
if [[ "$input" == "$output" ]]; then
echo "ERROR: failed to configure Cargo.toml"
exit 1
fi
echo "$output" > frameworks/keyed/yew/Cargo.toml
echo "$output"
env:
# REPO_HTML_URL: ${{ github.event.pull_request.head.repo.html_url }}
REPO_HTML_URL: https://github.com/voidpumpkin/yew.git
# HEAD_REF: ${{ github.event.pull_request.head.ref }}
BRANCH: master

- name: Setup ChromeDriver
uses: nanasess/setup-chromedriver@master
- run: |
touch results.json
echo '${{ needs.benchmark.outputs.results }}' >> results.json
- name: Setup Rust
uses: actions-rs/toolchain@v1
# 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:
toolchain: stable
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 }}

- uses: actions-rs/install@v0.1
steps:
- uses: actions/checkout@v2
with:
crate: wasm-bindgen-cli
version: latest
use-tool-cache: true
path: "./yew"
repository: ${{ github.event.pull_request.head.repo.full_name }}
ref: "${{ github.head_ref }}"

- uses: actions-rs/install@v0.1
- uses: actions/checkout@v2
with:
crate: wasm-pack
version: latest
use-tool-cache: true
repository: krausest/js-framework-benchmark
path: "./js-framework-benchmark"
ref: 678cd09a8e02b9a01bcb9b71dc9248d17a33ff82

- uses: actions-rs/install@v0.1
- uses: actions-rs/toolchain@v1
with:
crate: https
version: latest
use-tool-cache: true
toolchain: stable
target: wasm32-unknown-unknown
override: true
profile: minimal

- name: Start Server
run: http -p 8080 &
- uses: jetli/wasm-pack-action@v0.3.0
with:
version: "latest"

- name: Setup Node
uses: actions/setup-node@v1
with:
node-version: 12
node-version: 16

- uses: Swatinem/rust-cache@v1
with:
working-directory: yew

- name: npm Install
- uses: actions/cache@v2
with:
path: ~/.npm
key: ${{ runner.os }}-benchmark-${{ hashFiles('js-framework-benchmark/package-lock.json') }}-${{ hashFiles('js-framework-benchmark/webdriver-ts/package-lock.json') }}
restore-keys: |
${{ runner.os }}-benchmark-
${{ runner.os }}
# Optimisation flags has no effect unless set at workspace level.
- name: Write optimisation flags
run: |
cat >> Cargo.toml << EOF
[profile.release]
lto = true
codegen-units = 1
panic = "abort"
EOF
working-directory: yew

- name: save yew-struct setup
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: |
npm install
(cd webdriver-ts && npm install)
(cd webdriver-ts-results && npm install)
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"
- name: Build
# 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: |
npm run build-prod
(cd webdriver-ts && npm run build-prod)
cd js-framework-benchmark/frameworks/keyed
rm -rf ./*
cd ../non-keyed
rm -rf ./*
- name: Benchmark
run: npm run bench -- --headless
- 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: Results
run: npm run results
- 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/

- name: build benchmark-struct app
shell: bash
run: |
cd yew/tools/benchmark-struct
npm ci
npm run build-prod-without-tools-install
- name: build benchmark-hooks app
shell: bash
run: |
cd yew/tools/benchmark-hooks
npm ci
npm run build-prod-without-tools-install
- name: move dist files
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
- name: Log results
- name: js-framework-benchmark/webdriver-ts npm run bench
shell: bash
run: |
msg=$(cd results_diff && cargo run)
echo "$msg"
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
- 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

0 comments on commit d264bd7

Please sign in to comment.