From d76282836cfd6d080ae34cb74b4ee298b5ad0438 Mon Sep 17 00:00:00 2001 From: Santiago Figueroa Manrique Date: Wed, 7 Oct 2026 14:01:54 +0200 Subject: [PATCH 1/9] gcc, g++ 15 Signed-off-by: Santiago Figueroa Manrique --- .github/workflows/build-test-release.yml | 6 +++--- .github/workflows/check-build-reproducibility.yml | 6 +++--- .github/workflows/check-code-quality.yml | 2 +- .readthedocs.yaml | 6 +++--- docs/advanced_documentation/build-guide.md | 4 ++-- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build-test-release.yml b/.github/workflows/build-test-release.yml index e35c40326f..b5d52b153e 100644 --- a/.github/workflows/build-test-release.yml +++ b/.github/workflows/build-test-release.yml @@ -69,11 +69,11 @@ jobs: - name: Install packages run: | sudo apt-get update - sudo apt-get install -y ninja-build gcc-14 g++-14 clang-18 + sudo apt-get install -y ninja-build gcc-15 g++-15 clang-18 sudo ln -s /usr/bin/clang-18 /usr/local/bin/clang sudo ln -s /usr/bin/clang++-18 /usr/local/bin/clang++ - sudo ln -s /usr/bin/gcc-14 /usr/local/bin/gcc - sudo ln -s /usr/bin/g++-14 /usr/local/bin/g++ + sudo ln -s /usr/bin/gcc-15 /usr/local/bin/gcc + sudo ln -s /usr/bin/g++-15 /usr/local/bin/g++ - name: Install uv uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0 diff --git a/.github/workflows/check-build-reproducibility.yml b/.github/workflows/check-build-reproducibility.yml index 70766aebca..c1817990c4 100644 --- a/.github/workflows/check-build-reproducibility.yml +++ b/.github/workflows/check-build-reproducibility.yml @@ -34,11 +34,11 @@ jobs: - name: Install packages run: | sudo apt-get update - sudo apt-get install -y ninja-build gcc-14 g++-14 clang-18 + sudo apt-get install -y ninja-build gcc-15 g++-15 clang-18 sudo ln -s /usr/bin/clang-18 /usr/local/bin/clang sudo ln -s /usr/bin/clang++-18 /usr/local/bin/clang++ - sudo ln -s /usr/bin/gcc-14 /usr/local/bin/gcc - sudo ln -s /usr/bin/g++-14 /usr/local/bin/g++ + sudo ln -s /usr/bin/gcc-15 /usr/local/bin/gcc + sudo ln -s /usr/bin/g++-15 /usr/local/bin/g++ - name: Install uv uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0 diff --git a/.github/workflows/check-code-quality.yml b/.github/workflows/check-code-quality.yml index a694009332..67784a72dd 100644 --- a/.github/workflows/check-code-quality.yml +++ b/.github/workflows/check-code-quality.yml @@ -32,7 +32,7 @@ jobs: - name: Install most linters from uv run: | - CC=gcc-14 CXX=g++-14 uv sync --locked --group lint + CC=gcc-15 CXX=g++-15 uv sync --locked --group lint - name: Run mypy run: | diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 9651dc1aba..599b786880 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -14,8 +14,8 @@ build: - graphviz - graphviz-tools - libgvplugin-neato-layout8 - - gcc-14 - - g++-14 + - gcc-15 + - g++-15 tools: python: "3.14" jobs: @@ -26,7 +26,7 @@ build: create_environment: - uv venv "${READTHEDOCS_VIRTUALENV_PATH}" install: - - CC=gcc-14 CXX=g++-14 UV_PROJECT_ENVIRONMENT="${READTHEDOCS_VIRTUALENV_PATH}" uv sync --locked --group doc + - CC=gcc-15 CXX=g++-15 UV_PROJECT_ENVIRONMENT="${READTHEDOCS_VIRTUALENV_PATH}" uv sync --locked --group doc post_install: # remove API DLL define in header - find power_grid_model_c/power_grid_model_c/include -name *.h -exec sed -i -r "s/#define PGM.*//g" {} \; diff --git a/docs/advanced_documentation/build-guide.md b/docs/advanced_documentation/build-guide.md index 9984dc077d..54ebf724e2 100644 --- a/docs/advanced_documentation/build-guide.md +++ b/docs/advanced_documentation/build-guide.md @@ -281,8 +281,8 @@ brew install \ Append the following lines into the file `${HOME}/.bashrc` (required for `scikit-build` for the Python installation): ```shell -export CXX=clang++ # or g++ or g++-14 or ... -export CC=clang # or gcc or gcc-14 or ... +export CXX=clang++ # or g++ or g++-15 or ... +export CC=clang # or gcc or gcc-15 or ... export LLVM_COV=llvm-cov-18 # only if you want to use one of the llvm features export CLANG_TIDY=clang-tidy-18 # only if you want to use one of the clang-tidy presets ``` From c800d720c95eeff61520621286e0f1ccb57ab27f Mon Sep 17 00:00:00 2001 From: Santiago Figueroa Manrique Date: Wed, 7 Oct 2026 14:11:04 +0200 Subject: [PATCH 2/9] clang 21 Signed-off-by: Santiago Figueroa Manrique --- .github/workflows/build-test-release.yml | 6 +++--- .github/workflows/check-build-reproducibility.yml | 6 +++--- .github/workflows/clang-tidy.yml | 6 +++--- .github/workflows/sonar.yml | 6 +++--- .github/workflows/thread-sanitizer.yml | 6 +++--- docs/advanced_documentation/build-guide.md | 4 ++-- 6 files changed, 17 insertions(+), 17 deletions(-) diff --git a/.github/workflows/build-test-release.yml b/.github/workflows/build-test-release.yml index b5d52b153e..d0c9658b08 100644 --- a/.github/workflows/build-test-release.yml +++ b/.github/workflows/build-test-release.yml @@ -69,9 +69,9 @@ jobs: - name: Install packages run: | sudo apt-get update - sudo apt-get install -y ninja-build gcc-15 g++-15 clang-18 - sudo ln -s /usr/bin/clang-18 /usr/local/bin/clang - sudo ln -s /usr/bin/clang++-18 /usr/local/bin/clang++ + sudo apt-get install -y ninja-build gcc-15 g++-15 clang-21 + sudo ln -s /usr/bin/clang-21 /usr/local/bin/clang + sudo ln -s /usr/bin/clang++-21 /usr/local/bin/clang++ sudo ln -s /usr/bin/gcc-15 /usr/local/bin/gcc sudo ln -s /usr/bin/g++-15 /usr/local/bin/g++ diff --git a/.github/workflows/check-build-reproducibility.yml b/.github/workflows/check-build-reproducibility.yml index c1817990c4..62ce335089 100644 --- a/.github/workflows/check-build-reproducibility.yml +++ b/.github/workflows/check-build-reproducibility.yml @@ -34,9 +34,9 @@ jobs: - name: Install packages run: | sudo apt-get update - sudo apt-get install -y ninja-build gcc-15 g++-15 clang-18 - sudo ln -s /usr/bin/clang-18 /usr/local/bin/clang - sudo ln -s /usr/bin/clang++-18 /usr/local/bin/clang++ + sudo apt-get install -y ninja-build gcc-15 g++-15 clang-21 + sudo ln -s /usr/bin/clang-21 /usr/local/bin/clang + sudo ln -s /usr/bin/clang++-21 /usr/local/bin/clang++ sudo ln -s /usr/bin/gcc-15 /usr/local/bin/gcc sudo ln -s /usr/bin/g++-15 /usr/local/bin/g++ diff --git a/.github/workflows/clang-tidy.yml b/.github/workflows/clang-tidy.yml index 85f9624a0b..343f1549eb 100644 --- a/.github/workflows/clang-tidy.yml +++ b/.github/workflows/clang-tidy.yml @@ -53,9 +53,9 @@ jobs: - name: Install packages run: | sudo apt-get update - sudo apt-get install -y ninja-build clang-18 clang-tidy-18 - sudo ln -s /usr/bin/clang-18 /usr/local/bin/clang - sudo ln -s /usr/bin/clang++-18 /usr/local/bin/clang++ + sudo apt-get install -y ninja-build clang-21 clang-tidy-18 + sudo ln -s /usr/bin/clang-21 /usr/local/bin/clang + sudo ln -s /usr/bin/clang++-21 /usr/local/bin/clang++ sudo ln -s /usr/bin/clang-tidy-18 /usr/local/bin/clang-tidy - name: Install uv diff --git a/.github/workflows/sonar.yml b/.github/workflows/sonar.yml index d247e157ea..3af33f7622 100644 --- a/.github/workflows/sonar.yml +++ b/.github/workflows/sonar.yml @@ -34,9 +34,9 @@ jobs: - name: Install packages run: | sudo apt-get update - sudo apt-get install -y ninja-build clang-18 lcov gcovr - sudo ln -s /usr/bin/clang-18 /usr/local/bin/clang - sudo ln -s /usr/bin/clang++-18 /usr/local/bin/clang++ + sudo apt-get install -y ninja-build clang-21 lcov gcovr + sudo ln -s /usr/bin/clang-21 /usr/local/bin/clang + sudo ln -s /usr/bin/clang++-21 /usr/local/bin/clang++ - name: Install uv uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0 - name: Install pgm-build-deps diff --git a/.github/workflows/thread-sanitizer.yml b/.github/workflows/thread-sanitizer.yml index fef6785db7..677cbc66b6 100644 --- a/.github/workflows/thread-sanitizer.yml +++ b/.github/workflows/thread-sanitizer.yml @@ -34,9 +34,9 @@ jobs: - name: Install packages run: | sudo apt-get update - sudo apt-get install -y ninja-build clang-18 - sudo ln -s /usr/bin/clang-18 /usr/local/bin/clang - sudo ln -s /usr/bin/clang++-18 /usr/local/bin/clang++ + sudo apt-get install -y ninja-build clang-21 + sudo ln -s /usr/bin/clang-21 /usr/local/bin/clang + sudo ln -s /usr/bin/clang++-21 /usr/local/bin/clang++ - name: Install uv uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0 diff --git a/docs/advanced_documentation/build-guide.md b/docs/advanced_documentation/build-guide.md index 54ebf724e2..af4ee51d5b 100644 --- a/docs/advanced_documentation/build-guide.md +++ b/docs/advanced_documentation/build-guide.md @@ -85,7 +85,7 @@ These are handled automatically in CI. For local development, use your system's ```{note} Once your compiler of choice is installed, you need to define the environment variables `CC` and `CXX` to specify the compiler. -For example `export CC=clang-18` and `export CXX=clang++-18` to select the `clang` compiler in Ubuntu. +For example `export CC=clang-21` and `export CXX=clang++-21` to select the `clang` compiler in Ubuntu. ``` ### Build System for CMake Project @@ -263,7 +263,7 @@ At the time of writing, the set-up is done as follows: ```shell sudo apt update && sudo apt upgrade # make sure you're up to date -sudo apt install build-essential gcc g++ clang-18 procps curl file git # install initial dependencies +sudo apt install build-essential gcc g++ clang-21 procps curl file git # install initial dependencies ``` Then install Homebrew using the setup recommendations in [Homebrew](https://brew.sh). From 760f012c3a519828c150fa46bf385f62f3a792bd Mon Sep 17 00:00:00 2001 From: Santiago Figueroa Manrique Date: Wed, 7 Oct 2026 14:40:27 +0200 Subject: [PATCH 3/9] remaining Signed-off-by: Santiago Figueroa Manrique --- .github/workflows/sonar.yml | 2 +- docs/advanced_documentation/build-guide.md | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/sonar.yml b/.github/workflows/sonar.yml index 3af33f7622..41305559a3 100644 --- a/.github/workflows/sonar.yml +++ b/.github/workflows/sonar.yml @@ -25,7 +25,7 @@ jobs: env: BUILD_WRAPPER_OUT_DIR: build_wrapper_output_directory # Directory where build-wrapper output will be placed CMAKE_PREFIX_PATH: /home/linuxbrew/.linuxbrew - LLVM_COV: llvm-cov-18 + LLVM_COV: llvm-cov-21 HOMEBREW_FORCE_BREWED_CURL: 1 steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 diff --git a/docs/advanced_documentation/build-guide.md b/docs/advanced_documentation/build-guide.md index af4ee51d5b..6cc157c8af 100644 --- a/docs/advanced_documentation/build-guide.md +++ b/docs/advanced_documentation/build-guide.md @@ -54,13 +54,13 @@ Below is a list of tested compilers: #### Linux -* gcc >= 14.0: - * Version 14.x tested using the version in the `manylinux_2_28` container. - * Version 14.x tested using the `musllinux` build with custom compiler. - * Version 14.x tested in CI. -* Clang >= 18.0: - * Version 18.x tested in CI. - * Version 18.x tested in CI with code quality checks. +* gcc >= 15.0: + * Version 15.x tested using the version in the `manylinux_2_28` container. + * Version 15.x tested using the `musllinux` build with custom compiler. + * Version 15.x tested in CI. +* Clang >= 21.0: + * Version 21.x tested in CI. + * Version 21.x tested in CI with code quality checks. ```{Admonition} Additional information Wheel builds for Linux are done inside containers using `cibuildwheel`: @@ -73,9 +73,9 @@ These are handled automatically in CI. For local development, use your system's #### Windows * MSVC >= 19.0: - * Latest release tested in CI (e.g. Visual Studio 2022, IDE or build tools). + * Latest release tested in CI (e.g. Visual Studio 2026, IDE or build tools). * Clang CL >= 19.0: - * Latest release tested in CI (e.g. Visual Studio 2022, IDE or build tools). + * Latest release tested in CI (e.g. Visual Studio 2026, IDE or build tools). #### macOS @@ -283,7 +283,7 @@ Append the following lines into the file `${HOME}/.bashrc` (required for `scikit ```shell export CXX=clang++ # or g++ or g++-15 or ... export CC=clang # or gcc or gcc-15 or ... -export LLVM_COV=llvm-cov-18 # only if you want to use one of the llvm features +export LLVM_COV=llvm-cov-21 # only if you want to use one of the llvm features export CLANG_TIDY=clang-tidy-18 # only if you want to use one of the clang-tidy presets ``` From 6c28db09581346e1db07ec3af3fac565ce6de68a Mon Sep 17 00:00:00 2001 From: Santiago Figueroa Manrique Date: Wed, 7 Oct 2026 15:03:24 +0200 Subject: [PATCH 4/9] adjust docs Signed-off-by: Santiago Figueroa Manrique --- docs/advanced_documentation/build-guide.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/advanced_documentation/build-guide.md b/docs/advanced_documentation/build-guide.md index 6cc157c8af..7d543a28be 100644 --- a/docs/advanced_documentation/build-guide.md +++ b/docs/advanced_documentation/build-guide.md @@ -72,9 +72,9 @@ These are handled automatically in CI. For local development, use your system's #### Windows -* MSVC >= 19.0: +* MSVC >= 19.5.*: * Latest release tested in CI (e.g. Visual Studio 2026, IDE or build tools). -* Clang CL >= 19.0: +* Clang CL >= 20.1.8: * Latest release tested in CI (e.g. Visual Studio 2026, IDE or build tools). #### macOS @@ -319,9 +319,9 @@ As a quick start, from the root of the repository: You need to install the MSVC compiler. You can either install the whole Visual Studio IDE or just the build tools. -* [Visual Studio Build Tools](https://aka.ms/vs/17/release/vs_BuildTools.exe) (free) +* [Visual Studio Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2026) (free) * Select C++ build tools -* Full [Visual Studio](https://visualstudio.microsoft.com/vs/) (All three versions are suitable. +* Full [Visual Studio](https://visualstudio.microsoft.com/downloads/) (All three versions are suitable. Check the license!) * Select Desktop Development with C++ * [Optional] Select `C++ Clang tools for Windows` From f8a761d844710f9172967cedaaddb6d5deaa6c62 Mon Sep 17 00:00:00 2001 From: Santiago Figueroa Manrique Date: Fri, 16 Oct 2026 09:47:23 +0200 Subject: [PATCH 5/9] upgrade to latest available compilers in ubuntu 26.04 Signed-off-by: Santiago Figueroa Manrique --- .github/workflows/build-test-release.yml | 10 ++++---- .../workflows/check-build-reproducibility.yml | 10 ++++---- .github/workflows/check-code-quality.yml | 2 +- .github/workflows/clang-tidy.yml | 6 ++--- .github/workflows/sonar.yml | 8 +++---- .github/workflows/thread-sanitizer.yml | 6 ++--- .readthedocs.yaml | 6 ++--- docs/advanced_documentation/build-guide.md | 24 +++++++++---------- 8 files changed, 36 insertions(+), 36 deletions(-) diff --git a/.github/workflows/build-test-release.yml b/.github/workflows/build-test-release.yml index a50dcbf8dc..2ec72669c8 100644 --- a/.github/workflows/build-test-release.yml +++ b/.github/workflows/build-test-release.yml @@ -69,11 +69,11 @@ jobs: - name: Install packages run: | sudo apt-get update - sudo apt-get install -y ninja-build gcc-15 g++-15 clang-21 - sudo ln -s /usr/bin/clang-21 /usr/local/bin/clang - sudo ln -s /usr/bin/clang++-21 /usr/local/bin/clang++ - sudo ln -s /usr/bin/gcc-15 /usr/local/bin/gcc - sudo ln -s /usr/bin/g++-15 /usr/local/bin/g++ + sudo apt-get install -y ninja-build gcc-16 g++-16 clang-22 + sudo ln -s /usr/bin/clang-22 /usr/local/bin/clang + sudo ln -s /usr/bin/clang++-22 /usr/local/bin/clang++ + sudo ln -s /usr/bin/gcc-16 /usr/local/bin/gcc + sudo ln -s /usr/bin/g++-16 /usr/local/bin/g++ - name: Install uv uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0 diff --git a/.github/workflows/check-build-reproducibility.yml b/.github/workflows/check-build-reproducibility.yml index 4b9d988768..efd08d74c4 100644 --- a/.github/workflows/check-build-reproducibility.yml +++ b/.github/workflows/check-build-reproducibility.yml @@ -34,11 +34,11 @@ jobs: - name: Install packages run: | sudo apt-get update - sudo apt-get install -y ninja-build gcc-15 g++-15 clang-21 - sudo ln -s /usr/bin/clang-21 /usr/local/bin/clang - sudo ln -s /usr/bin/clang++-21 /usr/local/bin/clang++ - sudo ln -s /usr/bin/gcc-15 /usr/local/bin/gcc - sudo ln -s /usr/bin/g++-15 /usr/local/bin/g++ + sudo apt-get install -y ninja-build gcc-16 g++-16 clang-22 + sudo ln -s /usr/bin/clang-22 /usr/local/bin/clang + sudo ln -s /usr/bin/clang++-22 /usr/local/bin/clang++ + sudo ln -s /usr/bin/gcc-16 /usr/local/bin/gcc + sudo ln -s /usr/bin/g++-16 /usr/local/bin/g++ - name: Install uv uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0 diff --git a/.github/workflows/check-code-quality.yml b/.github/workflows/check-code-quality.yml index 67784a72dd..ab4d7fd9a4 100644 --- a/.github/workflows/check-code-quality.yml +++ b/.github/workflows/check-code-quality.yml @@ -32,7 +32,7 @@ jobs: - name: Install most linters from uv run: | - CC=gcc-15 CXX=g++-15 uv sync --locked --group lint + CC=gcc-16 CXX=g++-16 uv sync --locked --group lint - name: Run mypy run: | diff --git a/.github/workflows/clang-tidy.yml b/.github/workflows/clang-tidy.yml index 343f1549eb..39abf636d6 100644 --- a/.github/workflows/clang-tidy.yml +++ b/.github/workflows/clang-tidy.yml @@ -53,9 +53,9 @@ jobs: - name: Install packages run: | sudo apt-get update - sudo apt-get install -y ninja-build clang-21 clang-tidy-18 - sudo ln -s /usr/bin/clang-21 /usr/local/bin/clang - sudo ln -s /usr/bin/clang++-21 /usr/local/bin/clang++ + sudo apt-get install -y ninja-build clang-22 clang-tidy-18 + sudo ln -s /usr/bin/clang-22 /usr/local/bin/clang + sudo ln -s /usr/bin/clang++-22 /usr/local/bin/clang++ sudo ln -s /usr/bin/clang-tidy-18 /usr/local/bin/clang-tidy - name: Install uv diff --git a/.github/workflows/sonar.yml b/.github/workflows/sonar.yml index 41305559a3..7360cf8b2b 100644 --- a/.github/workflows/sonar.yml +++ b/.github/workflows/sonar.yml @@ -25,7 +25,7 @@ jobs: env: BUILD_WRAPPER_OUT_DIR: build_wrapper_output_directory # Directory where build-wrapper output will be placed CMAKE_PREFIX_PATH: /home/linuxbrew/.linuxbrew - LLVM_COV: llvm-cov-21 + LLVM_COV: llvm-cov-22 HOMEBREW_FORCE_BREWED_CURL: 1 steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 @@ -34,9 +34,9 @@ jobs: - name: Install packages run: | sudo apt-get update - sudo apt-get install -y ninja-build clang-21 lcov gcovr - sudo ln -s /usr/bin/clang-21 /usr/local/bin/clang - sudo ln -s /usr/bin/clang++-21 /usr/local/bin/clang++ + sudo apt-get install -y ninja-build clang-22 lcov gcovr + sudo ln -s /usr/bin/clang-22 /usr/local/bin/clang + sudo ln -s /usr/bin/clang++-22 /usr/local/bin/clang++ - name: Install uv uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0 - name: Install pgm-build-deps diff --git a/.github/workflows/thread-sanitizer.yml b/.github/workflows/thread-sanitizer.yml index 677cbc66b6..faf3430519 100644 --- a/.github/workflows/thread-sanitizer.yml +++ b/.github/workflows/thread-sanitizer.yml @@ -34,9 +34,9 @@ jobs: - name: Install packages run: | sudo apt-get update - sudo apt-get install -y ninja-build clang-21 - sudo ln -s /usr/bin/clang-21 /usr/local/bin/clang - sudo ln -s /usr/bin/clang++-21 /usr/local/bin/clang++ + sudo apt-get install -y ninja-build clang-22 + sudo ln -s /usr/bin/clang-22 /usr/local/bin/clang + sudo ln -s /usr/bin/clang++-22 /usr/local/bin/clang++ - name: Install uv uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0 diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 599b786880..c12fe4ab61 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -14,8 +14,8 @@ build: - graphviz - graphviz-tools - libgvplugin-neato-layout8 - - gcc-15 - - g++-15 + - gcc-16 + - g++-16 tools: python: "3.14" jobs: @@ -26,7 +26,7 @@ build: create_environment: - uv venv "${READTHEDOCS_VIRTUALENV_PATH}" install: - - CC=gcc-15 CXX=g++-15 UV_PROJECT_ENVIRONMENT="${READTHEDOCS_VIRTUALENV_PATH}" uv sync --locked --group doc + - CC=gcc-16 CXX=g++-16 UV_PROJECT_ENVIRONMENT="${READTHEDOCS_VIRTUALENV_PATH}" uv sync --locked --group doc post_install: # remove API DLL define in header - find power_grid_model_c/power_grid_model_c/include -name *.h -exec sed -i -r "s/#define PGM.*//g" {} \; diff --git a/docs/advanced_documentation/build-guide.md b/docs/advanced_documentation/build-guide.md index 7d543a28be..03b9497fff 100644 --- a/docs/advanced_documentation/build-guide.md +++ b/docs/advanced_documentation/build-guide.md @@ -54,13 +54,13 @@ Below is a list of tested compilers: #### Linux -* gcc >= 15.0: - * Version 15.x tested using the version in the `manylinux_2_28` container. - * Version 15.x tested using the `musllinux` build with custom compiler. - * Version 15.x tested in CI. -* Clang >= 21.0: - * Version 21.x tested in CI. - * Version 21.x tested in CI with code quality checks. +* gcc >= 16.0: + * Version 16.x tested using the version in the `manylinux_2_28` container. + * Version 16.x tested using the `musllinux` build with custom compiler. + * Version 16.x tested in CI. +* Clang >= 22.0: + * Version 22.x tested in CI. + * Version 22.x tested in CI with code quality checks. ```{Admonition} Additional information Wheel builds for Linux are done inside containers using `cibuildwheel`: @@ -85,7 +85,7 @@ These are handled automatically in CI. For local development, use your system's ```{note} Once your compiler of choice is installed, you need to define the environment variables `CC` and `CXX` to specify the compiler. -For example `export CC=clang-21` and `export CXX=clang++-21` to select the `clang` compiler in Ubuntu. +For example `export CC=clang2` and `export CXX=clang++-22` to select the `clang` compiler in Ubuntu. ``` ### Build System for CMake Project @@ -263,7 +263,7 @@ At the time of writing, the set-up is done as follows: ```shell sudo apt update && sudo apt upgrade # make sure you're up to date -sudo apt install build-essential gcc g++ clang-21 procps curl file git # install initial dependencies +sudo apt install build-essential gcc g++ clang-22 procps curl file git # install initial dependencies ``` Then install Homebrew using the setup recommendations in [Homebrew](https://brew.sh). @@ -281,9 +281,9 @@ brew install \ Append the following lines into the file `${HOME}/.bashrc` (required for `scikit-build` for the Python installation): ```shell -export CXX=clang++ # or g++ or g++-15 or ... -export CC=clang # or gcc or gcc-15 or ... -export LLVM_COV=llvm-cov-21 # only if you want to use one of the llvm features +export CXX=clang++ # or g++ or g++-16 or ... +export CC=clang # or gcc or gcc-16 or ... +export LLVM_COV=llvm-cov-22 # only if you want to use one of the llvm features export CLANG_TIDY=clang-tidy-18 # only if you want to use one of the clang-tidy presets ``` From 581d5955aaafc490c21979331c4c9a8ef9bae493 Mon Sep 17 00:00:00 2001 From: Santiago Figueroa Manrique Date: Fri, 16 Oct 2026 10:41:59 +0200 Subject: [PATCH 6/9] fix: clang-22 regression Signed-off-by: Santiago Figueroa Manrique --- .../include/power_grid_model/common/statistics.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/power_grid_model_c/power_grid_model/include/power_grid_model/common/statistics.hpp b/power_grid_model_c/power_grid_model/include/power_grid_model/common/statistics.hpp index 634e1f1506..5057d560d9 100644 --- a/power_grid_model_c/power_grid_model/include/power_grid_model/common/statistics.hpp +++ b/power_grid_model_c/power_grid_model/include/power_grid_model/common/statistics.hpp @@ -248,10 +248,10 @@ template struct PolarComplexRandVar { } }; -template typename RandVarType> - requires std::same_as, UniformComplexRandVar> || - std::same_as, IndependentComplexRandVar> -inline auto conj(RandVarType var) { +template + requires std::same_as> || + std::same_as> +inline auto conj(RandVarType var) { var.value = conj(var.value); return var; } From 3bbc6e8146d6c7b154da1b7e57fb653cb7acc9ec Mon Sep 17 00:00:00 2001 From: Santiago Figueroa Manrique Date: Fri, 16 Oct 2026 10:44:21 +0200 Subject: [PATCH 7/9] add gcc 16 support for code quality check Signed-off-by: Santiago Figueroa Manrique --- .github/workflows/check-code-quality.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/check-code-quality.yml b/.github/workflows/check-code-quality.yml index ab4d7fd9a4..4811659dae 100644 --- a/.github/workflows/check-code-quality.yml +++ b/.github/workflows/check-code-quality.yml @@ -27,6 +27,11 @@ jobs: - name: Checkout uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + - name: Install packages + run: | + sudo apt-get update + sudo apt-get install -y ninja-build gcc-16 g++-16 + - name: Install uv uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0 From 2c8332f1c57fce826b4976f040bf89c9b32e8884 Mon Sep 17 00:00:00 2001 From: Santiago Figueroa Manrique Date: Fri, 16 Oct 2026 11:46:02 +0200 Subject: [PATCH 8/9] fix: remaining clang regression spots Signed-off-by: Santiago Figueroa Manrique --- .../power_grid_model/common/statistics.hpp | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/power_grid_model_c/power_grid_model/include/power_grid_model/common/statistics.hpp b/power_grid_model_c/power_grid_model/include/power_grid_model/common/statistics.hpp index 5057d560d9..f60c6ed6ea 100644 --- a/power_grid_model_c/power_grid_model/include/power_grid_model/common/statistics.hpp +++ b/power_grid_model_c/power_grid_model/include/power_grid_model/common/statistics.hpp @@ -268,11 +268,12 @@ template inline auto conj(PolarComplexRandVar var) { namespace statistics { // Var(s x) ≈ Var(x) * ||s||^2 -template typename RandVarType> - requires is_in_list_c, UniformRealRandVar, IndependentRealRandVar, - UniformComplexRandVar, IndependentComplexRandVar> -inline auto scale(RandVarType const& var, double scale_factor) { - return RandVarType{.value = var.value * scale_factor, .variance = var.variance * abs2(scale_factor)}; +template + requires is_in_list_c< + RandVarType, UniformRealRandVar, IndependentRealRandVar, + UniformComplexRandVar, IndependentComplexRandVar> +inline auto scale(RandVarType const& var, double scale_factor) { + return RandVarType{.value = var.value * scale_factor, .variance = var.variance * abs2(scale_factor)}; } template @@ -281,10 +282,11 @@ inline auto scale(RandVarType const& var, RealValue const& scale_f return RandVarType{.value = var.value * scale_factor, .variance = var.variance * abs2(scale_factor)}; } -template typename RandVarType> - requires is_in_list_c, UniformComplexRandVar, IndependentComplexRandVar> -inline auto scale(RandVarType const& var, DoubleComplex const& scale_factor) { - return RandVarType{.value = var.value * scale_factor, .variance = var.variance * abs2(scale_factor)}; +template + requires is_in_list_c, + IndependentComplexRandVar> +inline auto scale(RandVarType const& var, DoubleComplex const& scale_factor) { + return RandVarType{.value = var.value * scale_factor, .variance = var.variance * abs2(scale_factor)}; } inline auto scale(IndependentComplexRandVar const& var, ComplexValue const& scale_factor) { From 4ec4ba0aca96a18bdb79fdea206d28c759db2ca9 Mon Sep 17 00:00:00 2001 From: Santiago Figueroa Manrique <22895394+figueroa1395@users.noreply.github.com> Date: Mon, 19 Oct 2026 11:09:16 +0200 Subject: [PATCH 9/9] Update docs/advanced_documentation/build-guide.md Co-authored-by: Martijn Govers Signed-off-by: Santiago Figueroa Manrique <22895394+figueroa1395@users.noreply.github.com> --- docs/advanced_documentation/build-guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/advanced_documentation/build-guide.md b/docs/advanced_documentation/build-guide.md index 03b9497fff..395a79e0c5 100644 --- a/docs/advanced_documentation/build-guide.md +++ b/docs/advanced_documentation/build-guide.md @@ -85,7 +85,7 @@ These are handled automatically in CI. For local development, use your system's ```{note} Once your compiler of choice is installed, you need to define the environment variables `CC` and `CXX` to specify the compiler. -For example `export CC=clang2` and `export CXX=clang++-22` to select the `clang` compiler in Ubuntu. +For example `export CC=clang-22` and `export CXX=clang++-22` to select the `clang` compiler in Ubuntu. ``` ### Build System for CMake Project