From 689c7da70ca42c99323c1763891e696364fe63e0 Mon Sep 17 00:00:00 2001 From: Tam Nguyen Duc <1218621+tamnd@users.noreply.github.com> Date: Sun, 23 Aug 2026 00:44:43 +0700 Subject: [PATCH] zu-c holds the idiom item The largest item on any card here, at 15, and the last big one on zu-c's. The card goes from 50 to 67 of the 90 it is scored out of, since zu-c owes no api-map and no perf. What landed is tamnd/zu-c#9. Ninety [[nodiscard]] attributes on the calls whose return value is the failure report; a to_string and a std::formatter for every type worth printing, which is what ZU_HAS_FORMAT was for and had never been used for; and test_idiom.cpp, which is mostly static_assert on purpose, because a Result being a random access range and deliberately not a borrowed one is a promise the compiler should keep at every call site rather than one a case checked once. The sweep found a bug on its way through. zu.hpp read __cpp_lib_expected before had defined it, so ZU_HAS_EXPECTED came out 0 on GCC 13 at -std=c++23 and the whole try_ half of the API went undeclared on a toolchain that has it. It depended on include order, so two translation units in one build got two different headers. Nothing said so, because the suite for that half is one #if and compiled down to a single placeholder case that passed. That file now carries an #error on the floor branch: at C++23 and above, this half missing is a broken build rather than a quiet one. Left on the card: reference, install and stability, at 10 each. --- clients.toml | 2 +- docs/clients/overview.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/clients.toml b/clients.toml index f180162a..616b0a63 100644 --- a/clients.toml +++ b/clients.toml @@ -166,7 +166,7 @@ package = "zu" registry = "vcpkg and Conan" maintainer = "Tam Nguyen Duc <@tamnd>" tier = 1 -holds = ["quickstart", "conditions", "misuse", "leaks"] +holds = ["quickstart", "idiom", "conditions", "misuse", "leaks"] doc = "The developer kit for the ABI itself: examples, the header-only C++ wrapper, the packaging and the sanitizer suites. It owes no api-map, because the C names are zu.h and zu.h is generated in the engine." [[client]] diff --git a/docs/clients/overview.md b/docs/clients/overview.md index ea521ecc..dfaea3ed 100644 --- a/docs/clients/overview.md +++ b/docs/clients/overview.md @@ -53,7 +53,7 @@ The practice score, today, out of what the client's tier asks for. What is missi | [zu-node](https://github.com/tamnd/zu-node) | 1 | 90 | 90 | `api-map`, `perf` | | [zu-go](https://github.com/tamnd/zu-go) | 1 | 90 | 90 | `api-map`, `perf` | | [zu-java](https://github.com/tamnd/zu-java) | 1 | 90 | 90 | `api-map`, `perf` | -| [zu-c](https://github.com/tamnd/zu-c) | 1 | 50 | 90 | `reference`, `idiom`, `install`, `stability` | +| [zu-c](https://github.com/tamnd/zu-c) | 1 | 67 | 90 | `reference`, `install`, `stability` | | [zu-dotnet](https://github.com/tamnd/zu-dotnet) | 2 | 0 | 75 | `quickstart`, `reference`, `idiom`, `conditions`, `misuse`, `leaks`, `install`, `stability`, `api-map`, `perf` | | [zu-kit](https://github.com/tamnd/zu-kit) | 3 | 0 | 50 | `quickstart`, `reference`, `idiom`, `conditions`, `misuse`, `leaks`, `install`, `stability` |