From e0201bd926ca5347da4f65686f825cd126e1f500 Mon Sep 17 00:00:00 2001 From: Florian Pommerening Date: Thu, 10 Sep 2026 15:36:10 +0200 Subject: [PATCH 1/9] Update compiler and Python versions --- .github/workflows/ubuntu.yml | 12 ++++-------- README.md | 4 ++-- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index f3a5d9e668..7a4d28de0c 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -20,14 +20,10 @@ jobs: strategy: matrix: version: - - {ubuntu: 'ubuntu-22.04', python: '3.10', cc: gcc-12, cxx: g++-12, run_tox_tests: true} - # NOTE: Temporarily removing support for the second compiler of the - # older Ubuntu LTS because clang-15 does not support certain C++20 - # features we would like to use (e.g., `ranges` and `views` - # libraries). - # - {ubuntu: 'ubuntu-22.04', python: '3.10', cc: clang-15, cxx: clang++-15, run_tox_tests: false} - - {ubuntu: 'ubuntu-24.04', python: '3.10', cc: gcc-14, cxx: g++-14, run_tox_tests: true} - - {ubuntu: 'ubuntu-24.04', python: '3.10', cc: clang-18, cxx: clang++-18, run_tox_tests: false} + - {ubuntu: 'ubuntu-24.04', python: '3.12', cc: gcc-14, cxx: g++-14, run_tox_tests: true} + - {ubuntu: 'ubuntu-24.04', python: '3.12', cc: clang-20, cxx: clang++-20, run_tox_tests: false} + - {ubuntu: 'ubuntu-26.04', python: '3.14', cc: gcc-15, cxx: g++-14, run_tox_tests: true} + - {ubuntu: 'ubuntu-26.04', python: '3.14', cc: clang-21, cxx: clang++-21, run_tox_tests: false} env: CC: ${{ matrix.version.cc }} CXX: ${{ matrix.version.cxx }} diff --git a/README.md b/README.md index 2047febb12..302ccecd76 100644 --- a/README.md +++ b/README.md @@ -37,8 +37,8 @@ This version of Fast Downward has been tested with the following software versio | OS | Python | C++ compiler | CMake | | ------------ | ------ | ------------------------------------------ | ----- | -| Ubuntu 24.04 | 3.10 | GCC 14, Clang 18 | 3.31 | -| Ubuntu 22.04 | 3.10 | GCC 12 | 3.31 | +| Ubuntu 26.04 | 3.14 | GCC 15, Clang 21 | 4.2 | +| Ubuntu 24.04 | 3.12 | GCC 14, Clang 20 | 3.31 | | macOS 15 | 3.14 | AppleClang 17 | 4.2 | | macOS 14 | 3.14 | AppleClang 15 | 4.2 | | Windows 10 | 3.9 | Visual Studio Enterprise 2022 (MSVC 19.44) | 3.31 | From 0628c27dc8138abe7579dd6b5b725f4fa9d97cbf Mon Sep 17 00:00:00 2001 From: Florian Pommerening Date: Thu, 10 Sep 2026 16:15:22 +0200 Subject: [PATCH 2/9] update SoPlex version to 7.1.2 and fix clang version --- .github/workflows/ubuntu.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 7a4d28de0c..d7cad5db6f 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -22,7 +22,7 @@ jobs: version: - {ubuntu: 'ubuntu-24.04', python: '3.12', cc: gcc-14, cxx: g++-14, run_tox_tests: true} - {ubuntu: 'ubuntu-24.04', python: '3.12', cc: clang-20, cxx: clang++-20, run_tox_tests: false} - - {ubuntu: 'ubuntu-26.04', python: '3.14', cc: gcc-15, cxx: g++-14, run_tox_tests: true} + - {ubuntu: 'ubuntu-26.04', python: '3.14', cc: gcc-15, cxx: g++-15, run_tox_tests: true} - {ubuntu: 'ubuntu-26.04', python: '3.14', cc: clang-21, cxx: clang++-21, run_tox_tests: false} env: CC: ${{ matrix.version.cc }} @@ -30,9 +30,9 @@ jobs: CPLEX_URL: ${{ secrets.CPLEX2211_LINUX_URL }} cplex_DIR: /home/runner/lib/ibm/ILOG/CPLEX_Studio2211/cplex CPLEX_LIB: /home/runner/lib/ibm/ILOG/CPLEX_Studio2211/cplex/bin/x86-64_linux/libcplex2211.so - soplex_DIR: /home/runner/lib/soplex-7.1.0 - SOPLEX_LIB: /home/runner/lib/soplex-7.1.0/lib/ - SOPLEX_INCLUDE: /home/runner/lib/soplex-7.1.0/include/ + soplex_DIR: /home/runner/lib/soplex-7.1.2 + SOPLEX_LIB: /home/runner/lib/soplex-7.1.2/lib/ + SOPLEX_INCLUDE: /home/runner/lib/soplex-7.1.2/include/ steps: - name: Clone repository uses: actions/checkout@v3 @@ -71,7 +71,7 @@ jobs: run: | git clone https://github.com/scipopt/soplex.git cd soplex - git checkout release-710 + git checkout release-712 cd .. cmake -S soplex -B build cmake --build build From 86fd97c8cadd615c3b75a799b676d222cf25437a Mon Sep 17 00:00:00 2001 From: Florian Pommerening Date: Thu, 10 Sep 2026 16:31:40 +0200 Subject: [PATCH 3/9] remove 22.04 hack, update versions for testing --- .github/workflows/ubuntu.yml | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index d7cad5db6f..bcbb4721a5 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -47,15 +47,6 @@ jobs: sudo apt-get -y install zlib1g-dev libgmp3-dev ${{ matrix.version.cc }} mkdir /home/runner/lib - # In 22.04 g++-12 is not automatically installed when gcc-12 gets - # installed, so we do it separately. We do not use an unconditional - # install for any value of cxx because there is no separate package for - # clang++. - - name: Install CXX - if: startsWith(matrix.version.cxx, 'g++-') - run: | - sudo apt-get -y install ${{ matrix.version.cxx }} - # Only install CPLEX if its URL/secret is set. - name: Install CPLEX if: ${{ env.CPLEX_URL != 0 }} @@ -112,8 +103,8 @@ jobs: strategy: matrix: version: - - {ubuntu: ubuntu-22.04, python: '3.10'} - - {ubuntu: ubuntu-24.04, python: '3.10'} + - {ubuntu: ubuntu-24.04, python: '3.12'} + - {ubuntu: ubuntu-26.04, python: '3.14'} env: CPLEX_URL: ${{ secrets.CPLEX2211_LINUX_URL }} steps: From a673ad3fc4ca0632edb0d76550e0ad9cb28d3290 Mon Sep 17 00:00:00 2001 From: Florian Pommerening Date: Thu, 10 Sep 2026 17:12:11 +0200 Subject: [PATCH 4/9] replace SoPlex 7.1.0 with 7.1.2 in other places --- BUILD.md | 10 +++++----- README.md | 2 +- misc/releases/templates/_Dockerfile.tpl | 2 +- misc/releases/templates/_Vagrantfile.tpl | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/BUILD.md b/BUILD.md index f897124712..340675c421 100644 --- a/BUILD.md +++ b/BUILD.md @@ -38,15 +38,15 @@ Note that on Windows, setting up the environment variable might require using `/ **Important:** The GNU Multiple Precision library (GMP) is critical for the performance of SoPlex but the build does not complain if it is not present. Make sure that the build uses the library (check the output of CMake for `Found GMP`). -We require at least SoPlex 7.1.0, which can be built from source as follows (adapt the paths if you install a different version or want to use a different location): +We require at least SoPlex 7.1.2, which can be built from source as follows (adapt the paths if you install a different version or want to use a different location): ```bash sudo apt install libgmp3-dev -wget https://github.com/scipopt/soplex/archive/refs/tags/release-710.tar.gz -O - | tar -xz -cmake -S soplex-release-710 -B build +wget https://github.com/scipopt/soplex/archive/refs/tags/release-712.tar.gz -O - | tar -xz +cmake -S soplex-release-712 -B build cmake --build build -export soplex_DIR=/opt/soplex-7.1.0 +export soplex_DIR=/opt/soplex-7.1.2 cmake --install build --prefix $soplex_DIR -rm -rf soplex-release-710 build +rm -rf soplex-release-712 build ``` After installation, permanently set the environment variable `soplex_DIR` to the value you used during the installation. diff --git a/README.md b/README.md index 302ccecd76..9e11439a2c 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ This version of Fast Downward has been tested with the following software versio | macOS 14 | 3.14 | AppleClang 15 | 4.2 | | Windows 10 | 3.9 | Visual Studio Enterprise 2022 (MSVC 19.44) | 3.31 | -We test LP support with CPLEX 22.1.1 and SoPlex 7.1.1. On Ubuntu we +We test LP support with CPLEX 22.1.1 and SoPlex 7.1.2. On Ubuntu we test both CPLEX and SoPlex. On Windows we currently only test CPLEX, and on macOS we do not test LP solvers (yet). diff --git a/misc/releases/templates/_Dockerfile.tpl b/misc/releases/templates/_Dockerfile.tpl index 9bd26f4478..1e399f6749 100644 --- a/misc/releases/templates/_Dockerfile.tpl +++ b/misc/releases/templates/_Dockerfile.tpl @@ -20,7 +20,7 @@ RUN apt-get update && apt-get install --no-install-recommends -y \ # Set up some environment variables. ENV CXX g++ -ENV SOPLEX_REVISION release-711 +ENV SOPLEX_REVISION release-712 ENV soplex_DIR /opt/soplex # Install SoPlex. diff --git a/misc/releases/templates/_Vagrantfile.tpl b/misc/releases/templates/_Vagrantfile.tpl index c0c2003a65..f8a083892b 100644 --- a/misc/releases/templates/_Vagrantfile.tpl +++ b/misc/releases/templates/_Vagrantfile.tpl @@ -56,7 +56,7 @@ Vagrant.configure("2") do |config| export soplex_DIR="/opt/soplex" EOM source /etc/profile.d/downward-soplex.sh - git clone --depth 1 --branch release-711 https://github.com/scipopt/soplex.git soplex + git clone --depth 1 --branch release-712 https://github.com/scipopt/soplex.git soplex cd soplex cmake -DCMAKE_INSTALL_PREFIX="$soplex_DIR" -S . -B build cmake --build build From 999bc777f9faa0e2b74fac407e87e04a3582da08 Mon Sep 17 00:00:00 2001 From: Florian Pommerening Date: Mon, 14 Sep 2026 15:27:55 +0200 Subject: [PATCH 5/9] add gcc-16 and clang-22 --- .github/workflows/ubuntu.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index bcbb4721a5..da4fea4257 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -23,7 +23,9 @@ jobs: - {ubuntu: 'ubuntu-24.04', python: '3.12', cc: gcc-14, cxx: g++-14, run_tox_tests: true} - {ubuntu: 'ubuntu-24.04', python: '3.12', cc: clang-20, cxx: clang++-20, run_tox_tests: false} - {ubuntu: 'ubuntu-26.04', python: '3.14', cc: gcc-15, cxx: g++-15, run_tox_tests: true} + - {ubuntu: 'ubuntu-26.04', python: '3.14', cc: gcc-16, cxx: g++-16, run_tox_tests: true} - {ubuntu: 'ubuntu-26.04', python: '3.14', cc: clang-21, cxx: clang++-21, run_tox_tests: false} + - {ubuntu: 'ubuntu-26.04', python: '3.14', cc: clang-22, cxx: clang++-22, run_tox_tests: false} env: CC: ${{ matrix.version.cc }} CXX: ${{ matrix.version.cxx }} From 6db79f15f14e1fe6f1a949a0520fd41093c2d46b Mon Sep 17 00:00:00 2001 From: Florian Pommerening Date: Mon, 14 Sep 2026 15:44:47 +0200 Subject: [PATCH 6/9] Re-introduce code to install g++ not just gcc. --- .github/workflows/ubuntu.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index da4fea4257..5246caec4b 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -49,6 +49,15 @@ jobs: sudo apt-get -y install zlib1g-dev libgmp3-dev ${{ matrix.version.cc }} mkdir /home/runner/lib + # On Ubuntu, g++-* is not automatically installed when gcc-* gets + # installed, so we do it separately. We do not use an unconditional + # install for any value of cxx because there is no separate package for + # clang++. + - name: Install CXX + if: startsWith(matrix.version.cxx, 'g++-') + run: | + sudo apt-get -y install ${{ matrix.version.cxx }} + # Only install CPLEX if its URL/secret is set. - name: Install CPLEX if: ${{ env.CPLEX_URL != 0 }} From 30c4316c6b72f25ddf89f34ee0f74f560ffca260 Mon Sep 17 00:00:00 2001 From: Florian Pommerening Date: Tue, 15 Sep 2026 17:42:26 +0200 Subject: [PATCH 7/9] Ignore warning. --- src/search/open_lists/epsilon_greedy_open_list.cc | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/search/open_lists/epsilon_greedy_open_list.cc b/src/search/open_lists/epsilon_greedy_open_list.cc index cc000e50cb..9586c954a9 100644 --- a/src/search/open_lists/epsilon_greedy_open_list.cc +++ b/src/search/open_lists/epsilon_greedy_open_list.cc @@ -28,7 +28,21 @@ class EpsilonGreedyOpenList : public OpenList { } bool operator>(const HeapNode &other) const { +/* + g++-16 (and possibly later versions) use (a <=> b) < 0 to compare pairs. + This triggers a spurious zero-as-null-pointer-constant warning which we + ignore here. +*/ +#ifdef __GNUG__ +#pragma GCC diagnostic push +#if (__GNUG__ >= 15) +#pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant" +#endif +#endif return make_pair(h, id) > make_pair(other.h, other.id); +#ifdef __GNUG__ +#pragma GCC diagnostic pop +#endif } }; From 04ce715d99e1b76b6ad4a614b55e430d9948a361 Mon Sep 17 00:00:00 2001 From: Florian Pommerening Date: Wed, 16 Sep 2026 11:39:59 +0200 Subject: [PATCH 8/9] update README with new compilers --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9e11439a2c..5690bf2abc 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ This version of Fast Downward has been tested with the following software versio | OS | Python | C++ compiler | CMake | | ------------ | ------ | ------------------------------------------ | ----- | -| Ubuntu 26.04 | 3.14 | GCC 15, Clang 21 | 4.2 | +| Ubuntu 26.04 | 3.14 | GCC 15, GCC16, Clang 21, Clang 22 | 4.2 | | Ubuntu 24.04 | 3.12 | GCC 14, Clang 20 | 3.31 | | macOS 15 | 3.14 | AppleClang 17 | 4.2 | | macOS 14 | 3.14 | AppleClang 15 | 4.2 | From 5f29c7b21267013a6da91ebde2c789cf2250a419 Mon Sep 17 00:00:00 2001 From: Florian Pommerening Date: Thu, 17 Sep 2026 10:50:47 +0200 Subject: [PATCH 9/9] code review --- .github/workflows/ubuntu.yml | 2 +- README.md | 2 +- src/search/open_lists/epsilon_greedy_open_list.cc | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 5246caec4b..0223253783 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -22,7 +22,7 @@ jobs: version: - {ubuntu: 'ubuntu-24.04', python: '3.12', cc: gcc-14, cxx: g++-14, run_tox_tests: true} - {ubuntu: 'ubuntu-24.04', python: '3.12', cc: clang-20, cxx: clang++-20, run_tox_tests: false} - - {ubuntu: 'ubuntu-26.04', python: '3.14', cc: gcc-15, cxx: g++-15, run_tox_tests: true} + - {ubuntu: 'ubuntu-26.04', python: '3.14', cc: gcc-15, cxx: g++-15, run_tox_tests: false} - {ubuntu: 'ubuntu-26.04', python: '3.14', cc: gcc-16, cxx: g++-16, run_tox_tests: true} - {ubuntu: 'ubuntu-26.04', python: '3.14', cc: clang-21, cxx: clang++-21, run_tox_tests: false} - {ubuntu: 'ubuntu-26.04', python: '3.14', cc: clang-22, cxx: clang++-22, run_tox_tests: false} diff --git a/README.md b/README.md index 5690bf2abc..48be0d95ee 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ This version of Fast Downward has been tested with the following software versio | OS | Python | C++ compiler | CMake | | ------------ | ------ | ------------------------------------------ | ----- | -| Ubuntu 26.04 | 3.14 | GCC 15, GCC16, Clang 21, Clang 22 | 4.2 | +| Ubuntu 26.04 | 3.14 | GCC 15, GCC 16, Clang 21, Clang 22 | 4.2 | | Ubuntu 24.04 | 3.12 | GCC 14, Clang 20 | 3.31 | | macOS 15 | 3.14 | AppleClang 17 | 4.2 | | macOS 14 | 3.14 | AppleClang 15 | 4.2 | diff --git a/src/search/open_lists/epsilon_greedy_open_list.cc b/src/search/open_lists/epsilon_greedy_open_list.cc index 9586c954a9..14ac762dee 100644 --- a/src/search/open_lists/epsilon_greedy_open_list.cc +++ b/src/search/open_lists/epsilon_greedy_open_list.cc @@ -30,7 +30,7 @@ class EpsilonGreedyOpenList : public OpenList { bool operator>(const HeapNode &other) const { /* g++-16 (and possibly later versions) use (a <=> b) < 0 to compare pairs. - This triggers a spurious zero-as-null-pointer-constant warning which we + This triggers a spurious zero-as-null-pointer-constant warning, which we ignore here. */ #ifdef __GNUG__