Skip to content

ci: run full-matrix linux jobs on preinstalled compilers - #67

Merged
biobo-bot[bot] merged 1 commit into
mainfrom
ci/pin-linux-runners
Oct 26, 2026
Merged

biobo-bot[bot] merged 1 commit into
mainfrom
ci/pin-linux-runners

Conversation

@sentomk

@sentomk sentomk commented Oct 26, 2026

Copy link
Copy Markdown
Owner

Summary
ubuntu-latest now resolves to Ubuntu 26.04 (resolute), whose archive no longer ships clang-14 or clang-16. The required clang-14 C++17 and clang-16 C++20 jobs fail at apt-get install (seen on #66), so every PR is blocked. This pins the full-matrix Linux runners to ubuntu-24.04.

Changes

  • Pin all Linux entries in ci-full.yml to ubuntu-24.04, which carries gcc-11, gcc-13, clang-14, clang-16 and clang-18.
  • Add a comment explaining the pin, matching the existing windows-2022 pin.

Testing

🤖 Generated with Claude Code

biobo-bot[bot]
biobo-bot Bot previously approved these changes Oct 26, 2026

@biobo-bot biobo-bot Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Pinning the full-matrix Linux jobs to ubuntu-24.04 is the right fix for the clang-14 / clang-16 install failures on the 26.04 image, and it brings ci-full.yml in line with ci-pr.yml, ci.yml, clang-tidy.yml and fuzz.yml, which already run on ubuntu-24.04. The explanatory comment mirrors the existing windows-2022 pin nicely.

Two non-blocking notes:

  • The comment sits under the ===== GCC ===== header but applies to every Linux entry (Clang too). Moving it above the GCC header would make that a bit clearer.
  • ubuntu-24.04 will eventually be retired too, so at some point it may be worth installing older clangs from apt.llvm.org (or dropping clang-14 from the matrix) rather than relying on the distro archive. Fine to leave for a follow-up.

Approving; merge once the matrix goes green.

@github-actions

github-actions Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Benchmark comparison (informational)

Base 73afb3d vs PR 6613f62, run one after the other on the same GitHub-hosted runner. This does not block merging.

Noise estimate: the 20 control rows below do not run Patternia code, so they should not change between base and PR. As a group they moved by a median of +0.0% (run order and machine drift); that offset is divided out of the Patternia deltas (Adjusted). The controls then scatter by a median of 0.8%. Adjusted differences under 5.0% are treated as noise.

Patternia: 8 benchmarks, 0 slower, 1 faster, 7 within noise.

Benchmark Base (ns) PR (ns) Delta Adjusted Verdict
PatterniaPipe CommandParser 2.111 2.105 -0.3% -0.3% within noise
PatterniaPipe PacketMixed 1.817 1.818 +0.0% +0.0% within noise
PatterniaPipe PacketMixedHeavyBind 1.953 1.954 +0.0% +0.0% within noise
PatterniaPipe ProtocolRouter 1.703 1.695 -0.5% -0.5% within noise
PatterniaPipe VariantAltHot 1.757 1.757 -0.0% -0.0% within noise
PatterniaPipe VariantAltHotGuarded 1.933 1.934 +0.1% +0.0% within noise
PatterniaPipe VariantMixed 2.133 2.129 -0.2% -0.2% within noise
PatterniaPipe VariantMixedGuarded 2.098 1.961 -6.5% -6.6% faster
Control rows (not Patternia code)
Benchmark Base (ns) PR (ns) Delta
IfElse CommandParser 1.916 1.873 -2.2%
IfElse ProtocolRouter 2.174 2.244 +3.2%
Sequential VariantAltHot 2.988 2.989 +0.0%
Sequential VariantAltHotGuarded 2.094 2.953 +41.0%
Sequential VariantMixed 1.167 1.165 -0.2%
Sequential VariantMixedGuarded 1.217 1.232 +1.2%
StdVisit CommandParser 1.427 1.428 +0.0%
StdVisit ProtocolRouter 1.687 1.687 -0.0%
StdVisit VariantAltHot 2.493 2.813 +12.9%
StdVisit VariantAltHotGuarded 2.391 2.988 +25.0%
StdVisit VariantMixed 3.135 3.185 +1.6%
StdVisit VariantMixedGuarded 2.308 2.308 -0.0%
SwitchIndex VariantAltHot 2.087 2.989 +43.2%
SwitchIndex VariantAltHotGuarded 3.166 3.142 -0.7%
SwitchIndex VariantMixed 1.070 1.067 -0.3%
SwitchIndex VariantMixedGuarded 1.155 1.153 -0.1%
Switch CommandParser 1.794 1.797 +0.2%
Switch PacketMixed 1.549 1.554 +0.3%
Switch PacketMixedHeavyBind 1.612 1.600 -0.8%
Switch ProtocolRouter 1.773 1.731 -2.4%

Raw results and the comparison chart are attached to this workflow run as an artifact. Shared runners are noisy, so use this as a trend, not a measurement.

@codecov

codecov Bot commented Oct 26, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

Problem
- ubuntu-latest now resolves to Ubuntu 26.04 (resolute), which no
  longer ships clang-14 or clang-16. The required clang-14 C++17 and
  clang-16 C++20 jobs fail at apt-get install, blocking every PR.

Implementation
- Pin all Linux entries of the ci-full matrix to ubuntu-24.04, which
  carries gcc-11, gcc-13, clang-14, clang-16 and clang-18.
- Leave a comment next to the matrix, matching the existing
  windows-2022 pin.

Tests
- Verified by this PR's own CI run.
@sentomk
sentomk force-pushed the ci/pin-linux-runners branch from a0c00cf to 6613f62 Compare October 26, 2026 15:58
@sentomk sentomk changed the title ci: pin full-matrix linux runners to ubuntu-24.04 ci: run full-matrix linux jobs on preinstalled compilers Oct 26, 2026

@biobo-bot biobo-bot Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-reviewed 6613f62: Linux jobs pinned to ubuntu-22.04 (gcc-11, clang-14) / ubuntu-24.04 (rest); compiler install now uses preinstalled toolchain with apt fallback and prints version. All CI green. LGTM.

@biobo-bot
biobo-bot Bot merged commit 1ea8638 into main Oct 26, 2026
25 checks passed
@biobo-bot
biobo-bot Bot deleted the ci/pin-linux-runners branch October 26, 2026 16:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant