Skip to content

feat(build): make C++ standard first-class#100

Merged
Sunrisepeak merged 3 commits into
mainfrom
feat/cpp-standard-config
Jun 1, 2026
Merged

feat(build): make C++ standard first-class#100
Sunrisepeak merged 3 commits into
mainfrom
feat/cpp-standard-config

Conversation

@Sunrisepeak
Copy link
Copy Markdown
Member

@Sunrisepeak Sunrisepeak commented Jun 1, 2026

Closes #98

Summary

  • Add normalized [package].standard support for c++26, c++2c, gnu++23, gnu++26, and legacy [language].standard compatibility.
  • Route the active C++ standard through fingerprinting, compile flags, compile_commands.json, P1689 scanning, and import std BMI builds.
  • Add std module cache metadata so cached std.gcm / std.pcm is reused only when compiler, stdlib, target, standard, source, and build commands match.
  • Keep build.cxxflags as package-owned additive flags and reject -std= there with a migration hint.
  • Reuse persistent CI toolchain payloads from temp-home e2e tests and prewarm musl-gcc once in Linux CI, avoiding repeated 808 MB musl downloads.
  • Fix transitive dependency include propagation so each consumer package receives its dependency public include dirs.
  • Document [package].standard, the C++ standard architecture, and the CI toolchain-cache analysis; bump version to 0.0.42.

Verification

  • mcpp test -- --gtest_brief=1 passed.
  • tests/e2e/59_cpp_standard_config.sh passed, including the P1689 scanner path.
  • tests/e2e/29_toolchain_partial_versions.sh passed.
  • tests/e2e/31_transitive_deps.sh passed.
  • bash -n tests/e2e/_inherit_toolchain.sh tests/e2e/29_toolchain_partial_versions.sh tests/e2e/31_transitive_deps.sh passed.
  • git diff --check passed.

@Sunrisepeak
Copy link
Copy Markdown
Member Author

CI is green on Linux, Windows, and macOS.

Merge is currently blocked only by the required-review policy (reviewDecision=REVIEW_REQUIRED). I requested maintainer review so this can proceed through the normal gate; I am not using admin override.

@Sunrisepeak Sunrisepeak merged commit 75cf6c0 into main Jun 1, 2026
3 checks passed
@Sunrisepeak Sunrisepeak deleted the feat/cpp-standard-config branch June 1, 2026 10: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.

feat: make C++ standard a first-class build setting

1 participant