Release 2.1.169 (2026-08-04)¶
Bug fixes¶
- support cpp for CodeQL + repo-init (#2566) Add "cpp" to _CODEQL_SUPPORTED_LANGUAGES so a cpp repo receives the CodeQL CI gate, aligning github_config with repo_init._CODEQL_LANGUAGES (which already listed cpp) and fixing the confirmed discrepancy.
Make repo_init container scaffolding compiler-family-aware for cpp: _container_suffix resolves cpp-clang/cpp-gcc from the clang-/gcc- prefix on the primary [ci].versions entry, and _container_tag returns the numeric version (clang-20 -> prod-cpp-clang:20). Seed a cpp default of clang-20 in _default_ci_versions so generated scaffolding renders a family-aware image rather than a bare base image.
No _LANGUAGE_ACTION_PATTERNS entry is needed: vergil-actions' cpp CI uses no marketplace actions beyond the base allowlist.
Task T7 of epic vergil-project/.github#207.
Documentation¶
- add C++ development standards docs (#2568)
- docs(cpp-standards): add C++ development standards docs
Add the four C++ standards pages under docs/site/docs/standards/development/cpp/ and register them in the MkDocs nav.
- overview.md: CMake + Conan 2 layout, the dual-compiler model (Clang primary / GCC secondary as co-equal first-class gates), the prebuilt-toolchains-only rule, and CTest-as-runner with GoogleTest as the documented default.
- toolchain-and-warnings.md: the concrete portable warning set enforced in TYPECHECK, mirrored from the T5 registry entry, plus the no-standing-suppression rule and why per-compiler warning sets are deferred.
- testing-and-coverage.md: the 100%-per-compiler gcovr gate and the GCOVR_EXCL exclusion discipline (legitimate narrow markers vs. whole-file abuse), and that compiler-specific #ifdef blocks are a smell that mostly self-handles under per-compiler coverage.
- naming-conventions.md: C++ naming rules matching the depth of the sibling language pages.
Features¶
- C++ registry entry (clang/gcc) (#2565) Add the C++ Language entry to the _REGISTRY (epic vergil-project/.github#207, T5), building on the merged T3 cardinality concept and T4 [cpp] schema.
INSTALL runs conan install then a cmake configure that exports compile_commands.json and threads the [cpp] std/stdlib in as VERGIL_CPP_ cache vars. LINT (declared ONCE) runs clang-format, run-clang-tidy over the compile DB, and cppcheck against packaged {configs}/cpp/ configs. TYPECHECK (per-version) is the warnings-to-11 build; this task owns and unit-tests the concrete curated warning set. TEST (per-version) runs ctest, gcovr --fail-under-line 100, and a separate ASan/UBSan build+run. AUDIT (declared ONCE) runs conan audit plus a best-effort Conan license surfacing; a C++ license allowlist constant is added.
language_commands gains {std}/{stdlib} expansion (defaulting to the v1 pins) and vrg-validate threads the parsed [cpp] values through. Packaged clang-format/clang-tidy/cppcheck/gcovr configs land under configs/cpp/ and are registered in package-data.
Curated warning set (floor + extras, portable across both current GCC and Clang since one static command runs in every image): -Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion -Wsign-conversion -Wcast-qual -Wold-style-cast -Wnon-virtual-dtor -Woverloaded-virtual -Wdouble-promotion -Wformat=2 -Wimplicit-fallthrough -Wnull-dereference.
- resolve C++ container images and detect cpp projects (#2567) Add C++ support to the container-selection path (T6 of epic vergil-project/.github#207).
detect_language returns "cpp" when a repo carries both a CMakeLists.txt and a Conan manifest (conanfile.py or conanfile.txt); either marker alone is insufficient since CMake is used well beyond Conan-managed C++.
default_image resolves the compiler family from the clang-/gcc- version-tag prefix and builds prod-cpp-
_DEFAULT_VERSIONS["cpp"] is the primary Clang tag (clang-20) and _DEFAULT_TEST_COMMANDS["cpp"] is a conan install && cmake && ctest line for vrg-container-test.
The clang-/gcc- tag parse is extracted to languages.parse_cpp_version_tag as the single source of truth, and repo_init._cpp_family_and_version (added by T7) now delegates to it so image naming and CI scaffolding cannot drift.
CI Evidence: All gates passed — full audit bundle available. Download →