0.0.99: #243 feature dep/feat forwarding + #238 xlings 0.4.67 + #230 windows build.mcpp#246
Merged
Merged
Conversation
…rammars Add Manifest::featureForwards (featureName -> [(depStableKey, depFeature)]) and one shared split point split_feature_forward_token in dependency_selector. A [features] implied token containing '/' (or the dedicated table-form 'forward' key) forwards a feature to a dependency, Cargo-parity. Both the TOML and xpkg-descriptor grammars partition '/' tokens out of implies into featureForwards (raw depKey == stableMapKey, same keyspace as dependencies/featureDeps). Unit tests for both surfaces.
…funnel When a resolved package's feature is active, inject the features it forwards to each child into that child's request BEFORE it is pushed onto the worklist. One injection covers both consumption points: resolution (mergeActiveFeatureDeps folds the forwarded feature's conditional deps) and activation (recordDependencyEdge -> aggregatedRequest -> apply emits its defines/sources). Transitive forwarding rides the BFS forward edge (root->mid->leaf); additive with #242 default-features=false. A forward to an undeclared dep is a strict error / non-strict warning; an undefined dep feature reuses the existing does-not-declare gate. e2e 128 covers the transitive tree on both mcpp build and mcpp test.
build.mcpp compiled to build.mcpp.bin, which Windows cmd.exe (the capture_exec shell there) cannot launch — .bin is not in PATHEXT. Name it build.mcpp.exe on Windows (is_windows is constexpr; non-Windows keeps .bin, bytes unchanged). Surfaces once a workspace build.mcpp member is reached on Windows, after the scanner symlink-escape crash fix (df985df) stops masking it as exit 127.
#238) xlings 0.4.67 carries openxlings/xlings#374 (fix(xim): surface multi-repo install failures + best-effort catalog, cf9b60d5), so a workspace member with >=2 inherited index_repos installs uncached packages instead of failing silently at exit 1. Bump release/cross-build/e2e pins 0.4.62 -> 0.4.67.
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.
Closes #243, #238, #230. Batch收尾 for #230–#243 (0.0.99).
#243 — feature
dep/featforwarding (Cargo parity)A
[features]implied token containing/(or the table-formforward = ["dep/feat"]key) forwards a feature to a dependency: one feature can both pull a local source set AND open a dependency's heavy feature. Unblocks a module package's optional module interface (opencv-m'simport opencv.dnn;—dnnpullsdnn.cppmlocally and buildscompat.opencvwithfeatures=["dnn"], instead of forcing +309 TU on every consumer).Manifest::featureForwards, two grammars (TOML + xpkg) sharing the single split pointsplit_feature_forward_token.aggregatedRequest/DependencyEdgefunnel: forwarded features are added to a child's request before it is pushed onto the worklist, so both resolution (mergeActiveFeatureDepspulls the forwarded feature's conditional deps) and activation (recordDependencyEdge→aggregatedRequest→applyemits defines/sources) observe it. Transitive via the BFS forward edge (root→mid→leaf).default-features = false. Forward to an undeclared dep → strict error / warning; undefined dep feature reuses the existing does-not-declare gate.128_feature_forwarding.sh(transitive tree, bothmcpp buildandmcpp test).#238 — ≥2 project-level index_repos install silently fails
Root cause is in xlings (openxlings/xlings#374, now closed/fixed). Vendored xlings 0.4.62 → 0.4.67 (carries
cf9b60d5multi-repo install fix). mcpp-side diagnostics already landed in 0.0.98.#230 — Windows
mcpp test --workspaceexit 127The scanner symlink-escape crash (the real exit-127) was already fixed in 0.0.96 (
df985df, in HEAD) +main.cpptop-level catch. This PR adds the secondary Windows surface:build.mcppcompiled tobuild.mcpp.bin, which Windows cmd.exe can't launch — nowbuild.mcpp.exeon Windows (is_windowsconstexpr; non-Windows bytes unchanged). Reached by a workspace build-mcpp member on Windows only after the scanner fix stops masking it.Verification
mcpp build+mcpp test(all 35 unit test binaries, 0 failed) green..agents/docs/2026-07-19-v0.0.99-feature-forwarding-238-230-design.md.🤖 Generated with Claude Code