Bump chasm from 1.4.8 to 1.5.0 (#30) #77
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Performance | |
| on: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| schedule: | |
| - cron: "17 4 * * 1" | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: performance-${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| ios-footprint: | |
| name: iOS incremental footprint | |
| runs-on: macos-15 | |
| timeout-minutes: 60 | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v7 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: temurin | |
| java-version: "17" | |
| - name: Set up Gradle | |
| uses: gradle/actions/setup-gradle@v6.2.0 | |
| - name: Link paired final binaries and enforce NFR-2 | |
| run: bash scripts/verify-ios-core-footprint.sh | |
| - name: Upload iOS footprint evidence | |
| if: always() | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: ios-footprint-${{ github.run_id }} | |
| if-no-files-found: error | |
| path: | | |
| build/ios-footprint/report.json | |
| build/ios-footprint/baseline | |
| build/ios-footprint/core | |
| jvm: | |
| name: JVM performance gates | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 90 | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v7 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: temurin | |
| java-version: "17" | |
| - name: Set up Gradle | |
| uses: gradle/actions/setup-gradle@v6.2.0 | |
| - name: Prepare pinned Chasm and CoreMark fixture | |
| shell: bash | |
| run: | | |
| coremark_path="$(scripts/prepare-benchmark-upstreams.sh)" | |
| echo "KWASM_COREMARK_WASM=${coremark_path}" >> "$GITHUB_ENV" | |
| - name: Test gate and run JVM benchmark | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| ./gradlew --stacktrace \ | |
| :benchmarks:jvmExternalComparisonReport | |
| ./gradlew --stacktrace \ | |
| :benchmarks:performanceGateToolTest \ | |
| :benchmarks:jvmPerformanceGate \ | |
| -Pkwasm.benchmark.externalComparisons=benchmarks/build/performance/external-comparisons-jvm.json \ | |
| -Pkwasm.benchmark.enforceCheckpointOverhead=false | |
| - name: Upload JVM evidence | |
| if: always() | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: performance-jvm-${{ github.run_id }} | |
| if-no-files-found: warn | |
| path: | | |
| benchmarks/build/reports/benchmarks/main/**/jvm.json | |
| benchmarks/build/reports/benchmarks/externalComparison/**/jvm.json | |
| benchmarks/build/performance/current-jvm.json | |
| benchmarks/build/performance/external-current-jvm.json | |
| benchmarks/build/performance/external-comparisons-jvm.json | |
| benchmarks/build/performance/gate-jvm.json | |
| native: | |
| name: ${{ matrix.target }} performance gates | |
| if: github.event_name != 'pull_request' | |
| runs-on: ${{ matrix.runner }} | |
| timeout-minutes: 120 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - target: linuxX64 | |
| runner: ubuntu-24.04 | |
| - target: macosArm64 | |
| runner: macos-15 | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v7 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: temurin | |
| java-version: "17" | |
| - name: Set up Gradle | |
| uses: gradle/actions/setup-gradle@v6.2.0 | |
| - name: Prepare pinned Chasm and CoreMark fixture | |
| shell: bash | |
| run: | | |
| coremark_path="$(scripts/prepare-benchmark-upstreams.sh)" | |
| echo "KWASM_COREMARK_WASM=${coremark_path}" >> "$GITHUB_ENV" | |
| - name: Run Native benchmark and gate | |
| shell: bash | |
| env: | |
| KWASM_TARGET: ${{ matrix.target }} | |
| run: | | |
| set -euo pipefail | |
| ./gradlew --stacktrace \ | |
| ":benchmarks:${KWASM_TARGET}ExternalComparisonReport" | |
| ./gradlew --stacktrace \ | |
| ":benchmarks:${KWASM_TARGET}PerformanceGate" \ | |
| "-Pkwasm.benchmark.externalComparisons=benchmarks/build/performance/external-comparisons-${KWASM_TARGET}.json" \ | |
| -Pkwasm.benchmark.enforceCheckpointOverhead=false | |
| - name: Upload Native evidence | |
| if: always() | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: performance-${{ matrix.target }}-${{ github.run_id }} | |
| if-no-files-found: warn | |
| path: | | |
| benchmarks/build/reports/benchmarks/main/**/${{ matrix.target }}.json | |
| benchmarks/build/reports/benchmarks/externalComparison/**/${{ matrix.target }}.json | |
| benchmarks/build/performance/current-${{ matrix.target }}.json | |
| benchmarks/build/performance/external-current-${{ matrix.target }}.json | |
| benchmarks/build/performance/external-comparisons-${{ matrix.target }}.json | |
| benchmarks/build/performance/gate-${{ matrix.target }}.json | |
| native-image: | |
| name: GraalVM native-image smoke | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 45 | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v7 | |
| - name: Set up GraalVM 17 | |
| uses: graalvm/setup-graalvm@v1 | |
| with: | |
| java-version: "17" | |
| distribution: graalvm | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| native-image-job-reports: "true" | |
| - name: Set up Gradle | |
| uses: gradle/actions/setup-gradle@v6.2.0 | |
| - name: Build application distribution | |
| run: ./gradlew --stacktrace :samples-cli:installDist | |
| - name: Compile and execute native image | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| mapfile -d '' jars < <( | |
| find wasm-cli/build/install/samples-cli/lib \ | |
| -type f \ | |
| -name '*.jar' \ | |
| -print0 | |
| ) | |
| if (( ${#jars[@]} == 0 )); then | |
| echo "samples-cli distribution contains no jars" >&2 | |
| exit 1 | |
| fi | |
| classpath="$(IFS=:; echo "${jars[*]}")" | |
| mkdir -p build/native-image | |
| native-image \ | |
| --no-fallback \ | |
| -cp "$classpath" \ | |
| io.heapy.kwasm.cli.SmokeTestKt \ | |
| build/native-image/kwasm-smoke | |
| build/native-image/kwasm-smoke | |
| - name: Upload native image | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: native-image-smoke-${{ github.run_id }} | |
| path: build/native-image/kwasm-smoke |