Repository navigation
Contributing
Hugo edited this page Sep 30, 2026
·
1 revision
- CMake 3.16+, a C++20 compiler, and optionally Ninja
- clang-format 20: CI pins 20.1.8 (
pip install clang-format==20.1.8), and Homebrew'sllvm@20works too -
scripts/setup-dev.sh: creates.venv-pre-commitand installs acommit-msghook that checks commit messages
-
Commits follow Conventional Commits:
type(scope): subject. Accepted types:feat,fix,chore,docs,refactor,perf,ci,build,style,revert,test. The subject is at most 84 characters. Merge commits are exempt. -
Formatting is LLVM style (
.clang-format).scripts/format.shformats the tree, andscripts/format-check.shchecks it. Both need clang-format 20 or newer, or setCLANG_FORMATto point to it. -
License: MIT. Any
SPDX-License-Identifierin the repository must sayMIT(scripts/check-license-compliance.sh). - Tests: every behavior change comes with a test. For a bug fix, commit the failing test first. See Testing.
- One issue per branch, named after it, for example
fix/25-serialize-format-errorortest/14-unit-tests. - Describe the change under
## Summaryand how it was checked under## Verification, then end withCloses #N. - After opening the pull request, check that the issue appears under Development in its sidebar. GitHub ignores
Closeswhen the base branch is notmain(stacked pull requests), and those links were also missing for some pull requests intomain. If the link is missing, close the issue by hand once the pull request is merged.
| Workflow | Trigger | What it checks |
|---|---|---|
Build |
push to main, pull request into main, manual |
Build and CTest on Ubuntu, macOS and Windows |
Sanitizers |
push to main, any pull request, manual |
CTest under ASan + UBSan and under TSan (Linux, GCC) |
Package |
push to main, any pull request, manual |
tests/consumer/ through find_package() after cmake --install, and through add_subdirectory(), on Ubuntu and Windows |
Coverage |
push to main, any pull request, manual |
gcovr line coverage, at least 88% |
clang-format |
push to main, any pull request |
scripts/format-check.sh with clang-format 20.1.8 |
license-compliance |
push to main, any pull request |
scripts/check-license-compliance.sh |
Commit conventions |
any push |
scripts/ci/commit_checker.py on the pushed commits |
Build only runs on pull requests into main. For a pull request based on another branch, start it by hand: gh workflow run build.yml --ref <branch>.
Using the library
Working on the library