|
1 | 1 | --- |
2 | 2 | subject: design |
3 | | -status: active |
| 3 | +status: landed |
4 | 4 | --- |
5 | 5 |
|
6 | 6 | # Issues #693 to #696: triage against mcpp's contracts, and one repair plan |
@@ -1047,13 +1047,13 @@ Three items are split out, each for a stated reason. |
1047 | 1047 |
|
1048 | 1048 | | # | Pull request | State | |
1049 | 1049 | |---|---|---| |
1050 | | -| 1 | openxlings/xlings#613 | open, CI running; released as 2026.9.26.2, because 2026.9.26.1 had been released separately earlier the same day | |
| 1050 | +| 1 | openxlings/xlings#613 | merged as `2e3df6dd`; released as 2026.9.26.2 (2026.9.26.1 had been released separately earlier the same day); the four GitCode archives match the GitHub sha256 sidecars; xim-pkgindex#876 (the bot's +22/-3) merged with its hashes checked against the sidecars | |
1051 | 1051 | | 2 | mcpplibs/openkal-musl#43 | merged as `20b92683`; tag `0.19.2`; the GitHub archive (1157319 bytes, sha256 `e8043bcd...c82238`) and the GitCode copy compared byte for byte; the archive carries `port/lib/lib*.a`, eight files of eight bytes | |
1052 | 1052 | | 3 | mcpplibs/mcpp-index#467 | merged as `1529f5f3`; the index artifact `1529f5f` is served by both hosts with the pointer's digest | |
1053 | 1053 | | 4 | mcpplibs/openkal-llvm-runtime#30 | merged as `79671f6b`; tag `0.15.2`; archive 15631743 bytes, sha256 `c2219ad8...c0d0d9`, GitCode copy byte-identical; its mcpp.toml reads openkal-musl `0.19.2` | |
1054 | | -| 5 | mcpplibs/mcpp-index#468 | registration of runtime 0.15.2, CI running | |
1055 | | -| 6 | mcpp-community/mcpp#698 | CI run 1: every Windows row of the regression job passes (below); follow-up commit pending the xlings release | |
1056 | | -| 7 | | after the mcpp release | |
| 1054 | +| 5 | mcpplibs/mcpp-index#468 | merged as `d7872cc3`; the index artifact `d7872cc` is served by both hosts with the pointer's digest | |
| 1055 | +| 6 | mcpp-community/mcpp#698 | merged as `f61b4663`, whose tree equals the tested head `15317aab`; released as 2026.9.26.1 (§12.5) | |
| 1056 | +| 7 | mcpplibs/mcpp-index#469 | merged as `2af34182`: validate.yml, openkal-compat.yml and `latest_mcpp` name 2026.9.26.1, the openkal measurement uses runtime 0.15.2 and gains the two linux-musl rows, and the three `gnu11` comments are corrected; the full sweep is green on every platform (§12.5) | |
1057 | 1057 |
|
1058 | 1058 | **Where the implementation departs from §12.2, and why.** |
1059 | 1059 |
|
@@ -1122,6 +1122,76 @@ CI run 1 of #698 (windows-latest, code page 1252; `mcpp.exe` self-hosted by the |
1122 | 1122 | OK: every row builds in every directory |
1123 | 1123 | ``` |
1124 | 1124 |
|
| 1125 | +### 12.5 Release and ecosystem readings (2026-09-26) |
| 1126 | + |
| 1127 | +- **CI.** Run 3 of #698 (`15317aab`): 40 checks pass; the two that fail are the xcode-27 legs, |
| 1128 | + which fail the same way on `main` (#669: `ld64.lld` 22.1.8 rejects `arm64e.x1` in that image's |
| 1129 | + SDK stubs). The push run on `main` (`f61b4663`) reads the same: every workflow passes except |
| 1130 | + those two legs. |
| 1131 | +- **The Windows artefact.** `mcpp-2026.9.26.1-windows-x86_64.zip` carries `RT_MANIFEST` ID 1 |
| 1132 | + with `activeCodePage` UTF-8 in `bin/mcpp.exe`, and the bundled `registry/bin/xlings.exe` |
| 1133 | + (2026.9.26.2) carries the same; read with `llvm-readobj --coff-resources` from the CI artefact. |
| 1134 | +- **Release.** Run 36184397880, every job successful (four platform builds, the sealed manifest, |
| 1135 | + `publish-ecosystem`). The Linux x86_64 archive was uploaded to GitCode from a CN host the |
| 1136 | + moment it appeared; the other three by `publish-ecosystem`. All four GitCode archives match the |
| 1137 | + GitHub sha256 sidecars, their sidecars answer 200, and the GitHub `xlings-res/mcpp` copies |
| 1138 | + answer 200. xim-pkgindex#877 (+22/-3) was merged after its six hashes were compared with the |
| 1139 | + sidecars; AUR, Homebrew and PyPI publishing succeeded on the merge commit. |
| 1140 | +- **Sandbox, the published artefacts only.** `xlings subos use v693 --sandbox`, CN mirror for |
| 1141 | + both xlings and mcpp (read back from `~/.mcpp/registry/.xlings.json`); mcpp and xlings installed |
| 1142 | + by `xlings install` from the published index and addressed by store path: |
| 1143 | + |
| 1144 | + ``` |
| 1145 | + ok mcpp 2026.9.26.1; xlings 2026.9.26.2; xlings runs in a directory named in CJK |
| 1146 | + ok mirror = CN in /home/speak/.mcpp/registry/.xlings.json |
| 1147 | + ok #695: app at c99, cdep at gnu11, plain at c11; the program runs |
| 1148 | + ok #693: a project directory with no UTF-8 spelling is refused by name |
| 1149 | + ok #693: a file with no UTF-8 spelling is skipped and reported; the rest builds and runs |
| 1150 | + ok #696: the link carries the empty graph sysroot |
| 1151 | + ok #696: -lm answered by openkal-musl 0.19.2; the program prints 2 |
| 1152 | + ok #696: an unanswered -lm fails and the note names openkal-musl 0.19.2 |
| 1153 | + ok #694: Finished release [optimized]; the compile carries -O2, not -Og |
| 1154 | + summary: 12 ok, 0 failed, 0 skipped |
| 1155 | + ``` |
| 1156 | + |
| 1157 | +- **The index, with the release.** #469's sweep builds every member with 2026.9.26.1 on macOS, |
| 1158 | + Linux (default and four llvm shards) and Windows, all green. The openkal measurement, now over |
| 1159 | + four targets, reads: |
| 1160 | + |
| 1161 | + | target | runs | fails | the fails | |
| 1162 | + |---|---|---|---| |
| 1163 | + | `x86_64-linux-gnu` | 30 | 2 | curl (`__memcpy_chk`), cmp-module (asio); as published before | |
| 1164 | + | `x86_64-windows-musl` | 30 (+1 builds) | 1 | curl; as published before | |
| 1165 | + | `x86_64-linux-musl` (new) | 29 | 3 | curl (`__memset_chk`), cmp-module, mimalloc (`-latomic`) | |
| 1166 | + | `aarch64-linux-musl` (new) | 29 | 3 | curl, cmp-module, mimalloc (`-latomic`) | |
| 1167 | + |
| 1168 | + No published label went lower. mimalloc's `-latomic` is the one cell #696 makes visible: |
| 1169 | + `-lpthread` and `-lrt` are answered by openkal-musl's archives, and `-latomic`, the compiler |
| 1170 | + runtime's library, is answered by nothing where the host's used to answer it silently. Its |
| 1171 | + owner is the graph's compiler runtime (mcpplibs/openkal-llvm-runtime#31), and the right answer |
| 1172 | + depends on whether the runtime's builtins carry the `__atomic_*` fallbacks, which is measured |
| 1173 | + there rather than assumed here. |
| 1174 | + |
| 1175 | +### 12.6 Self-review, engine and ecosystem |
| 1176 | + |
| 1177 | +- **Each criterion was run against the previous release.** e2e 776, 777 and 778 (leg B) fail on |
| 1178 | + 2026.9.25.1 at the criterion they name, and pass on 2026.9.26.1; the sandbox script was run |
| 1179 | + against both releases (§12.5 and Appendix A.15). |
| 1180 | +- **Found by the review, fixed before release.** A C entry `main` bypassed the per-unit C |
| 1181 | + standard; the cache-key rule and the test that stated the old one; the exact runtime pin that |
| 1182 | + makes openkal-musl and openkal-llvm-runtime move as a pair; a documentation claim that macOS |
| 1183 | + file names need not be UTF-8; the `allow_host_libs` wording (it lifts the refusal). |
| 1184 | +- **Every consumer of a changed contract.** The C standard: the three index descriptors that |
| 1185 | + worked around the defect keep their `-D` spellings, which work under every engine the index |
| 1186 | + admits (#469). The graph link: every openkal e2e (285 to 294, 738, 778) passes on the new |
| 1187 | + engine, and the index measurement gains the two linux-musl rows. The xlings pin: every |
| 1188 | + workflow moves together (`check_version_pins.sh`), and the release bundles the new xlings. |
| 1189 | +- **Still open, each for a stated reason.** `-latomic` in the openkal graph |
| 1190 | + (openkal-llvm-runtime#31, above); W3b (cl.exe's `/std:` for a declared C standard) |
| 1191 | + waits for a CI row that builds the index with cl.exe; W2b for PE links through the MinGW |
| 1192 | + driver waits for the C4 inventory; W4e (wide APIs, independent of the OS version) is all or |
| 1193 | + nothing; the xcode-27 legs wait for an LLVM whose `ld64.lld` reads `arm64e.x1` (#669). |
| 1194 | + |
1125 | 1195 | --- |
1126 | 1196 |
|
1127 | 1197 | ## Appendix A. Measurement record |
@@ -1306,3 +1376,21 @@ READING R2.windres.beside: exit=0 |
1306 | 1376 | READING R2.windres.rooted: exit=0 |
1307 | 1377 | llvm-rc 20.1.7 (Linux): beside exit=0; rooted through /I exit=0; rooted without /I exit=1 |
1308 | 1378 | ``` |
| 1379 | + |
| 1380 | +**A.15 The sandbox script against the previous release** (`xlings subos use v693c --sandbox`, |
| 1381 | +mcpp 2026.9.25.1 installed from the index, same script as §12.5). Every criterion the release |
| 1382 | +changes fails, and the ones the previous engine already met pass: |
| 1383 | + |
| 1384 | +``` |
| 1385 | +ok mcpp 2026.9.25.1; xlings 2026.9.26.2; mirror = CN |
| 1386 | +FAILED #695 per-package C standard |
| 1387 | +FAILED #693 project directory (the build reaches the JSON writer) |
| 1388 | +FAILED #693 a file inside a project |
| 1389 | +FAILED #696 no graph sysroot on the link line |
| 1390 | +ok #696 -lm answered by openkal-musl 0.19.2 (its own -L precedes the host's) |
| 1391 | +FAILED #696 unanswered -lm: the build succeeds, from the host's libm |
| 1392 | +ok #694 Finished release [optimized] |
| 1393 | +FAILED #694 -Og in compile_commands.json, under that label |
| 1394 | +summary: 6 ok, 6 failed, 0 skipped |
| 1395 | +``` |
| 1396 | + |
0 commit comments