Commit 37c6796
The engine gaps left open after the SDK batch (2026.9.12.2) (#619)
* docs(design): the engine gaps left open after the SDK batch
Issues #564 to #618 checked against main at c688fca: six were fixed and are
closed, two are not engine work, and four remain. Their designs, together with
the two gaps the 2026-09-11 record left open, of which one turns out to be
misdiagnosed: the per-target tool declaration exists under
[target.<selector>.xlings.workspace], measured on linux-x86_64.
For review before implementation.
* docs(design): review decisions, three measured corrections, and the task list
The four review questions are answered: windows_subsystem takes "windows",
windows_entry ships now, a resolve-time refusal is enough for #613, and the
graph-wide switch is an abi table.
Measuring the plan corrected it three times. The #613 refusal already exists as
requires = ["mcpp:c++-abi=libstdc++"]. The whole-graph channel G2 asked for is
dialect_cxxflags: -pthread there links the openkal-emscripten threads feature,
while the same flag in cxxflags reproduces the recorded error. And a new
defect, T1: mcpp build --toolchain llvm@22.1.8 after a gcc build replays the
gcc build in 0.00s.
* feat: the engine gaps left open after the SDK batch (2026.9.12.2)
Implements .agents/docs/2026-09-12-engine-gaps-after-the-sdk-batch.md (M1-M9).
- #618: `[targets.<name>] windows_subsystem` and `windows_entry`, rendered per
ABI onto the declaring executable's own link (`/SUBSYSTEM:` with the CRT
`/ENTRY:` symbol on MSVC, `-mwindows`/`-municode` on GNU), inert off PE, and
refused on library targets. Build-program protocol 10 adds the
`windows-subsystem` and `windows-entry` directives for a named target.
- T1: the fast path compares the toolchain request (`--toolchain`,
`MCPP_TOOLCHAIN`, and `[toolchain] default`); a build asking for another
toolchain no longer replays the previous one.
- #615: `runtime.deploy = [{ from, to }]` places runtime files in a directory
relative to the executable, in mcpp.toml and in descriptors, and `mcpp pack`
carries both `deploy_files` and `deploy` at the same relative paths.
- `[target.<selector>.abi] threads` as a typed graph-wide switch, with
`requires_abi` on a package or feature refused before compilation when the
root does not state it.
- #613: a dependency's install hook receives MCPP_COMPILER, MCPP_CXX_STDLIB and
the target names, computed by the function the build-program environment
uses; docs state the `mcpp:c++-abi` recipe for source-built static packages.
- #614: one function decides an xlings invocation's environment, the Windows
project scope is restored after each invocation, and xlings' own error lines
follow a failed install.
- #609 and G1: a documented toolchain hazard, and the refusal that names
`[target.<selector>.xlings.workspace]`, with examples/13 using it.
* fix: remove module-boundary shapes that crash clang on the MSVC ABI; correct the hook environment
Windows CI (clang 20.1.7, x86_64-pc-windows-msvc) crashed compiling
directives.cppm. The change introduced constructs of the kind src/pack/pack.cppm
records crashing that toolchain: pointers to members of an imported type and a
std::span over an exported constexpr array, plus optional-bearing types in an
exported interface. They are replaced by plain code: `windows_choice_problem`
states the accepted values once for both parsers, the directive check and apply
are per field, `invocation_env` returns a plain struct, ScopedInvocationEnv
keeps plain members, and the hook scope uses six ScopedEnv locals.
tests/e2e/648 measured that a dependency's install hook runs before the
toolchain is resolved, because prepare resolves it after the dependency graph.
The hook therefore receives the build's target and empty toolchain names; the
code comment, docs/22, docs/32, the CHANGELOG and the design record now state
this, and 648 asserts it, including that inherited values do not leak through.
Test fixes: 645 resolves its helper directory before changing directory and
drives `mcpp run` through MCPP_TOOLCHAIN; 647 writes each manifest to its own
package directory.
* test(645): the machine-default leg takes the newest other installed version
The first other version found was gcc 13.3.0, which rejects -fmodules, so the leg measured the compiler rather than the fast path. Measured after the change: build A-B-A, run A-B-A, and gcc@16.1.0 -> gcc@15.1.0 with the artefact's version string, all passing.
* test(645): a host whose fast path declines for another reason is reported, not failed
macOS and Windows CI found an unchanged second build resolving the toolchain: try_fast_build requires an ELF runtime-validation verdict for every artefact, which Mach-O and PE never record (#400). The control now compares the toolchain= lines the two builds record; identical lines report the host as not measured and print the entry, differing lines fail. The design record notes the ELF-only fast path as outside this change.
---------
Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>1 parent c688fca commit 37c6796
51 files changed
Lines changed: 3548 additions & 132 deletions
File tree
- .agents/docs
- .github/workflows
- docs
- zh
- examples/13-platform-targets
- modules
- buildmcpp/src
- manifest/src
- platform/src
- versioning/src
- src
- build
- pack
- xlings
- tests
- e2e
- unit
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
| 8 | + | |
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| |||
Lines changed: 605 additions & 0 deletions
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
21 | | - | |
| 21 | + | |
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
| |||
52 | 52 | | |
53 | 53 | | |
54 | 54 | | |
| 55 | + | |
55 | 56 | | |
56 | 57 | | |
57 | 58 | | |
58 | 59 | | |
59 | 60 | | |
60 | 61 | | |
| 62 | + | |
61 | 63 | | |
62 | 64 | | |
63 | 65 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
203 | 203 | | |
204 | 204 | | |
205 | 205 | | |
206 | | - | |
207 | | - | |
208 | | - | |
209 | | - | |
210 | | - | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
211 | 211 | | |
212 | 212 | | |
213 | 213 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
9 | 11 | | |
10 | 12 | | |
11 | 13 | | |
| |||
34 | 36 | | |
35 | 37 | | |
36 | 38 | | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
37 | 110 | | |
38 | 111 | | |
39 | 112 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
202 | 202 | | |
203 | 203 | | |
204 | 204 | | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
205 | 254 | | |
206 | 255 | | |
207 | 256 | | |
| |||
223 | 272 | | |
224 | 273 | | |
225 | 274 | | |
| 275 | + | |
| 276 | + | |
226 | 277 | | |
227 | 278 | | |
228 | 279 | | |
| |||
1055 | 1106 | | |
1056 | 1107 | | |
1057 | 1108 | | |
| 1109 | + | |
1058 | 1110 | | |
1059 | 1111 | | |
1060 | 1112 | | |
| |||
1109 | 1161 | | |
1110 | 1162 | | |
1111 | 1163 | | |
| 1164 | + | |
| 1165 | + | |
| 1166 | + | |
| 1167 | + | |
| 1168 | + | |
| 1169 | + | |
| 1170 | + | |
| 1171 | + | |
| 1172 | + | |
| 1173 | + | |
| 1174 | + | |
| 1175 | + | |
| 1176 | + | |
| 1177 | + | |
| 1178 | + | |
| 1179 | + | |
| 1180 | + | |
1112 | 1181 | | |
1113 | 1182 | | |
1114 | 1183 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
192 | 192 | | |
193 | 193 | | |
194 | 194 | | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
195 | 213 | | |
196 | 214 | | |
197 | 215 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
873 | 873 | | |
874 | 874 | | |
875 | 875 | | |
| 876 | + | |
| 877 | + | |
| 878 | + | |
| 879 | + | |
| 880 | + | |
| 881 | + | |
| 882 | + | |
| 883 | + | |
| 884 | + | |
| 885 | + | |
| 886 | + | |
| 887 | + | |
| 888 | + | |
| 889 | + | |
| 890 | + | |
| 891 | + | |
| 892 | + | |
| 893 | + | |
| 894 | + | |
| 895 | + | |
| 896 | + | |
| 897 | + | |
| 898 | + | |
| 899 | + | |
| 900 | + | |
| 901 | + | |
| 902 | + | |
| 903 | + | |
| 904 | + | |
| 905 | + | |
| 906 | + | |
876 | 907 | | |
877 | 908 | | |
878 | 909 | | |
| |||
0 commit comments