You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit af25d18
Browse filesBrowse the repository at this point in the historyBrowse files
* feat(features): per-feature per-glob flags + per-OS features semantics (#253)
Two feature-model gaps surfaced by compat.opencv's 3-platform dnn work:
- features.<name>.flags — per-feature per-glob compile flags, one entry
grammar with [build].flags (shared parser in both grammars: xpkg
parse_glob_flags_array, TOML parse_glob_flags_value). Active features
fold their entries into the ONE buildConfig.globFlags funnel (after
base entries, features in name order, "last flag wins"), so scanner
matching, per-TU flag landing, the zero-hit warning and fingerprint
serialization all consume it unchanged. Fold sits OUTSIDE the
includeDevDeps gate (0.0.94 dual-path invariant). Private per-TU,
non-propagating (contrast feature defines = interface switches).
Feature-off builds no longer carry the rule at all — opencv's mlas
dead-glob warnings disappear; an active feature's dead glob still
warns, now naming the owning feature. TOML AOT allowlist gains a
features.*.flags wildcard segment (aot_path_matches) so both the
inline and [[features.X.flags]] spellings pass the #227 closed guard.
- per-OS features — the mcpp.<os> textual-splice additive overlay
already covers the features key; semantics (per-subkey APPEND, base
first / OS body after, OS-only feature registration) are now locked by
unit tests (per-leg via osOverride) + e2e and documented. Together
with per-feature flags this gives opencv dnn its common/delta shape
(neutral common payload, per-OS mlas-x86/NEON deltas + their flags).
Also: dependency globFlags were never serialized into the per-package
fingerprint (held only by descriptor-frozen-per-version + feature
toggles always touching cflags); feature folding makes the vector
build-variant, so canonical_package_build_metadata now serializes it
like the root side. featureOrigin is diagnostic-only, not fingerprinted.
Tests: unit (TOML/xpkg parse, closed-grammar errors, per-OS additive
merge both legs), e2e 146 (four quadrants, dead-glob warning
elimination + feature-scoped naming, private non-propagation vs define
propagation), e2e 147 (per-OS features end-to-end, poisoned non-host
section must stay invisible).
Host-vs-target splice-axis defect found during this work is split out
as #254. Design: .agents/docs/2026-07-20-issue-253-feature-flags-and-
per-os-features-design.md. Version 0.0.100 -> 0.0.101.
* fix(manifest): parse_glob_flags_array takes filesystem::path — Windows has no path->string implicit conversion (wstring value_type)
0 commit comments