Skip to content

zu-c holds stability, which takes it to everything its tier asks for - #667

Merged
tamnd merged 1 commit into
mainfrom
zu-c-stability
Aug 23, 2026
Merged

tamnd merged 1 commit into
mainfrom
zu-c-stability

Conversation

@tamnd

@tamnd tamnd commented Aug 23, 2026

Copy link
Copy Markdown
Owner

tamnd/zu-c#12 landed api/surface.txt and the gate that reads it, so the last item on zu-c's card is held.

docs/surface.py writes every name include/zu.hpp publishes and the shape it publishes it in, out of the same Doxygen run the reference gate already does, and CI fails until a header change that moved the surface is accompanied by the regenerated file. It tells apart what went, what arrived and what changed shape, because a name that arrived is a minor release and a name that went is not, and identity there is the name plus the parameter types plus the const and ref qualifier, which is what a C++ overload actually is. A renamed parameter is not a change. A defaulted parameter added is a different overload and reads as one gone and one arrived, correctly.

Landing it found a real hole the reference gate could not see. With EXPAND_ONLY_PREDEF on, a #define Doxygen reads in the file is not a value it will evaluate an #if against, so every #if ZU_HAS_EXPECTED block was skipped and ninety two try_ members, the whole std::expected mirror, were published nowhere and warned about nowhere. A member the preprocessor threw away cannot be undocumented, so WARN_IF_UNDOCUMENTED had nothing to say about it. Connection went from 28 published members to 47. That is the fifth time in this repository a gate has been green over nothing, and it is written down in the Doxyfile beside the fix.

The table

zu-c reads 100 rather than 90, and the reason is worth saying rather than looking like a typo. The column is a percentage of what the client's own tier asks of it, and zu-c is asked for neither api-map nor perf: it has no second surface to map, since the header is the surface, and the numbers it would publish are the engine's rather than its own. So its denominator is 90, and holding all ninety is a hundred percent. It is the first client with nothing owed.

Five tier 1 clients are now at their tier's threshold, which is the count the three boxes on #170 wait on.

Checked

On server3, against the engine at HEAD:

100% tests passed, 0 tests failed out of 44
100% tests passed, 0 tests failed out of 3     (docs on, no engine, the shape CI runs)
Ran 22 tests in 0.010s / OK                    (the identity rules the gate rests on)
466 published names, and api/surface.txt says the same

And the gate was exercised rather than reasoned about: a method taken away reports one went and names it, noexcept added reports one changed shape, a return type changed reports one changed shape, an undeleted copy constructor reports one changed shape, a parameter renamed reports nothing at all, and the include guard put back into PREDEFINED reports that nothing was read out of the XML rather than reporting that the entire surface disappeared.

tamnd/zu-c#12 landed api/surface.txt and the gate that reads it, so the
last item on zu-c's card is held and the card is full.

The number in the table is 100 rather than 90 because the column is a
percentage of what the client's own tier asks of it, and zu-c is asked
for neither api-map nor perf: it has no second surface to map, the
header is the surface, and the numbers it would publish are the
engine's rather than its own. Ninety points out of a denominator of
ninety is a hundred percent, and it is the first client with nothing
owed.

That makes five tier 1 clients at their tier's threshold, which is the
count the three boxes on DX4 wait on.
@tamnd
tamnd merged commit 230581c into main Aug 23, 2026
40 checks passed
@tamnd
tamnd deleted the zu-c-stability branch August 23, 2026 05:34
@tamnd tamnd mentioned this pull request Aug 23, 2026
22 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant