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 0de80d7
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: .agents/docs/README.md
+3-1Lines changed: 3 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,7 +18,7 @@ superseded_by: 2026-09-07-....md # when status is superseded
18
18
---
19
19
```
20
20
21
-
315 records.
21
+
316 records.
22
22
23
23
## By subject
24
24
@@ -31,6 +31,7 @@ Records that declare one. Everything else is listed by date below.
31
31
### design
32
32
33
33
-[An ecosystem design for mcpp and xlings: one authority per fact, and the work that follows from it](2026-09-28-ecosystem-design-and-optimisation-plan.md) — landed
34
+
-[Build cost, foreign toolsets, the build-plugin architecture and the library surface: engine, plugin and index design (#734)](2026-09-28-build-cost-foreign-toolsets-and-library-surface-design.md) — active
34
35
-[The compile database, `emit build-database`, and #701/#702: triage against the specifications, and one design](2026-09-26-compile-database-and-issue-699-design.md) — landed
35
36
-[Issues #693 to #696: triage against mcpp's contracts, and one repair plan](2026-09-25-issues-693-696-triage-and-repair-plan.md) — landed
36
37
-[Workspace inheritance, flag scoping and the published form: a unified repair plan (#690)](2026-09-25-issue-690-workspace-build-inheritance-consistency.md) — landed
@@ -108,6 +109,7 @@ Records that declare one. Everything else is listed by date below.
108
109
109
110
-[Two days of mcpp and xlings: a review of what merged, what is known, and what is open](2026-09-28-ecosystem-review-of-two-days-of-mcpp-and-xlings.md) — active
110
111
-[An ecosystem design for mcpp and xlings: one authority per fact, and the work that follows from it](2026-09-28-ecosystem-design-and-optimisation-plan.md) — landed
112
+
-[Build cost, foreign toolsets, the build-plugin architecture and the library surface: engine, plugin and index design (#734)](2026-09-28-build-cost-foreign-toolsets-and-library-surface-design.md) — active
111
113
-[Eight reports after 2026.9.27.1: implementation plan](2026-09-27-eight-reports-implementation-plan.md) — active
112
114
-[Eight reports after 2026.9.27.1: what each one is, where it belongs, and one optimisation plan](2026-09-27-eight-reports-by-home-and-one-optimisation-plan.md) — active
113
115
-[The compile database, `emit build-database`, and #701/#702: triage against the specifications, and one design](2026-09-26-compile-database-and-issue-699-design.md) — landed
Copy file name to clipboardExpand all lines: docs/12-binary-distribution.md
+17Lines changed: 17 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -137,6 +137,23 @@ error: the published interface imports mathkit:secret , which no unit in this
137
137
Restructure so the interface does not reach it, or make it an `export module`
138
138
partition and accept that its source is published.
139
139
140
+
### Public modules, and what `mcpp pack` and `mcpp build` report (mcpp 2026.9.28.3+)
141
+
142
+
A package's public modules are the lib root's module and what it re-exports
143
+
with `export import`, transitively (SPEC-008). They are what a consumer may
144
+
import; the published closure also carries what they import without
145
+
re-exporting, because a consumer needs it to build their interfaces. The
146
+
"Withheld" row lists every unit that is not published, including when the
147
+
package has no lib root. The three conditions below are warnings: a library may
148
+
implement itself in modules and publish only headers, and only its author can
149
+
state which it means.
150
+
151
+
| Condition | Reported by | Consequence stated |
152
+
|---|---|---|
153
+
| a `lib` target exports modules and has no lib root |`mcpp build`, for the package being built |`mcpp pack` publishes the library without a module interface |
154
+
| exported modules that the packed form does not ship |`mcpp pack`, naming each module | a consumer of the packed form cannot import them |
155
+
| the package being built imports a module of a dependency that has a lib root, outside its public modules |`mcpp build`, naming the module and the public ones | the build succeeds from source and fails against the packed form |
156
+
140
157
## The compatibility tag
141
158
142
159
Every artifact records the toolchain it was built for:
Copy file name to clipboardExpand all lines: docs/30-build-mcpp.md
+91-4Lines changed: 91 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1056,6 +1056,91 @@ one. `mcpp::graph_file()` names a JSON document that states the resolved graph:
1056
1056
- The entries are the `graph` section of `resolution.json` with four additions
1057
1057
(`manifest_dir`, `features`, `targets`, `metadata`), from one derivation.
1058
1058
1059
+
### The interface's name: `mcpp.core` (protocol 14)
1060
+
1061
+
The engine's build-program interface is named `mcpp.core`, which is the name the
1062
+
specification (SPEC-007) gives to the layer. `mcpp` is its permanent equivalent:
1063
+
the engine embeds both units, and the second consists of `export import mcpp;`.
1064
+
A program may use either spelling, or both.
1065
+
1066
+
```cpp
1067
+
import mcpp.core; // the same symbols as `import mcpp;`
1068
+
```
1069
+
1070
+
### Build information: the resolved toolchain (protocol 14)
1071
+
1072
+
A build program reads the resolved toolchain as a set of facts. mcpp does not
1073
+
translate them for any foreign build system; a plugin that drives CMake, vcpkg,
1074
+
Meson or make does. Every value is empty when it does not apply, and a role is
1075
+
one of `cc`, `cxx`, `ld`, `ar`, `rc`, `as`, `mt`.
1076
+
1077
+
| Accessor | Value |
1078
+
|---|---|
1079
+
|`mcpp::tool(role)`| the row's tool for the role: the driver on a GNU-style row, the toolset's tools on the cl.exe row |
1080
+
|`mcpp::abi_tool(role)`| the target ABI's native tool: on the MSVC ABI `cl`, `link`, `lib`, `ml64` and the SDK's `rc` and `mt`, whichever driver the row uses; elsewhere the same as `tool(role)`|
1081
+
|`mcpp::tool_env()`| the environment the engine runs the ABI's tools with, one `KEY=value` per line (`INCLUDE`, `LIB`, `PATH` on the MSVC ABI) |
1082
+
|`mcpp::toolset_identity()`| a path-free identity such as `msvc 14.44.35207; sdk 10.0.26100.0` or `clang 22.1.8`|
1083
+
|`mcpp::msvc_instance_dir()`| the Visual Studio instance the MSVC toolset belongs to; empty for a managed toolset |
1084
+
|`mcpp::ninja_program()`| the ninja mcpp itself runs |
1085
+
|`mcpp::cxx_runtime()`| the program's C++ runtime contract: `self-contained`, `toolchain-coupled` or `host-coupled`|
1086
+
|`mcpp::msvc_crt_linkage()`| on the MSVC ABI `static` (`/MT`) or `dynamic` (`/MD`), the value `place-dlls` reads |
1087
+
1088
+
The values enter the build program's context, so every build program runs once
1089
+
more after an upgrade to the release that introduced them.
0 commit comments