From ee6a2cb437840d2270c4bbedf2a6a6b54882c46b Mon Sep 17 00:00:00 2001 From: Dave Hendler Date: Fri, 30 Oct 2026 11:37:11 -0700 Subject: [PATCH 1/7] [github] Update compilers to what is available on ubuntu-latest --- .github/workflows/build.yml | 16 ++++++++-------- .github/workflows/generate_files.yml | 2 +- .github/workflows/main.yml | 4 ++-- .github/workflows/ubuntu_test.yml | 4 ++-- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 68b75b4026..49d4b2ef3f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,13 +13,13 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - compiler: [gcc-12, gcc-14] + compiler: [gcc-13, gcc-15] cppVersion: [20] # TODO (FOREVER) make c++23 happy include: - - compiler: gcc-12 - cxx: g++-12 - - compiler: gcc-14 - cxx: g++-14 + - compiler: gcc-13 + cxx: g++-13 + - compiler: gcc-15 + cxx: g++-15 steps: - uses: actions/checkout@v6 @@ -70,11 +70,11 @@ jobs: strategy: matrix: cppVersion: [20] # TODO (FOREVER) make c++23 happy - compiler: [clang++-16, clang++-18] + compiler: [clang++-20, clang++-22] include: - - compiler: clang++-16 + - compiler: clang++-20 enable_file_prefix_map: true - - compiler: clang++-18 + - compiler: clang++-22 enable_file_prefix_map: true steps: diff --git a/.github/workflows/generate_files.yml b/.github/workflows/generate_files.yml index 3c4d6b646b..6ead20f738 100644 --- a/.github/workflows/generate_files.yml +++ b/.github/workflows/generate_files.yml @@ -16,7 +16,7 @@ jobs: ActionPriorityLists profiles .git - key: ubuntu-clang++-16-for_run-${{ github.sha }}-cpp-20 + key: ubuntu-clang++-20-for_run-${{ github.sha }}-cpp-20 - uses: actions/checkout@v6 diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6640e41a4d..1e380da64b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -172,7 +172,7 @@ jobs: #if: github.base_ref == github.event.repository.default_branch || github.ref_name == github.event.repository.default_branch uses: ./.github/workflows/spec_test.yml with: - cache-key: ubuntu-clang++-16-for_run-${{ github.sha }}-cpp-20 + cache-key: ubuntu-clang++-20-for_run-${{ github.sha }}-cpp-20 is-ptr: false spec-matrix: ${{ needs.spec-test-selection.outputs.spec-matrix }} @@ -183,7 +183,7 @@ jobs: #if: github.base_ref == github.event.repository.default_branch || github.ref_name == github.event.repository.default_branch uses: ./.github/workflows/spec_test.yml with: - cache-key: ubuntu-clang++-16-for_run-${{ github.sha }}-cpp-20 + cache-key: ubuntu-clang++-20-for_run-${{ github.sha }}-cpp-20 is-ptr: true spec-matrix: ${{ needs.spec-test-selection.outputs.spec-matrix }} diff --git a/.github/workflows/ubuntu_test.yml b/.github/workflows/ubuntu_test.yml index a5ae010f0f..a43497f87d 100644 --- a/.github/workflows/ubuntu_test.yml +++ b/.github/workflows/ubuntu_test.yml @@ -19,7 +19,7 @@ jobs: fail-fast: false matrix: cppVersion: [20] # TODO (FOREVER) make c++23 happy - compiler: [clang++-16, clang++-18, gcc-12, gcc-14] + compiler: [clang++-20, clang++-22, gcc-13, gcc-15] steps: - uses: actions/cache@v5 @@ -41,7 +41,7 @@ jobs: run: ${{ runner.workspace }}/b/ninja/simc $SIMC_ARGS $SIMC_PROFILE iterations=10 fight_style=DungeonSlice allow_experimental_specializations=1 cleanup_threads=1 - name: Clear Cache - if: ( matrix.compiler != 'clang++-16' || matrix.cppVersion != '20' ) && github.event_name == 'push' + if: ( matrix.compiler != 'clang++-20' || matrix.cppVersion != '20' ) && github.event_name == 'push' env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: gh cache delete ${{ env.CACHE_KEY }} From f96da60966efa3620850dd61cd2c8d972b818be0 Mon Sep 17 00:00:00 2001 From: Dave Hendler Date: Fri, 30 Oct 2026 20:31:18 -0700 Subject: [PATCH 2/7] [github] Re-add gcc12 and clang16 on sligtly older, fixed ubuntu versions --- .github/workflows/build.yml | 22 ++++++++++++++++------ .github/workflows/ubuntu_test.yml | 13 ++++++++++--- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 49d4b2ef3f..6a5809b957 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,17 +9,22 @@ on: jobs: ubuntu-gcc-build: - name: ubuntu-${{ matrix.compiler }}-cpp${{ matrix.cppVersion }}-build - runs-on: ubuntu-latest + name: ${{ matrix.os }}-${{ matrix.compiler }}-cpp${{ matrix.cppVersion }}-build + runs-on: ${{ matrix.os }} strategy: matrix: - compiler: [gcc-13, gcc-15] + compiler: [gcc-12, gcc-13, gcc-15] cppVersion: [20] # TODO (FOREVER) make c++23 happy include: + - compiler: gcc-12 + cxx: g++-12 + os: ubuntu-24.04 - compiler: gcc-13 cxx: g++-13 + os: ubuntu-latest - compiler: gcc-15 cxx: g++-15 + os: ubuntu-latest steps: - uses: actions/checkout@v6 @@ -65,17 +70,22 @@ jobs: key: ubuntu-${{ matrix.compiler }}-for_run-${{ github.sha }}-cpp-${{ matrix.cppVersion }} ubuntu-clang-build: - name: ubuntu-build-${{ matrix.compiler }}-C++${{ matrix.cppVersion }} - runs-on: ubuntu-latest + name: ${{ matrix.os }}-${{ matrix.compiler }}-C++${{ matrix.cppVersion }}-build + runs-on: ${{ matrix.os }} strategy: matrix: cppVersion: [20] # TODO (FOREVER) make c++23 happy - compiler: [clang++-20, clang++-22] + compiler: [clang++-16, clang++-20, clang++-22] include: + - compiler: clang++-16 + enable_file_prefix_map: true + os: ubuntu-24.04 - compiler: clang++-20 enable_file_prefix_map: true + os: ubuntu-latest - compiler: clang++-22 enable_file_prefix_map: true + os: ubuntu-latest steps: - uses: actions/checkout@v6 diff --git a/.github/workflows/ubuntu_test.yml b/.github/workflows/ubuntu_test.yml index a43497f87d..6a20dc07de 100644 --- a/.github/workflows/ubuntu_test.yml +++ b/.github/workflows/ubuntu_test.yml @@ -9,8 +9,8 @@ env: jobs: ubuntu-test: - name: ubuntu-${{ matrix.compiler }}-cpp-${{ matrix.cppVersion }}-${{ matrix.type }} - runs-on: ubuntu-latest + name: ${{ matrix.os }}-${{ matrix.compiler }}-cpp-${{ matrix.cppVersion }}-${{ matrix.type }} + runs-on: ${{ matrix.os }} env: CACHE_KEY: ubuntu-${{ matrix.compiler }}-for_run-${{ github.sha }}-cpp-${{ matrix.cppVersion }} UBSAN_OPTIONS: print_stacktrace=1 @@ -19,7 +19,14 @@ jobs: fail-fast: false matrix: cppVersion: [20] # TODO (FOREVER) make c++23 happy - compiler: [clang++-20, clang++-22, gcc-13, gcc-15] + compiler: [clang++-16, clang++-20, clang++-22, gcc-12, gcc-13, gcc-15] + include: + - { compiler: clang++-16, os: ubuntu-24.04 } + - { compiler: gcc-12, os: ubuntu-24.04 } + - { compiler: clang++-20, os: ubuntu-latest } + - { compiler: clang++-22, os: ubuntu-latest } + - { compiler: gcc-13, os: ubuntu-latest } + - { compiler: gcc-15, os: ubuntu-latest } steps: - uses: actions/cache@v5 From 0a138d169957bda499629d2ee4ef196d772cbb6d Mon Sep 17 00:00:00 2001 From: Dave Hendler Date: Fri, 30 Oct 2026 20:39:26 -0700 Subject: [PATCH 3/7] [github] Add c++23 back in to see how it does on newew compilers --- .github/workflows/build.yml | 4 ++-- .github/workflows/ubuntu_test.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6a5809b957..6bbb10b8c6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -14,7 +14,7 @@ jobs: strategy: matrix: compiler: [gcc-12, gcc-13, gcc-15] - cppVersion: [20] # TODO (FOREVER) make c++23 happy + cppVersion: [20, 23] # TODO (FOREVER) make c++23 happy include: - compiler: gcc-12 cxx: g++-12 @@ -74,7 +74,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - cppVersion: [20] # TODO (FOREVER) make c++23 happy + cppVersion: [20, 23] # TODO (FOREVER) make c++23 happy compiler: [clang++-16, clang++-20, clang++-22] include: - compiler: clang++-16 diff --git a/.github/workflows/ubuntu_test.yml b/.github/workflows/ubuntu_test.yml index 6a20dc07de..6797dcd0ef 100644 --- a/.github/workflows/ubuntu_test.yml +++ b/.github/workflows/ubuntu_test.yml @@ -18,7 +18,7 @@ jobs: strategy: fail-fast: false matrix: - cppVersion: [20] # TODO (FOREVER) make c++23 happy + cppVersion: [20, 23] # TODO (FOREVER) make c++23 happy compiler: [clang++-16, clang++-20, clang++-22, gcc-12, gcc-13, gcc-15] include: - { compiler: clang++-16, os: ubuntu-24.04 } From d6de4fc4135563c668507b5fe079313b072c613a Mon Sep 17 00:00:00 2001 From: Dave Hendler Date: Fri, 30 Oct 2026 20:48:53 -0700 Subject: [PATCH 4/7] [github] Don't fail fast so we can see if newer compilers work or not --- .github/workflows/build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6bbb10b8c6..27f17777f9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,6 +12,7 @@ jobs: name: ${{ matrix.os }}-${{ matrix.compiler }}-cpp${{ matrix.cppVersion }}-build runs-on: ${{ matrix.os }} strategy: + fail-fast: false matrix: compiler: [gcc-12, gcc-13, gcc-15] cppVersion: [20, 23] # TODO (FOREVER) make c++23 happy @@ -73,6 +74,7 @@ jobs: name: ${{ matrix.os }}-${{ matrix.compiler }}-C++${{ matrix.cppVersion }}-build runs-on: ${{ matrix.os }} strategy: + fail-fast: false matrix: cppVersion: [20, 23] # TODO (FOREVER) make c++23 happy compiler: [clang++-16, clang++-20, clang++-22] From e4788dab088b2232ab41a0ad3f340ba24c1d5f27 Mon Sep 17 00:00:00 2001 From: Dave Hendler Date: Fri, 30 Oct 2026 20:58:43 -0700 Subject: [PATCH 5/7] Fix some c++23 errors --- engine/lib/tcb/span.hpp | 1 + engine/sim/profileset_control.cpp | 2 ++ engine/sim/profileset_control.hpp | 2 +- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/engine/lib/tcb/span.hpp b/engine/lib/tcb/span.hpp index fdc3a988a4..2bbbc16b1a 100644 --- a/engine/lib/tcb/span.hpp +++ b/engine/lib/tcb/span.hpp @@ -15,6 +15,7 @@ This is an implementation of C++20's std::span #include #include #include +#include #include #ifndef TCB_SPAN_NO_EXCEPTIONS diff --git a/engine/sim/profileset_control.cpp b/engine/sim/profileset_control.cpp index 47b45bb082..0806ccd695 100644 --- a/engine/sim/profileset_control.cpp +++ b/engine/sim/profileset_control.cpp @@ -157,6 +157,8 @@ profileset_controller_t::profileset_controller_t( sim_t* sim, unsigned int id ) assert( sim && sim->parent ); } +profileset_controller_t::~profileset_controller_t() = default; + const std::string profileset_controller_t::message( call_point_e call_point ) { std::string msg = fmt::format( "Profileset {} was canceled by Profileset Controller {} after {}", diff --git a/engine/sim/profileset_control.hpp b/engine/sim/profileset_control.hpp index 008d914053..10be916814 100644 --- a/engine/sim/profileset_control.hpp +++ b/engine/sim/profileset_control.hpp @@ -95,7 +95,7 @@ struct profileset_controller_t : private noncopyable std::vector> options; profileset_controller_t( sim_t*, unsigned int ); - virtual ~profileset_controller_t() = default; + virtual ~profileset_controller_t(); const std::string message( call_point_e ); void add_option( std::unique_ptr&& ); From 2b082fdc14d4ee60a1d9ee35b2e1d9691d95a7dc Mon Sep 17 00:00:00 2001 From: Dave Hendler Date: Sun, 1 Nov 2026 07:02:19 -0800 Subject: [PATCH 6/7] [github] Skip c++23 just for clang . 16 --- .github/workflows/build.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 27f17777f9..37bcd1c210 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -78,6 +78,10 @@ jobs: matrix: cppVersion: [20, 23] # TODO (FOREVER) make c++23 happy compiler: [clang++-16, clang++-20, clang++-22] + exclude: + # Clang 16 is not happy with c++23 + - compiler: clang++-16 + cppVersion: 23 include: - compiler: clang++-16 enable_file_prefix_map: true From 3793aefd01b133a0fa306404f31fb4e26cbc31b2 Mon Sep 17 00:00:00 2001 From: Dave Hendler Date: Sun, 1 Nov 2026 07:07:07 -0800 Subject: [PATCH 7/7] [github] Also skip in the ubuntu_test.yml --- .github/workflows/ubuntu_test.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/ubuntu_test.yml b/.github/workflows/ubuntu_test.yml index 6797dcd0ef..29d951b717 100644 --- a/.github/workflows/ubuntu_test.yml +++ b/.github/workflows/ubuntu_test.yml @@ -20,6 +20,10 @@ jobs: matrix: cppVersion: [20, 23] # TODO (FOREVER) make c++23 happy compiler: [clang++-16, clang++-20, clang++-22, gcc-12, gcc-13, gcc-15] + exclude: + # clang 16 is not happy with c++23 + - compiler: clang++-16 + cppVersion: 23 include: - { compiler: clang++-16, os: ubuntu-24.04 } - { compiler: gcc-12, os: ubuntu-24.04 }