Skip to content

Add GCC 16 and Clang 22 + libc++ jobs, and cover examples in CI (#82) - #82

Closed
graphicsMan wants to merge 1 commit into
facebookincubator:mainfrom
graphicsMan:export-D117385115
Closed

graphicsMan wants to merge 1 commit into
facebookincubator:mainfrom
graphicsMan:export-D117385115

Conversation

@graphicsMan

@graphicsMan graphicsMan commented Aug 25, 2026

Copy link
Copy Markdown
Collaborator

Summary:

Neither runner image ships anything newer than GCC 13, so these are the only
coverage of current compilers -- and, as it turns out, the only jobs that build
examples/ at all. Sixteen example programs, including the one the README links
as "try it live", were never compiled by CI and could rot unnoticed.

  • Linux GCC 16 + libstdc++, from the Docker official image, so it is the
    compiler a user gets rather than whatever the runner ships.
  • Linux Clang 22 + libc++, from LLVM's own apt repo. libc++ is deliberate:
    every other Linux job uses libstdc++, and the existing clang-trunk job already
    covers Clang against it, so this is the only configuration exercising a second
    standard library.

Both also compile an installed prefix as an external consumer -- plain -I, no
CMake target. That is what packagers ship and what broke in 1.6.1, and nothing
else in CI covers it; release.py preflight does, but only at release time,
which is the most expensive moment to find out.

Blocking rather than advisory, because an example that stops compiling should
fail CI. Both toolchains are pinned, so neither can change under us.

This replaces the advisory GCC 15.3/16.2 pair from the previous version. Those
existed to reproduce a -Wstringop-overflow report and did not: the warning comes
from Compiler Explorer's own GCC builds, not from the upstream ones, and the
same versions here are clean. It is moodycamel's, reported upstream as
cameron314/concurrentqueue#456 with a self-contained reproduction. Keeping two
jobs to chase it would have been coverage theatre.

Also adds examples/chunking_comparison_example.cpp -- the program the README
links -- so it is compiled on every run rather than living only in a Godbolt
shortlink.

Differential Revision: D117385115

@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Aug 25, 2026
@meta-codesync

meta-codesync Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

@graphicsMan has exported this pull request. If you are a Meta employee, you can view the originating Diff in D117385115.

@codecov

codecov Bot commented Aug 25, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 92.7%. Comparing base (528c638) to head (314b1d2).

Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff           @@
##            main     #82     +/-   ##
=======================================
- Coverage   92.9%   92.7%   -0.3%     
=======================================
  Files         64      64             
  Lines       4990    4990             
  Branches     682     681      -1     
=======================================
- Hits        4638    4628     -10     
- Misses       352     362     +10     

see 6 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@meta-codesync meta-codesync Bot changed the title Add advisory GCC 15 and 16 CI jobs Add advisory GCC 15 and 16 CI jobs with a consumer-shaped reproduction Aug 26, 2026
@meta-codesync meta-codesync Bot changed the title Add advisory GCC 15 and 16 CI jobs with a consumer-shaped reproduction Add GCC 16 and Clang 22 + libc++ jobs, and cover examples in CI Aug 26, 2026
…bookincubator#82)

Summary:

Neither runner image ships anything newer than GCC 13, so these are the only
coverage of current compilers -- and, as it turns out, the only jobs that build
`examples/` at all. Sixteen example programs, including the one the README links
as "try it live", were never compiled by CI and could rot unnoticed.

- **Linux GCC 16 + libstdc++**, from the Docker official image, so it is the
  compiler a user gets rather than whatever the runner ships.
- **Linux Clang 22 + libc++**, from LLVM's own apt repo. libc++ is deliberate:
  every other Linux job uses libstdc++, and the existing clang-trunk job already
  covers Clang against it, so this is the only configuration exercising a second
  standard library.

Both also compile an installed prefix as an external consumer -- plain `-I`, no
CMake target. That is what packagers ship and what broke in 1.6.1, and nothing
else in CI covers it; `release.py preflight` does, but only at release time,
which is the most expensive moment to find out.

Blocking rather than advisory, because an example that stops compiling should
fail CI. Both toolchains are pinned, so neither can change under us.

This replaces the advisory GCC 15.3/16.2 pair from the previous version. Those
existed to reproduce a -Wstringop-overflow report and did not: the warning comes
from Compiler Explorer's own GCC builds, not from the upstream ones, and the
same versions here are clean. It is moodycamel's, reported upstream as
cameron314/concurrentqueue#456 with a self-contained reproduction. Keeping two
jobs to chase it would have been coverage theatre.

Also adds `examples/chunking_comparison_example.cpp` -- the program the README
links -- so it is compiled on every run rather than living only in a Godbolt
shortlink.

Differential Revision: D117385115
@meta-codesync meta-codesync Bot changed the title Add GCC 16 and Clang 22 + libc++ jobs, and cover examples in CI Add GCC 16 and Clang 22 + libc++ jobs, and cover examples in CI (#82) Aug 26, 2026
@meta-codesync meta-codesync Bot closed this in d74898a Aug 26, 2026
@meta-codesync meta-codesync Bot added the Merged label Aug 26, 2026
@meta-codesync

meta-codesync Bot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

This pull request has been merged in d74898a.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. Merged meta-exported

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant