Thanks for your interest in improving libcpprime.
- Keep the public API minimal and stable.
- Keep
include/libcpprime/compatible with C++11 and older compiler versions in the supported matrix. - Avoid compiler-specific behavior unless guarded and tested across compilers.
- If a change is breaking, call it out clearly in the PR description.
- CMake >= 3.20
- A C++ compiler toolchain (GCC/Clang/MSVC/clang-cl)
- Ninja
- Task (
go-task) - Git
- Python >= 3.12
uv- pngquant
Python dependencies are managed by uv.
Windows development is recommended when contributing significant changes, because this repository validates both msvc and clang-cl in CI and those toolchains are easiest to reproduce locally on Windows.
However, since it is difficult to generate a proper Compilation database with MSVC and clang-cl, if you are developing on Windows, configuring with MinGW GCC or Clang is also required.
Linux/macOS development is still fine for day-to-day work, especially for GCC/Clang checks.
This repository includes a Dev Container at .devcontainer/.
Use it if you want a reproducible Linux environment without installing tools manually.
git clone https://github.com/<your-account>/libcpprime.git
cd libcpprime- Install CMake, compiler(s), and Task.
- For docs/benchmark plots, install Python 3.12+ and
uv.
task test:gcc
task test:clang
task test:msvc
task test:clang-clTypical runtime for tests is around 20-60 seconds per run.
All project commands are defined in Taskfile.yml.
task configure:gcc|clang|clang-cl|msvc: Configure a build directorytask configure: Run all configure tasks above
task test:gcc|clang|clang-cl|msvc: Run teststask test: Run all test tasks above
task bench:gcc|clang|clang-cl|msvc: Run standard benchmark and generate plotstask bench-heavy:gcc|clang|clang-cl|msvc: Run heavier benchmark variant (--heavy)
task docs: CopyREADME.mdtodocs/index.md, then build MkDocs sitetask serve: Serve MkDocs locally
task clean:gcc|clang|clang-cl|msvc: Remove one build directorytask clean: Remove all build directories