From 9b714359ff843f4477f6637a6d7c7b400195d219 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Tue, 17 Dec 2024 20:40:49 +0700 Subject: [PATCH 1/6] perf(dpp): optimize js binding size --- .github/workflows/release.yml | 7 +++++++ .github/workflows/tests-build-js.yml | 7 +++++++ packages/wasm-dpp/Cargo.toml | 2 +- packages/wasm-dpp/scripts/build-wasm.sh | 11 ++++++----- 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 269798a2ff6..5e75c8d45a9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -73,6 +73,13 @@ jobs: run: cargo binstall wasm-bindgen-cli@0.2.86 if: ${{ steps.check-artifact.outputs.exists != 'true' }} + - name: Install Binaryen + run: | + wget https://github.com/WebAssembly/binaryen/releases/download/version_109/binaryen-version_121-x86_64-linux.tar.gz + tar -xzf binaryen-version_121-x86_64-linux.tar.gz + sudo cp -r binaryen-version_121/* /usr/local/ + if: ${{ steps.check-artifact.outputs.exists != 'true' }} + - name: Build packages run: yarn build env: diff --git a/.github/workflows/tests-build-js.yml b/.github/workflows/tests-build-js.yml index a36bd91e2c0..50cef7216f7 100644 --- a/.github/workflows/tests-build-js.yml +++ b/.github/workflows/tests-build-js.yml @@ -53,6 +53,13 @@ jobs: run: cargo binstall wasm-bindgen-cli@0.2.86 if: ${{ steps.check-artifact.outputs.exists != 'true' }} + - name: Install Binaryen + run: | + wget https://github.com/WebAssembly/binaryen/releases/download/version_109/binaryen-version_121-x86_64-linux.tar.gz + tar -xzf binaryen-version_121-x86_64-linux.tar.gz + sudo cp -r binaryen-version_121/* /usr/local/ + if: ${{ steps.check-artifact.outputs.exists != 'true' }} + - name: Build JS packages run: yarn build if: ${{ steps.check-artifact.outputs.exists != 'true' }} diff --git a/packages/wasm-dpp/Cargo.toml b/packages/wasm-dpp/Cargo.toml index 2b34c8af6ff..0ca578b8990 100644 --- a/packages/wasm-dpp/Cargo.toml +++ b/packages/wasm-dpp/Cargo.toml @@ -54,6 +54,6 @@ async-trait = "0.1.59" bincode = "2.0.0-rc.3" [profile.release] lto = true -opt-level = 's' +opt-level = 'z' [package.metadata.cargo-machete] ignored = ["wasm-bindgen-futures"] diff --git a/packages/wasm-dpp/scripts/build-wasm.sh b/packages/wasm-dpp/scripts/build-wasm.sh index 0c154372bae..b7ada5425ef 100755 --- a/packages/wasm-dpp/scripts/build-wasm.sh +++ b/packages/wasm-dpp/scripts/build-wasm.sh @@ -47,8 +47,9 @@ fi # EMCC_CFLAGS="-s ERROR_ON_UNDEFINED_SYMBOLS=0 --no-entry" cargo build --target=wasm32-unknown-emscripten --release # EMCC_CFLAGS="-s ERROR_ON_UNDEFINED_SYMBOLS=0 --no-entry" wasm-bindgen --out-dir=wasm --target=web --omit-default-module-path ../../target/wasm32-unknown-emscripten/release/wasm_dpp.wasm -# TODO: Must be somehow preinstalled? -#if [ "$PROFILE" == "release" ]; then -# echo "Optimizing wasm using Binaryen" -# wasm-opt -Os "$OUTPUT_FILE" -o "$OUTPUT_FILE" -#fi +if command -v wasm-opt &> /dev/null; then + echo "Optimizing wasm using Binaryen" + wasm-opt -Oz "$OUTPUT_FILE" -o "$OUTPUT_FILE" +else + echo "wasm-opt command not found. Skipping wasm optimization." +fi From f15f354ba213e03e174539e06f159f38d45e3f4a Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Tue, 17 Dec 2024 20:46:08 +0700 Subject: [PATCH 2/6] ci: fix download url --- .github/workflows/release.yml | 3 +-- .github/workflows/tests-build-js.yml | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5e75c8d45a9..0d384730ccc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -75,7 +75,7 @@ jobs: - name: Install Binaryen run: | - wget https://github.com/WebAssembly/binaryen/releases/download/version_109/binaryen-version_121-x86_64-linux.tar.gz + wget https://github.com/WebAssembly/binaryen/releases/download/version_121/binaryen-version_121-x86_64-linux.tar.gz tar -xzf binaryen-version_121-x86_64-linux.tar.gz sudo cp -r binaryen-version_121/* /usr/local/ if: ${{ steps.check-artifact.outputs.exists != 'true' }} @@ -84,7 +84,6 @@ jobs: run: yarn build env: CARGO_BUILD_PROFILE: release - if: ${{ steps.check-artifact.outputs.exists != 'true' }} - name: Set suffix diff --git a/.github/workflows/tests-build-js.yml b/.github/workflows/tests-build-js.yml index 50cef7216f7..ef05df829c0 100644 --- a/.github/workflows/tests-build-js.yml +++ b/.github/workflows/tests-build-js.yml @@ -55,7 +55,7 @@ jobs: - name: Install Binaryen run: | - wget https://github.com/WebAssembly/binaryen/releases/download/version_109/binaryen-version_121-x86_64-linux.tar.gz + wget https://github.com/WebAssembly/binaryen/releases/download/version_121/binaryen-version_121-x86_64-linux.tar.gz tar -xzf binaryen-version_121-x86_64-linux.tar.gz sudo cp -r binaryen-version_121/* /usr/local/ if: ${{ steps.check-artifact.outputs.exists != 'true' }} From 647ddd93f05992fc3529dc92298e5d56db453750 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Tue, 17 Dec 2024 21:19:27 +0700 Subject: [PATCH 3/6] ci: add debug ssh --- .github/workflows/tests-js-package.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests-js-package.yml b/.github/workflows/tests-js-package.yml index a2bf39a47b4..f9f76cdefe1 100644 --- a/.github/workflows/tests-js-package.yml +++ b/.github/workflows/tests-js-package.yml @@ -18,7 +18,7 @@ jobs: lint: name: Linting runs-on: ubuntu-24.04 - timeout-minutes: 5 + timeout-minutes: 35 permissions: id-token: write contents: read @@ -35,6 +35,9 @@ jobs: name: js-build-${{ github.sha }} path: packages + - name: Setup tmate session + uses: mxschmitt/action-tmate@v3 + - name: Run ESLinter run: yarn workspace "${{ inputs.package }}" lint From 3b622962a9713190a6f8043dac8385f735a3a58d Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Tue, 17 Dec 2024 22:03:39 +0700 Subject: [PATCH 4/6] ci: debug build --- .github/workflows/tests-build-js.yml | 8 ++++++++ .github/workflows/tests-js-package.yml | 3 --- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/tests-build-js.yml b/.github/workflows/tests-build-js.yml index ef05df829c0..b37276e581d 100644 --- a/.github/workflows/tests-build-js.yml +++ b/.github/workflows/tests-build-js.yml @@ -64,6 +64,10 @@ jobs: run: yarn build if: ${{ steps.check-artifact.outputs.exists != 'true' }} + - name: built? + run: | + ls -la packages/wasm-dpp + - name: Ignore only already cached artifacts run: | find . -name '.gitignore' -exec rm -f {} + @@ -84,6 +88,10 @@ jobs: echo "EOF" >> $GITHUB_OUTPUT if: ${{ steps.check-artifact.outputs.exists != 'true' }} + - name: Modified? + run: | + echo '${{ steps.diff.outputs.files }}' + - name: Upload the archive of built files uses: actions/upload-artifact@v4 with: diff --git a/.github/workflows/tests-js-package.yml b/.github/workflows/tests-js-package.yml index f9f76cdefe1..eaba749edce 100644 --- a/.github/workflows/tests-js-package.yml +++ b/.github/workflows/tests-js-package.yml @@ -35,9 +35,6 @@ jobs: name: js-build-${{ github.sha }} path: packages - - name: Setup tmate session - uses: mxschmitt/action-tmate@v3 - - name: Run ESLinter run: yarn workspace "${{ inputs.package }}" lint From 87c75f1503b9431323121809dae45dc745b02d34 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Tue, 17 Dec 2024 22:18:33 +0700 Subject: [PATCH 5/6] ci: install web-opt outside of workdir --- .github/workflows/release.yml | 6 +++--- .github/workflows/tests-build-js.yml | 14 +++----------- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0d384730ccc..d6c11a60ddc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -75,9 +75,9 @@ jobs: - name: Install Binaryen run: | - wget https://github.com/WebAssembly/binaryen/releases/download/version_121/binaryen-version_121-x86_64-linux.tar.gz - tar -xzf binaryen-version_121-x86_64-linux.tar.gz - sudo cp -r binaryen-version_121/* /usr/local/ + wget https://github.com/WebAssembly/binaryen/releases/download/version_121/binaryen-version_121-x86_64-linux.tar.gz -P /tmp + tar -xzf /tmp/binaryen-version_121-x86_64-linux.tar.gz -C /tmp + sudo cp -r /tmp/binaryen-version_121/* /usr/local/ if: ${{ steps.check-artifact.outputs.exists != 'true' }} - name: Build packages diff --git a/.github/workflows/tests-build-js.yml b/.github/workflows/tests-build-js.yml index b37276e581d..bc8426de182 100644 --- a/.github/workflows/tests-build-js.yml +++ b/.github/workflows/tests-build-js.yml @@ -55,19 +55,15 @@ jobs: - name: Install Binaryen run: | - wget https://github.com/WebAssembly/binaryen/releases/download/version_121/binaryen-version_121-x86_64-linux.tar.gz - tar -xzf binaryen-version_121-x86_64-linux.tar.gz - sudo cp -r binaryen-version_121/* /usr/local/ + wget https://github.com/WebAssembly/binaryen/releases/download/version_121/binaryen-version_121-x86_64-linux.tar.gz -P /tmp + tar -xzf /tmp/binaryen-version_121-x86_64-linux.tar.gz -C /tmp + sudo cp -r /tmp/binaryen-version_121/* /usr/local/ if: ${{ steps.check-artifact.outputs.exists != 'true' }} - name: Build JS packages run: yarn build if: ${{ steps.check-artifact.outputs.exists != 'true' }} - - name: built? - run: | - ls -la packages/wasm-dpp - - name: Ignore only already cached artifacts run: | find . -name '.gitignore' -exec rm -f {} + @@ -88,10 +84,6 @@ jobs: echo "EOF" >> $GITHUB_OUTPUT if: ${{ steps.check-artifact.outputs.exists != 'true' }} - - name: Modified? - run: | - echo '${{ steps.diff.outputs.files }}' - - name: Upload the archive of built files uses: actions/upload-artifact@v4 with: From 4d39dc4651d004ae44c7d2843aba8b567a3a2373 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Tue, 17 Dec 2024 22:43:05 +0700 Subject: [PATCH 6/6] ci: bring back timeout --- .github/workflows/tests-js-package.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests-js-package.yml b/.github/workflows/tests-js-package.yml index eaba749edce..a2bf39a47b4 100644 --- a/.github/workflows/tests-js-package.yml +++ b/.github/workflows/tests-js-package.yml @@ -18,7 +18,7 @@ jobs: lint: name: Linting runs-on: ubuntu-24.04 - timeout-minutes: 35 + timeout-minutes: 5 permissions: id-token: write contents: read