diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index f3a5d9e668..0223253783 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -20,23 +20,21 @@ 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++-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} env: CC: ${{ matrix.version.cc }} CXX: ${{ matrix.version.cxx }} 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 @@ -51,7 +49,7 @@ 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 + # 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++. @@ -75,7 +73,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 @@ -116,8 +114,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: 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 2047febb12..48be0d95ee 100644 --- a/README.md +++ b/README.md @@ -37,13 +37,13 @@ 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, 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 | | 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 diff --git a/src/search/open_lists/epsilon_greedy_open_list.cc b/src/search/open_lists/epsilon_greedy_open_list.cc index cc000e50cb..14ac762dee 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 } };