From e6b886e28f36e60b1a5b6191acad3f937d56b181 Mon Sep 17 00:00:00 2001 From: Floris Bruynooghe Date: Wed, 2 Sep 2026 12:43:52 +0200 Subject: [PATCH 1/3] chore: Update PR template to mention API changes The breaking changes section is too narrow really today. We need to be able to identify API additions and deprecations mostly. Breaking changes only comes back once we work towards 2.0. --- .github/pull_request_template.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index c7af576f08..e9b1fc4847 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -2,21 +2,20 @@ -## Breaking Changes +## API Changes - + ## Notes & open questions - - + ## Change checklist - + - [ ] Self-review. - [ ] Documentation updates following the [style guide](https://rust-lang.github.io/rfcs/1574-more-api-documentation-conventions.html#appendix-a-full-conventions-text), if relevant. - [ ] Tests if relevant. -- [ ] All breaking changes documented. +- [ ] All API changes documented. - [ ] This PR was created by a human that thought critically about the proposed change and wrote an as clear and concise description as they could. From 4fdcd95423a8d402a45d365f1a171ff86bb99abd Mon Sep 17 00:00:00 2001 From: Floris Bruynooghe Date: Wed, 2 Sep 2026 12:51:35 +0200 Subject: [PATCH 2/3] update chacha20 for yanked versions with UB --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a056d946a3..4c19159c8f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -540,9 +540,9 @@ checksum = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527" [[package]] name = "chacha20" -version = "0.10.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" +checksum = "65c35e4b699c7e15ccbe7ee35c005e4fc0a278d22238a2857e6ce2dadeda1b06" dependencies = [ "cfg-if", "cpufeatures 0.3.0", From b3018b312ad459f3f22dfebe121ae0bc8ee77e80 Mon Sep 17 00:00:00 2001 From: Floris Bruynooghe Date: Wed, 2 Sep 2026 14:51:22 +0200 Subject: [PATCH 3/3] remove perf job --- .github/workflows/perf.yml | 309 ------------------------------------- 1 file changed, 309 deletions(-) delete mode 100644 .github/workflows/perf.yml diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml deleted file mode 100644 index a90ab00586..0000000000 --- a/.github/workflows/perf.yml +++ /dev/null @@ -1,309 +0,0 @@ -name: Performance Tests - -on: - pull_request: - push: - branches: - - main - workflow_dispatch: - inputs: - compare_upstream: - type: boolean - default: true - description: Compare against upstream quinn - publish_metrics: - type: boolean - default: false - description: Publish metrics to perf.iroh.computer - -concurrency: - group: perf-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -env: - RUST_BACKTRACE: 1 - RUSTFLAGS: -Dwarnings - SCCACHE_GHA_ENABLED: "true" - RUSTC_WRAPPER: "sccache" - -# Default to read-only; jobs that need more grant it explicitly. -permissions: - contents: read - -jobs: - build: - name: Build ${{ matrix.impl }} perf - runs-on: [self-hosted, linux, X64] - timeout-minutes: 30 - strategy: - fail-fast: false - matrix: - include: - - impl: noq - artifact: noq-perf - - impl: upstream-quinn - artifact: quinn-perf-upstream - steps: - - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0 - if: matrix.impl == 'noq' - with: - persist-credentials: false - - - uses: dtolnay/rust-toolchain@6c977a6ca4077a0ceb28ffbe03f59d46e9ac8772 # v1 - with: - toolchain: stable - - - uses: mozilla-actions/sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad # v0.0.9 - - - name: Get latest quinn release tag - if: matrix.impl == 'upstream-quinn' - id: quinn-release - run: | - LATEST_TAG=$(curl -s https://api.github.com/repos/quinn-rs/quinn/releases/latest | jq -r '.tag_name') - echo "tag=$LATEST_TAG" >> $GITHUB_OUTPUT - echo "Using upstream quinn release: $LATEST_TAG" - - - name: Clone upstream quinn - if: matrix.impl == 'upstream-quinn' - run: | - rm -rf /tmp/upstream-quinn - git clone --depth 1 --branch ${STEPS_QUINN_RELEASE_OUTPUTS_TAG} \ - https://github.com/quinn-rs/quinn.git /tmp/upstream-quinn - env: - STEPS_QUINN_RELEASE_OUTPUTS_TAG: ${{ steps.quinn-release.outputs.tag }} - - - name: Build perf binary - run: cargo build --locked --release -p perf --features json-output - working-directory: ${{ matrix.impl == 'upstream-quinn' && '/tmp/upstream-quinn' || '.' }} - - - name: Upload binary - uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 - with: - name: ${{ matrix.artifact }} - path: ${{ matrix.impl == 'upstream-quinn' && '/tmp/upstream-quinn/target/release/quinn-perf' || 'target/release/noq-perf' }} - retention-days: 1 - - raw-perf: - name: Raw perf ${{ matrix.impl }} - needs: build - runs-on: [self-hosted, linux, X64] - timeout-minutes: 30 - strategy: - fail-fast: false - matrix: - impl: [noq, upstream-quinn] - include: - - impl: noq - artifact: noq-perf - - impl: upstream-quinn - artifact: quinn-perf-upstream - steps: - - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0 - with: - persist-credentials: false - - - uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0 - with: - name: ${{ matrix.artifact }} - path: ./bin - - - name: Run benchmarks - run: | - PERF_BIN=$(ls ./bin/noq-perf ./bin/quinn-perf 2>/dev/null | head -1) - chmod +x "$PERF_BIN" - ./.github/scripts/run_perf.sh "$PERF_BIN" results/${{ matrix.impl }} - - - uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 - with: - name: raw-results-${{ matrix.impl }} - path: results/ - retention-days: 3 - - netsim-perf: - name: Netsim perf ${{ matrix.impl }} - needs: build - runs-on: [self-hosted, linux, X64] - timeout-minutes: 30 - strategy: - fail-fast: false - matrix: - impl: [noq, upstream-quinn] - include: - - impl: noq - artifact: noq-perf - - impl: upstream-quinn - artifact: quinn-perf-upstream - steps: - - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0 - with: - persist-credentials: false - - - uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0 - with: - name: ${{ matrix.artifact }} - path: ./bin - - - name: Fetch netsim - run: | - rm -rf /tmp/chuck - git clone --depth 1 https://github.com/n0-computer/chuck.git /tmp/chuck - - - name: Install netsim deps - run: | - cd /tmp/chuck/netsim - sudo apt-get update - ./setup.sh || true - ./cleanup.sh || true - - - name: Setup netsim bins - run: | - mkdir -p /tmp/chuck/netsim/bins - if [ -f ./bin/noq-perf ]; then - chmod +x ./bin/noq-perf - cp ./bin/noq-perf /tmp/chuck/netsim/bins/noq-perf - else - chmod +x ./bin/quinn-perf - cp ./bin/quinn-perf /tmp/chuck/netsim/bins/noq-perf - fi - - - name: Run netsim perf test - id: run_netsim - continue-on-error: true - run: | - ./.github/scripts/run_netsim_perf.sh ${{ matrix.impl }} /tmp/chuck/netsim - - - name: Collect results - if: always() - run: | - mkdir -p results/${{ matrix.impl }} - cp /tmp/chuck/netsim/report/*.json results/${{ matrix.impl }}/ 2>/dev/null || true - cp /tmp/chuck/netsim/logs/*.log results/${{ matrix.impl }}/ 2>/dev/null || true - - - uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 - if: always() - with: - name: netsim-results-${{ matrix.impl }} - path: results/ - retention-days: 3 - - - name: Cleanup netsim - if: always() - run: | - cd /tmp/chuck/netsim - ./cleanup.sh || true - - compare: - permissions: - contents: read - pull-requests: write # posts the comparison comment - name: Compare results - needs: [raw-perf, netsim-perf] - if: always() - runs-on: ubuntu-latest - timeout-minutes: 10 - steps: - - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0 - with: - persist-credentials: false - - - uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0 - with: - pattern: raw-results-* - merge-multiple: true - path: raw-results/ - - - uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0 - with: - pattern: netsim-results-* - merge-multiple: true - path: netsim-results/ - - - name: Setup Python - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 - with: - python-version: '3.11' - - - name: Generate comparison report - id: compare - run: | - python .github/scripts/compare_results.py raw-results/ netsim-results/ > comparison.md - echo "COMPARISON<> $GITHUB_OUTPUT - cat comparison.md >> $GITHUB_OUTPUT - echo "EOF" >> $GITHUB_OUTPUT - - - name: Convert to Metro format - run: | - python .github/scripts/perf_to_metro.py raw-results/ netsim-results/ \ - --commit ${{ github.sha }} > metro.json - - - name: Show results - run: | - echo "=== Comparison Report ===" - cat comparison.md - echo "" - echo "=== Metro Metrics ===" - cat metro.json - - - name: Upload comparison report - uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 - with: - name: perf-comparison-report - path: | - comparison.md - metro.json - retention-days: 7 - - - name: Publish metrics to Metro - if: github.event_name == 'push' && github.ref == 'refs/heads/main' - run: | - if [[ -n "${{ secrets.METRO_TOKEN }}" && -n "${{ secrets.METRO_ENDPOINT }}" ]]; then - curl -X POST \ - -H "Content-Type: application/json" \ - -H "Authorization: Bearer ${{ secrets.METRO_TOKEN }}" \ - --data @metro.json \ - "${{ secrets.METRO_ENDPOINT }}" - else - echo "Metro secrets not configured, skipping publish" - fi - - - name: Find existing comment - if: github.event_name == 'pull_request' - uses: peter-evans/find-comment@3eae4d37986fb5a8592848f6a574fdf654e61f9e # v3.1.0 - id: find-comment - with: - issue-number: ${{ github.event.pull_request.number }} - comment-author: 'github-actions[bot]' - body-includes: '' - - - name: Create new PR comment - if: github.event_name == 'pull_request' && steps.find-comment.outputs.comment-id == '' - uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 # v5.0.0 - with: - issue-number: ${{ github.event.pull_request.number }} - body: | - - ## Performance Comparison Report - -
- ${{ github.event.pull_request.head.sha }} - artifacts - - ${{ steps.compare.outputs.COMPARISON }} - -
- - - name: Update existing PR comment - if: github.event_name == 'pull_request' && steps.find-comment.outputs.comment-id != '' - uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 # v5.0.0 - with: - comment-id: ${{ steps.find-comment.outputs.comment-id }} - edit-mode: append - body: | - - --- -
- ${{ github.event.pull_request.head.sha }} - artifacts - - ${{ steps.compare.outputs.COMPARISON }} - -
-