Skip to content

ci: build with C++20 explicitly - #40

Merged
wdconinc merged 1 commit into
mainfrom
claude/ci-cxx20
Oct 29, 2026
Merged

wdconinc merged 1 commit into
mainfrom
claude/ci-cxx20

Conversation

@wdconinc

Copy link
Copy Markdown
Contributor

Summary

  • eic-shell workflow: passes -DCMAKE_CXX_STANDARD=20 explicitly instead of relying on the CMake default. It is set as a workflow-level env, not a matrix dimension, so the job names required by the main ruleset (build (clang++, Debug), build (clang++, Release), build (g++, Release)) stay the same.
  • Legacy GitLab CI: the juggler:local build and the clang-tidy run move from C++17 to C++20. The headers already require C++20 (std::integral/std::floating_point in random.h, requires clauses in property.h), so the C++17 job could not build main.

Test plan

  • CI

🤖 Generated with Claude Code

Pass CMAKE_CXX_STANDARD=20 explicitly in the eic-shell workflow (as a
workflow-level env, so the matrix job names that the main ruleset requires
stay unchanged). Also move the legacy GitLab CI build and clang-tidy run
from C++17 to C++20: the headers already require C++20 (concepts in
random.h and property.h), so the C++17 job could not build main.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings October 29, 2026 00:33

Copilot AI 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.

🟢 Approval recommended

The review surfaced no outstanding issues, as the CI changes explicitly set C++20 to match headers that already require C++20 concepts, with no conflicting C++17 references elsewhere.

No open issues 🎉

What changed in this PR

This PR makes the CI pipelines build with C++20 explicitly rather than relying on CMake's default. This aligns the build configuration with the code, whose headers already require C++20 features (concepts like std::integral/std::floating_point and requires clauses). Setting the standard in CI guards against environments or future changes where the default might differ.

Changes:

  • GitLab CI: bump the juggler:local matrix CMAKE_CXX_STANDARD from 17 to 20 and the clang-tidy -extra-arg from -std=c++17 to -std=c++20.
  • GitHub Actions (linux-eic-shell): add a workflow-level CMAKE_CXX_STANDARD: 20 env and pass -DCMAKE_CXX_STANDARD to the CMake configure step.
  • Keeps the standard as a workflow-level env (not a matrix dimension) so required job names stay unchanged.
File Description
.gitlab-ci.yml Moves the local build matrix and clang-tidy analysis from C++17 to C++20 so they can compile main.
.github/​workflows/​linux-eic-shell.yml Adds a C++20 env var and passes it explicitly to the CMake configure step without altering matrix-derived job names.

Review effort: Balanced

@wdconinc
wdconinc merged commit 660e6cc into main Oct 29, 2026
7 checks passed
@wdconinc
wdconinc deleted the claude/ci-cxx20 branch October 29, 2026 00:53
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.

2 participants