0.0.1 alpha 2 #27
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: Run memory report | |
| permissions: {} | |
| on: | |
| pull_request: | |
| paths: | |
| - "crates/ty*/**" | |
| - "!crates/ty_ide/**" | |
| - "!crates/ty_server/**" | |
| - "!crates/ty_test/**" | |
| - "!crates/ty_completion_eval/**" | |
| - "!crates/ty_wasm/**" | |
| - "crates/ruff_db/**" | |
| - "crates/ruff_python_ast/**" | |
| - "crates/ruff_python_parser/**" | |
| - "scripts/memory_report.py" | |
| - ".github/workflows/memory_report.yaml" | |
| - "Cargo.lock" | |
| - "!**.md" | |
| - "!**.snap" | |
| # It's tempting to skip all Python files in every directory, | |
| # but changes to Python files in `ty_vendored` can affect the output of ecosystem runs, | |
| # so we apply a narrow exemption for all files in the corpus directory instead. | |
| - "!crates/ty_python_semantic/resources/corpus/**" | |
| concurrency: | |
| group: memory-report-${{ github.ref_name }}-${{ github.event.pull_request.number || github.sha }} | |
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
| env: | |
| CARGO_INCREMENTAL: 0 | |
| CARGO_NET_RETRY: 10 | |
| CARGO_TERM_COLOR: always | |
| RUSTUP_MAX_RETRIES: 10 | |
| RUST_BACKTRACE: 1 | |
| # Line-tables-only debug info: faster builds, backtraces still work. | |
| CARGO_PROFILE_PROFILING_DEBUG: line-tables-only | |
| PYTHON_VERSION: 3.14 | |
| jobs: | |
| memory_report: | |
| name: Compute memory usage diff | |
| runs-on: ${{ github.repository == 'astral-sh/ruff' && 'depot-ubuntu-22.04-32' || 'ubuntu-latest' }} | |
| timeout-minutes: 20 | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| path: ruff | |
| persist-credentials: false | |
| # Faster to do this separately than to use `fetch-depth: 0` with `actions/checkout` | |
| - name: Fetch full history without tags | |
| run: git -C ruff fetch --no-tags --filter=blob:none --unshallow origin | |
| - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1 | |
| with: | |
| workspaces: "ruff" | |
| - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 | |
| with: | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| - name: Install Rust toolchain | |
| run: rustup show | |
| - name: "Install mold" | |
| uses: rui314/setup-mold@9c9c13bf4c3f1adef0cc596abc155580bcb04444 # v1 | |
| - name: Compute memory usage diff | |
| shell: bash | |
| env: | |
| TY_MEMORY_REPORT: json | |
| # Disabling multithreading improves the stability of memory usage numbers. | |
| TY_MAX_PARALLELISM: 1 | |
| run: | | |
| # Build the executable for the old and new commit | |
| ( | |
| cd ruff | |
| echo "new commit" | |
| git rev-list --format=%s --max-count=1 "$GITHUB_SHA" | |
| cargo build --bin by --profile profiling | |
| mv target/profiling/by ty-new | |
| MERGE_BASE="$(git merge-base "$GITHUB_SHA" "origin/$GITHUB_BASE_REF")" | |
| git checkout -b old_commit "$MERGE_BASE" | |
| echo "old commit (merge base)" | |
| git rev-list --format=%s --max-count=1 old_commit | |
| cargo build --bin by --profile profiling | |
| mv target/profiling/by ty-old | |
| ) | |
| ( | |
| echo "Creating comment with memory comparison" | |
| cd ruff | |
| git switch - --detach | |
| python "./scripts/memory_report.py" run \ | |
| --old-ty "./ty-old" \ | |
| --new-ty "./ty-new" \ | |
| --projects-dir "${GITHUB_WORKSPACE}/memory_projects" \ | |
| --output ../memory_report_diff.diff | |
| ) | |
| # NOTE: astral-sh-bot uses this artifact to post comments on PRs. | |
| # Make sure to update the bot if you rename the artifact. | |
| - name: Upload diff | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: memory_report_diff | |
| path: memory_report_diff.diff |