Repository navigation
Conversation
This branch has not been deployed
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.
Summary
A workspace member's architecture-specific
dialect_cxxflagswas dropped when member selection created the virtual root. For example, an i686-only compatibility macro never reached the std precompile command, although the same declaration worked in a standalone package.The virtual root now retains the selected member's conditional dialect declarations without copying its package-local sources, flags, runtime entries or dependencies. Workspace grouping also includes each dialect predicate and flag list, so distinct graph configurations cannot silently use the first member's declaration. Existing predicate evaluation supplies matching flags to the std module, scanner, translation units and configuration fingerprint.
Closes #786.
Criteria
890_workspace_conditional_dialect.shfails with released mcpp 2026.10.5.3 because the selected member's architecture macro is missing, and passes with the freshly built binary on Windows x64.-p, invocation inside the member, multiple selected members with distinct configurations, the std-module cache record, compiler commands, nonmatching architecture predicates and an ordinary dependency whose dialect must remain ignored. It declaresunix-shelland runs through the existing E2E discovery on supported hosts.WorkspacePlanunit tests, including the two new regression tests, pass with the freshly built test binary on Windows x64.mcpp build, help/version smoke, documentation style/structure, version pins, workflow assertions and fixture-path hygiene pass locally. Python-based checks were run with UTF-8 mode on Windows.mcpp testrun passes: 147 test binaries passed, 0 failed, on Windows x64. Linux/macOS E2E execution and hosted build/test jobs remain pending. The documentation/repository CI job currently fails incheck_workflow_assertions.py --check-open: four unchanged workflows still mark closed issue ci-macos xcode-27: ld64.lld cannot parse arm64e.x1 in either available SDK (upstream, tracked) #669 as known-red (ci-fresh-install.yml:361,490,ci-macos-e2e.yml:27,ci-macos.yml:23). These files are identical to basede9c290f; the non-network workflow assertion check passes locally. Failure log: https://github.com/mcpp-community/mcpp/actions/runs/37768556508/job/113282108050.Intersections
WorkspacePlan.VirtualRootPreservesOnlyConditionalDialectDeclarationsWorkspacePlan.ConditionalDialectFlagsSeparateConfigurations, E2E 890Compatibility
No new manifest syntax is introduced. Selected workspace members now receive their previously ignored conditional dialect settings. Members with different conditional declarations can produce separate plans; matching flags can select a different std cache entry and trigger a rebuild. Ordinary dependency dialect flags remain ignored. This PR does not change workspace target-table inheritance or merge semantics.
Checks before merging
bash .github/tools/check_docs_style.sh,check_docs_structure.shandcheck_version_pins.shpass.python3 .github/tools/check_workflow_assertions.pypasses.