perf(timeline): share settled tool bodies instead of per-frame deep-copy #392
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: ci | |
| # Single build + test gate matching the LOCAL toolchain (GCC on Linux, | |
| # Release). No cross-compiler matrix, no sanitizer legs, no macOS/Windows | |
| # runners — those churn and fail on toolchains nobody builds with here. | |
| # One job: does it compile with the same compiler used locally, and do the | |
| # smoke tests pass. Fast and deterministic. | |
| # | |
| # NOTE: if GitHub still shows phantom failing checks named linux-clang19, | |
| # sanitizers (...), macos-gcc, windows-msvc, or "fuzz harness smoke", those | |
| # are REQUIRED STATUS CHECKS configured by NAME in the repo's branch- | |
| # protection rules (Settings → Branches → master). No workflow in this repo | |
| # produces them, so they hang forever. Remove those names from the required- | |
| # checks list there — this workflow only emits the single job below. | |
| on: | |
| push: | |
| branches: [master] | |
| pull_request: | |
| branches: [master] | |
| # Cancel an in-flight run when newer commits land on the same ref. | |
| concurrency: | |
| group: ci-${{ github.ref }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| jobs: | |
| build-test: | |
| name: build + test (linux gcc) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| fetch-depth: 0 | |
| - name: Init submodules (HTTPS, race-tolerant) | |
| # Submodule pushes can lag GitHub replica propagation, so a fresh | |
| # `submodule update` may hit "not our ref / Fetched ... but it did | |
| # not contain <sha>". Retry a few times with a full (unshallow) | |
| # fetch before giving up. | |
| run: | | |
| git config --global url."https://github.com/".insteadOf "git@github.com:" | |
| for attempt in 1 2 3 4 5; do | |
| if git submodule update --init --recursive --force; then | |
| echo "submodules ready (attempt $attempt)" | |
| break | |
| fi | |
| echo "submodule update failed (attempt $attempt) — full-fetching and retrying" | |
| git submodule sync --recursive | |
| git submodule foreach --recursive 'git fetch --prune origin || true' | |
| sleep $((attempt * 10)) | |
| done | |
| git submodule update --init --recursive --force | |
| - name: Install deps | |
| # GCC 14 for C++26 (std::expected / std::format). Mirrors the local | |
| # GCC toolchain; ubuntu-latest's default g++ can lag. Shared libs are | |
| # fine — this isn't a distributable build. | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y --no-install-recommends \ | |
| g++-14 cmake ninja-build pkg-config \ | |
| libssl-dev libnghttp2-dev zlib1g-dev | |
| - name: Configure | |
| env: | |
| CC: gcc-14 | |
| CXX: g++-14 | |
| run: | | |
| cmake -S . -B build -GNinja -DCMAKE_BUILD_TYPE=Release \ | |
| -DAGENTTY_AUTO_PULL_MAYA=OFF \ | |
| -DAGENTTY_USE_MIMALLOC=OFF \ | |
| -DAGENTTY_BUILD_TESTS=ON | |
| - name: Build | |
| run: cmake --build build -j"$(nproc)" --target all tests | |
| - name: Test | |
| run: ctest --test-dir build --output-on-failure |