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
* feat(features): Stage 1 — a [features] entry can contribute package-owned defines
A feature table entry may now be written in table form carrying `defines`
(and `implies`); when the feature is active each bare define desugars to
-D<x> on the package compile flags, alongside the automatic MCPP_FEATURE_<NAME>.
The array shorthand keeps meaning implied-features. Restricts feature compile
contributions to package-owned macros (no free-form cflags/ldflags) per the
capability-model design.
Tests: e2e/80_feature_defines.sh, unit Manifest.FeatureTableFormDefinesAndImplies.
Design: .agents/docs/2026-06-29-feature-capability-model-design.md
* feat(features): Stage 3 — capabilities (provides/requires) with single-provider binding
A feature/package may `requires` an abstract capability instead of a concrete
package; providers declare `provides`. The resolver binds exactly one provider
from the dependency graph, deterministically:
- explicit [capabilities] pin (or --cap cap=provider) wins;
- 0 providers / >=2 unpinned providers are hard errors (never a silent guess);
- a single provider binds with no config.
Link/include requirements still flow through normal dependency mechanics; this
is the selection-and-validation layer that turns a silently-wrong or missing
backend into a loud configure-time error.
Parsed on both surfaces (TOML [features]/[package].provides/[capabilities] and
the Lua descriptor). CLI: `--cap` on build/test.
Tests: e2e/81_capability_binding.sh (6 cases), unit
Manifest.CapabilitiesProvidesRequiresAndPins + SynthesizeFromXpkgLua.CapabilitiesAndFeatureDefines.
Design: .agents/docs/2026-06-29-feature-capability-model-design.md
* docs+release: feature/capability user docs, CHANGELOG, v0.0.69 bump
- docs/05-mcpp-toml.md (+ zh mirror): document the [features] table form
(package-owned defines) and the new provides/requires capabilities section
([capabilities] pins, --cap, deterministic 0/1/many binding table).
- CHANGELOG: 0.0.69 entry (Feature System v2 — S1 defines + S3 capabilities).
- Bump mcpp.toml + MCPP_VERSION to 0.0.69.
- Design doc: record Implementation Status (S1+S3 shipped, S2 next).
0 commit comments