Test production ThinLTO binaries in one build - #780
Merged
Conversation
helly25
force-pushed
the
ci/measure-full-thinlto
branch
from
September 7, 2026 20:39
db47191 to
2d2edc0
Compare
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Default Linux and macOS tests now build and test everything once using the same Clang, size optimization, ThinLTO, and linker settings as published binaries. This removes the duplicate release build while keeping smoke coverage of the final stripped artifacts.
AG;DR
Configuration
--config=releaseis now an independent optimization/link layer.--config=clang_release, which composes--config=clang --config=releasewithout duplicate expansion warnings.--config=clang_releasefor default CI tests and release publication builds and queries.CI and release validation
bazel testand both subsequentbazel buildinvocations.bazel-bin/xff/cli/xffandbazel-bin/xff/cli/xff_full, which the complete suite already builds through its binary-level tests.release_prep_test.shto reject reintroduction of release-only Bazel test/build phases and require staging from the outputs of the complete test invocation.Measured basis
The timing experiment used a fresh ThinLTO cache while the existing opt jobs restored their established primary caches. Even with that disadvantage, the complete ThinLTO test command took 15m25s on Linux versus 15m42s for opt, and 17m29s on macOS versus 14m58s for opt. This keeps wall time comparable while substantially reducing total runner and compilation cost and testing the production configuration directly.
Validation
bazel test //... $(tools/extras.py --wildcards) --config=xff_docs --config=clang_release(181/181 tests passed)tools/release_prep_test.shgit diff --check origin/main...HEADpre-commit run --files .bazelrc .github/workflows/main.yml .github/workflows/release.yml README.md docs/history.md tools/release_prep_test.sh xff/BUILD.bazelThe branch is based directly on current
origin/main(f69cb7bff).