|
4 | 4 | > Each `## [<version>]` section is that release's notes. Entries are written in English |
5 | 5 | > from 2026.9.28.3 on; earlier entries remain as written. |
6 | 6 |
|
| 7 | +## [2026.9.29.5] - 2026-09-29 |
| 8 | + |
| 9 | +This release completes the workspace build graph in the commands around the |
| 10 | +build, from the validation project's post-release run of 2026.9.29.4: build |
| 11 | +programs are reused across selections and run dependencies first, the build |
| 12 | +database and `--configure-only` plan by configuration, and the output names |
| 13 | +what it reports. A build now reports each step when its outcome is known, and |
| 14 | +shows what runs while it runs (`.agents/docs/2026-09-29-build-progress-display-design.md`). |
| 15 | + |
| 16 | +### Added |
| 17 | + |
| 18 | +- **A build reports each step once, with its outcome.** A package's line is |
| 19 | + written when every step the graph assigns to it has run (`done` with the |
| 20 | + span of its steps, read from ninja's log), when the global cache supplied it |
| 21 | + (`cached N units`), when a step of it failed (`failed`), or when the build |
| 22 | + ends. A package with nothing to do has no line. The packages the command was |
| 23 | + asked to build are listed; their dependencies are folded into one line, and |
| 24 | + a dependency that fails is named. `--verbose` lists every package and prints |
| 25 | + each step as ninja reports it (e2e 842). |
| 26 | +- **A status line states the build.** On a terminal the steps still running |
| 27 | + and one status line, `Building 612/1203 · 14:32 · gpp.gui: vcpkg install |
| 28 | + 6:10`, are drawn below the output and updated in place; the status line |
| 29 | + names the longest-running `check` or `prepare` action, which the engine's |
| 30 | + action wrapper reports when it starts. In a log (CI, a pipe) only final lines |
| 31 | + are written, and the status line is written when the log has been silent for |
| 32 | + a minute (e2e 842, 843). |
| 33 | +- **`Finished` states the whole command's time**, and for a command of ten |
| 34 | + seconds or more how it was spent (`plan`, `programs`, `build`) and the step |
| 35 | + that took at least a quarter of the build. |
| 36 | + |
| 37 | +### Fixed |
| 38 | + |
| 39 | +- **A failed step is reported when it fails.** Its diagnostics were printed |
| 40 | + after ninja exited, that is, after every step still running had finished: |
| 41 | + a compile error beside a twenty-minute vcpkg install appeared twenty minutes |
| 42 | + late (e2e 842). |
| 43 | +- **macOS and Windows terminals are terminals.** Terminal detection was |
| 44 | + compiled only under `__unix__`, which Apple's compilers do not define, so |
| 45 | + the download bar and colours were drawn on Linux alone. A Windows console |
| 46 | + now receives mcpp's lines as UTF-16, so `·`, `→` and non-ASCII paths appear |
| 47 | + as written whatever its code page. |
| 48 | + |
| 49 | +- **A member's build program is reused whichever members a command selects.** |
| 50 | + Its graph document listed every requester in the plan, the virtual root |
| 51 | + included, so the program's re-run key followed the selection: `-p`, `mcpp |
| 52 | + pack` and `mcpp emit build-database` reran the programs a `--workspace` |
| 53 | + build had run (7 to 15 s each in the validation project). A program's |
| 54 | + document now lists the requests made inside its own closure (e2e 839). |
| 55 | +- **A member's build program runs after those of the members it depends on.** |
| 56 | + They ran in discovery order, so a member's program could run before its |
| 57 | + dependency's had applied its directives (e2e 839). |
| 58 | +- **`mcpp emit build-database` and `mcpp build --configure-only` plan a |
| 59 | + workspace by configuration, as the build does.** They planned each member |
| 60 | + separately, so a package two members use was described once per member, |
| 61 | + each time with other arguments (the validation project's core library three |
| 62 | + times). A member that is a program is described as one, and its tests as |
| 63 | + tests. A configuration whose plan fails is planned member by member, so a |
| 64 | + member's failure still affects that member only (e2e 840; SPEC-005 v1.6). |
| 65 | +- **A command that plans several configurations writes the root |
| 66 | + `compile_commands.json` once**, as the union of their databases. Each |
| 67 | + configuration replaced it, and under `mcpp build --workspace`, whose |
| 68 | + configurations build at the same time, the file was the last one's (e2e 840). |
| 69 | + |
| 70 | +### Behaviour changes |
| 71 | + |
| 72 | +- **A build program has one line, which names its package and states its |
| 73 | + outcome**: `build.mcpp <package> ran <time>`, `cached` or `failed`, in |
| 74 | + place of `build.mcpp compiling <package>` and `running <package>`, and of |
| 75 | + `up to date <package> (cached)` (e2e 839, 842). The programs of the |
| 76 | + requested packages are listed, and those of their dependencies are folded |
| 77 | + into one line. |
| 78 | +- **`Compiling <package>` is written when the package's steps have run**, with |
| 79 | + their outcome, rather than for every direct dependency before ninja starts; |
| 80 | + the per-dependency `Cached <package> (N units)` line is `--verbose` output, |
| 81 | + as `cached N units` (e2e 842). |
| 82 | +- **A selected member is announced by its directory** in a `--workspace` |
| 83 | + build, also where another member depends on it (e2e 839). |
| 84 | +- **`mcpp pack` summarises many outputs.** A format that reports more than |
| 85 | + eight outputs is reported by the entry each lies in below their common |
| 86 | + directory, with a count; `--verbose` names every output, and |
| 87 | + `--message-format json` lists every one as before (e2e 841). |
| 88 | +- **Build database set names (SPEC-005 v1.6).** A set is named by its package; |
| 89 | + a document of several configurations prefixes each name with the |
| 90 | + configuration's build directory name, instead of `<member>/`. |
| 91 | + |
7 | 92 | ## [2026.9.29.4] - 2026-09-29 |
8 | 93 |
|
9 | 94 | This release links a program that a workspace member ships through |
|
0 commit comments