From bd10b26197d5cb737a6058ed8c7264cb215ce398 Mon Sep 17 00:00:00 2001 From: Dave Hendler Date: Sun, 1 Nov 2026 16:07:42 -0600 Subject: [PATCH 1/7] [github] Update compilers to what is available on ubuntu-latest (#40) * [github] Update compilers to what is available on ubuntu-latest * [github] Re-add gcc12 and clang16 on sligtly older, fixed ubuntu versions * [github] Add c++23 back in to see how it does on newew compilers * [github] Don't fail fast so we can see if newer compilers work or not * Fix some c++23 errors * [github] Skip c++23 just for clang . 16 * [github] Also skip in the ubuntu_test.yml --- .github/workflows/build.yml | 38 ++++++++++++++++++++-------- .github/workflows/generate_files.yml | 2 +- .github/workflows/main.yml | 4 +-- .github/workflows/ubuntu_test.yml | 21 +++++++++++---- engine/lib/tcb/span.hpp | 1 + engine/sim/profileset_control.cpp | 2 ++ engine/sim/profileset_control.hpp | 2 +- 7 files changed, 50 insertions(+), 20 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2c9d4f2e25f..685ea9bd088 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,17 +9,23 @@ 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: + fail-fast: false matrix: - compiler: [gcc-12, gcc-14] - cppVersion: [17, 20] + compiler: [gcc-12, gcc-13, gcc-15] + cppVersion: [20, 23] include: - compiler: gcc-12 cxx: g++-12 - - compiler: gcc-14 - cxx: g++-14 + 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 +71,27 @@ 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: + fail-fast: false matrix: - cppVersion: [17, 20] - compiler: [clang++-16, clang++-18] + cppVersion: [20, 23] + 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 - - compiler: clang++-18 + 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/generate_files.yml b/.github/workflows/generate_files.yml index fac15b3bbb6..6c46da18960 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-17 + 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 701009dcff4..36c11457f11 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -202,7 +202,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-17 + cache-key: ubuntu-clang++-20-for_run-${{ github.sha }}-cpp-20 is-ptr: false spec-matrix: ${{ needs.spec-test-selection.outputs.spec-matrix }} @@ -211,7 +211,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-17 + 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 f98aecb8475..6677607d88a 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 @@ -18,8 +18,19 @@ jobs: strategy: fail-fast: false matrix: - cppVersion: [17, 20] - compiler: [clang++-16, clang++-18, gcc-12, gcc-14] + cppVersion: [20, 23] + 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 } + - { 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 @@ -41,7 +52,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 != '17' ) && 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 }} diff --git a/engine/lib/tcb/span.hpp b/engine/lib/tcb/span.hpp index dcd73e6230b..d3733f5b8d8 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 47b45bb0827..0806ccd695c 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 008d9140537..10be9168143 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 20cc73683b22dda422a133c722d7532538841fe1 Mon Sep 17 00:00:00 2001 From: Dave Hendler Date: Sun, 1 Nov 2026 14:21:45 -0800 Subject: [PATCH 2/7] Default to C++20 --- CMakeLists.txt | 2 +- engine/Makefile | 6 +++--- simulationcraft.pri | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8662ba4b15e..632f904eb42 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,7 @@ option(SC_USE_FLAT_INSTALL "Install files into a flat folder structure" ${WIN32} option(SC_EVENT_QUEUE_DEBUG "Enable Event Queue Debug Info" OFF) -set(CMAKE_CXX_STANDARD 17 CACHE STRING "C++ standard to conform to") +set(CMAKE_CXX_STANDARD 20 CACHE STRING "C++ standard to conform to") set(CMAKE_CXX_STANDARD_REQUIRED YES) set(CMAKE_CXX_EXTENSIONS OFF) diff --git a/engine/Makefile b/engine/Makefile index 648f32e9df1..81ed82f4235 100644 --- a/engine/Makefile +++ b/engine/Makefile @@ -57,7 +57,7 @@ endif MKDIR = mkdir CXX = c++ -CPP_FLAGS = -Wall -Wextra -W -I. -I./include -I./lib -DSC_SHARED_DATA=\"$(SHARED_DATA)\" --std=c++17 -O3 -MMD -MP \ +CPP_FLAGS = -Wall -Wextra -W -I. -I./include -I./lib -DSC_SHARED_DATA=\"$(SHARED_DATA)\" --std=c++20 -O3 -MMD -MP \ -Wpedantic \ -Wcast-qual \ -Wconversion-null @@ -109,8 +109,8 @@ endif ifneq (${NO_DEBUG},) CPP_FLAGS += -DNDEBUG endif -ifneq (${C++20},) - CPP_FLAGS += --std=c++20 +ifneq (${C++23},) + CPP_FLAGS += --std=c++23 endif ifneq (${LTO},) OPTS_INTERNAL += -flto diff --git a/simulationcraft.pri b/simulationcraft.pri index c73b4a9948d..cf740dea368 100644 --- a/simulationcraft.pri +++ b/simulationcraft.pri @@ -6,7 +6,7 @@ INCLUDEPATH += ../engine/include INCLUDEPATH += ../engine/lib DEPENDPATH = ../engine VPATH = .. -CONFIG += c++17 +CONFIG += c++20 CONFIG(debug, debug|release): OBJECTS_DIR = build/debug CONFIG(release, debug|release): OBJECTS_DIR = build/release From 6fad94ae9c0a3d4b9622319fc22cdd8cf9e8ac5c Mon Sep 17 00:00:00 2001 From: Dave Hendler Date: Sun, 1 Nov 2026 14:50:44 -0800 Subject: [PATCH 3/7] Update min compiler settings, remove old vs config --- engine/config.hpp | 25 +++++++------------------ simc_vs2017.sln | 37 ------------------------------------- 2 files changed, 7 insertions(+), 55 deletions(-) delete mode 100644 simc_vs2017.sln diff --git a/engine/config.hpp b/engine/config.hpp index f4c7c614f62..5f37a445541 100644 --- a/engine/config.hpp +++ b/engine/config.hpp @@ -59,28 +59,17 @@ // Compiler Minimal Limits // ========================================================================== - -// Last updated 2023-09: Support gcc7 / clang 5 / MSVS 19.14 which have (~full) C++17 support -// Ubuntu LTS EOL is +5 years, Debian has ~+3year EOL, +5 years with separate LTS support -// Debian 10 (Buster) (Release 2019-07): gcc 8.3 clang 7 -// Ubuntu 20.04: gcc 9.3 clang 10 -// Debian 11 (Bullseye) (Release 2021-08): gcc 10.2 clang 11 -// Ubuntu 22.04: gcc 11.2 clang 14 -// Debian 12 (Bookworm) (Release 2023-06): gcc 12.2 clang 14 -// -// CI setup currently only supports Ubuntu 20.04+, which has clang 7 as the lowest installable version - -// so clang 5/6 builds are not actually tested in CI. -#if defined( SC_CLANG ) && SC_CLANG < 50000 -# error "clang++ below version 5 not supported" +// Last updated 2026-10: Support gcc10 / clang 14 / MSVS 16.10 (MSVC 19.29) which have (~full) C++20 support +#if defined( SC_CLANG ) && SC_CLANG < 140000 +# error "clang++ below version 14 not supported" #endif -#if defined( SC_GCC ) && SC_GCC < 70000 -# error "g++ below version 7 not supported" +#if defined( SC_GCC ) && SC_GCC < 100000 +# error "g++ below version 10 not supported" #endif -#if defined( SC_VS ) && SC_VS < 1914 -# error "Visual Studio 2017 below version 15.7 not supported" +#if defined( SC_VS ) && SC_VS < 1929 +# error "Visual Studio 2019 below version 16.10 not supported" #endif - // ========================================================================== // General Macros/Defines // ========================================================================== diff --git a/simc_vs2017.sln b/simc_vs2017.sln deleted file mode 100644 index c7acaa3324a..00000000000 --- a/simc_vs2017.sln +++ /dev/null @@ -1,37 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26730.16 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimcGUI_qt5.9.1", "vs\simcqt_vs2017.vcxproj", "{A4EECBB3-65A3-40BD-AD41-ED02BF5A3A97}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "simc", "vs\simc_vs2017.vcxproj", "{D963926C-4A85-4600-8626-51FA12FDF5C1}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug-WebEngine|x64 = Debug-WebEngine|x64 - WebEngine|x64 = WebEngine|x64 - WebEngine-NoNetworking|x64 = WebEngine-NoNetworking|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {A4EECBB3-65A3-40BD-AD41-ED02BF5A3A97}.Debug-WebEngine|x64.ActiveCfg = Debug-WebEngine|x64 - {A4EECBB3-65A3-40BD-AD41-ED02BF5A3A97}.Debug-WebEngine|x64.Build.0 = Debug-WebEngine|x64 - {A4EECBB3-65A3-40BD-AD41-ED02BF5A3A97}.WebEngine|x64.ActiveCfg = WebEngine|x64 - {A4EECBB3-65A3-40BD-AD41-ED02BF5A3A97}.WebEngine|x64.Build.0 = WebEngine|x64 - {A4EECBB3-65A3-40BD-AD41-ED02BF5A3A97}.WebEngine-NoNetworking|x64.ActiveCfg = WebEngine-NoNetworking|x64 - {A4EECBB3-65A3-40BD-AD41-ED02BF5A3A97}.WebEngine-NoNetworking|x64.Build.0 = WebEngine-NoNetworking|x64 - {D963926C-4A85-4600-8626-51FA12FDF5C1}.Debug-WebEngine|x64.ActiveCfg = Debug-WebEngine|x64 - {D963926C-4A85-4600-8626-51FA12FDF5C1}.Debug-WebEngine|x64.Build.0 = Debug-WebEngine|x64 - {D963926C-4A85-4600-8626-51FA12FDF5C1}.WebEngine|x64.ActiveCfg = WebEngine|x64 - {D963926C-4A85-4600-8626-51FA12FDF5C1}.WebEngine|x64.Build.0 = WebEngine|x64 - {D963926C-4A85-4600-8626-51FA12FDF5C1}.WebEngine-NoNetworking|x64.ActiveCfg = WebEngine-NoNetworking|x64 - {D963926C-4A85-4600-8626-51FA12FDF5C1}.WebEngine-NoNetworking|x64.Build.0 = WebEngine-NoNetworking|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - Qt5Version = $(DefaultQtVersion) - SolutionGuid = {DF28067B-715F-4BBD-A6AF-0F4DEA75718A} - EndGlobalSection -EndGlobal From 368bbf837ccd9a53b97cd3392d2ebf53d15f080b Mon Sep 17 00:00:00 2001 From: Dave Hendler Date: Sun, 1 Nov 2026 14:59:17 -0800 Subject: [PATCH 4/7] Remove old vs2017 files --- vs/Qt_vs2017.props | 7 - vs/simc_vs2017.vcxproj | 211 ------------------------------ vs/simcqt_vs2017.vcxproj | 272 --------------------------------------- 3 files changed, 490 deletions(-) delete mode 100644 vs/Qt_vs2017.props delete mode 100644 vs/simc_vs2017.vcxproj delete mode 100644 vs/simcqt_vs2017.vcxproj diff --git a/vs/Qt_vs2017.props b/vs/Qt_vs2017.props deleted file mode 100644 index 070ee4f7792..00000000000 --- a/vs/Qt_vs2017.props +++ /dev/null @@ -1,7 +0,0 @@ - - - - - C:\Qt\Qt5.12.9\5.12.9\msvc2017_64 - - \ No newline at end of file diff --git a/vs/simc_vs2017.vcxproj b/vs/simc_vs2017.vcxproj deleted file mode 100644 index 2e5d2ccc039..00000000000 --- a/vs/simc_vs2017.vcxproj +++ /dev/null @@ -1,211 +0,0 @@ - - - - - Debug-WebEngine - x64 - - - WebEngine-NoNetworking - x64 - - - WebEngine-PGO - x64 - - - WebEngine - x64 - - - - {D963926C-4A85-4600-8626-51FA12FDF5C1} - simc - Win32Proj - simc - 10.0.16299.0 - x64 - - - - Application - Unicode - true - v141 - - - Application - Unicode - true - v141 - - - Application - Unicode - PGUpdate - v141 - - - Application - Unicode - v141 - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - true - AllRules.ruleset - - - AllRules.ruleset - AllRules.ruleset - AllRules.ruleset - - - - - - - - - false - $(ProjectName) - $(SolutionDir)\$(PlatformShortName)\$(Configuration)\ - - - false - $(ProjectName) - false - $(SolutionDir)\$(PlatformShortName)\$(Configuration)\ - - - false - $(ProjectName) - false - $(SolutionDir)\$(PlatformShortName)\$(Configuration)\ - - - false - $(ProjectName) - false - $(SolutionDir)\ - - - - Disabled - SC_DEFAULT_APIKEY="$(SC_DEFAULT_APIKEY)";WIN32;_DEBUG;_CONSOLE;WINDOWS;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebug - Level3 - ProgramDatabase - 4005;4996;%(DisableSpecificWarnings) - $(ProjectDir)..\engine;$(ProjectDir)..\engine/util;%(AdditionalIncludeDirectories) - true - false - false - false - Precise - true - true - true - EditAndContinue - true - /bigobj /utf-8 %(AdditionalOptions) - stdcpp17 - - - true - Console - false - true - true - crypt32.lib;wininet.lib;%(AdditionalDependencies) - - - - - /w34263 /w34264 /w34265 /w34266 %(AdditionalOptions) - Full - true - Speed - SC_DEFAULT_APIKEY="$(SC_DEFAULT_APIKEY)";WIN32;NDEBUG;_NO_DEBUG;_CONSOLE;WINDOWS;%(PreprocessorDefinitions) - MultiThreaded - false - true - Level3 - ProgramDatabase - 5030;4005;4996;6011;6386;6246;6313;6102;6330;%(DisableSpecificWarnings) - true - true - false - true - $(ProjectDir)..\engine;$(ProjectDir)..\engine/util;%(AdditionalIncludeDirectories) - Precise - true - AnySuitable - false - true - stdcpp17 - - - false - Console - true - true - false - true - UseLinkTimeCodeGeneration - $(SolutionDir)\$(PlatformShortName)\$(Configuration)\simc.pgd - crypt32.lib;wininet.lib;%(AdditionalDependencies) - - - - - /w34263 /w34264 /w34265 /w34266 %(AdditionalOptions) - Full - true - Speed - SC_DEFAULT_APIKEY="$(SC_DEFAULT_APIKEY)";SC_NO_NETWORKING;WIN32;NDEBUG;_NO_DEBUG;_CONSOLE;WINDOWS;%(PreprocessorDefinitions) - MultiThreaded - false - true - Level3 - ProgramDatabase - 5030;4005;4996;6011;6386;6246;6313;6102;6330;%(DisableSpecificWarnings) - true - true - false - true - $(ProjectDir)..\engine;$(ProjectDir)..\engine/util;%(AdditionalIncludeDirectories) - Precise - true - AnySuitable - false - true - stdcpp17 - - - false - Console - true - true - false - true - UseLinkTimeCodeGeneration - $(SolutionDir)\$(PlatformShortName)\$(Configuration)\simc.pgd - - - - - - - - diff --git a/vs/simcqt_vs2017.vcxproj b/vs/simcqt_vs2017.vcxproj deleted file mode 100644 index 8496c2b106d..00000000000 --- a/vs/simcqt_vs2017.vcxproj +++ /dev/null @@ -1,272 +0,0 @@ - - - - - Debug-WebEngine - x64 - - - WebEngine-NoNetworking - x64 - - - WebEngine-PGO - x64 - - - WebEngine - x64 - - - - {A4EECBB3-65A3-40BD-AD41-ED02BF5A3A97} - simcqt12 - Qt5VSv5.9.1 - SimcGUI_qt5.9.1 - _NO_DEBUG_HEAP=1 - WindowsLocalDebugger - 10.0.16299.0 - x64 - - - - Application - Unicode - true - v141 - - - Application - Unicode - true - v141 - - - Application - Unicode - PGUpdate - v141 - - - Application - false - Unicode - v141 - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - true - false - false - false - false - false - false - SimulationCraft - - - SimulationCraft - int_gui\$(Platform)\$(Configuration)\ - $(SolutionDir)\$(PlatformShortName)\$(Configuration)\ - AllRules.ruleset - false - - - SimulationCraft - int_gui\$(Platform)\$(Configuration)\ - $(SolutionDir)\$(PlatformShortName)\$(Configuration)\ - AllRules.ruleset - false - - - SimulationCraft - int_gui\$(Platform)\$(Configuration)\ - $(SolutionDir)\ - AllRules.ruleset - false - - - int_gui\$(Platform)\$(Configuration)\ - $(SolutionDir)\$(PlatformShortName)\$(Configuration)\ - AllRules.ruleset - - - - $(ProjectDir)../qt;%(AdditionalIncludeDirectories) - stdcpp17 - - - - - $(QTDIR_x64) - - - - 0 - Unsigned - None - - - Disabled - $(QTDIR)\include\QtWebEngineCore;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtWebEngineWidgets;$(QTDIR)\include\QtWebEngine;$(QTDIR)\include;$(QTDIR)\include\ActiveQt;$(QTDIR)\include\QtANGLE;$(QTDIR)\mkspecs\default;$(SolutionDir);$(SolutionDir)engine;$(SolutionDir)engine\util;%(AdditionalIncludeDirectories) - SC_DEFAULT_APIKEY="$(SC_DEFAULT_APIKEY)";_DEBUG;_WINDOWS;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;Q_OS_WIN;QT_DLL;QT_WEBENGINE_LIB;QT_GUI_LIB;QT_CORE_LIB;QT_THREAD_SUPPORT;QT_VERSION_5;%(PreprocessorDefinitions) - false - false - Sync - MultiThreadedDebugDLL - false - false - true - Use - simulationcraft.hpp - $(IntDir) - $(IntDir) - Level3 - true - ProgramDatabase - 4005;4996;%(DisableSpecificWarnings) - false - NotSet - Precise - false - .\ - true - EnableFastChecks - true - true - - - _WINDOWS;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;Q_OS_WIN;QT_DLL;QT_WEBENGINE_LIB;QT_GUI_LIB;QT_CORE_LIB;QT_THREAD_SUPPORT;_DEBUG;%(PreprocessorDefinitions) - - - qtmaind.lib;wininet.lib;crypt32.lib;Qt5WebEngined.lib;Qt5Networkd.lib;Qt5Guid.lib;Qt5Cored.lib;Qt5Widgetsd.lib;Qt5WebEngineWidgetsd.lib;(AdditionalDependencies) - true - $(QTDIR)\lib;%(AdditionalLibraryDirectories) - true - Windows - - - true - - - - - 0 - Unsigned - None - - - Full - $(QTDIR)\include\QtWebEngineCore;$(QTDIR)\include\QtWebEngineCore;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtWebEngineWidgets;$(QTDIR)\include\QtWebEngine;$(QTDIR)\include;$(QTDIR)\include\ActiveQt;$(QTDIR)\include\QtANGLE;$(QTDIR)\mkspecs\default;$(SolutionDir);$(SolutionDir)vs;$(SolutionDir)engine;$(SolutionDir)engine/util;%(AdditionalIncludeDirectories);$(QTDIR)\include\QtWebEngineCore - SC_DEFAULT_APIKEY="$(SC_DEFAULT_APIKEY)";QT_NO_DEBUG_OUTPUT;QT_NO_DEBUG;NDEBUG;_WINDOWS;UNICODE;WIN32;Q_OS_WIN;QT_LARGEFILE_SUPPORT;QT_VERSION_5;QT_DLL;QT_WEBENGINE_LIB;QT_GUI_LIB;QT_CORE_LIB;QT_THREAD_SUPPORT;%(PreprocessorDefinitions) - MultiThreadedDLL - false - true - true - NotUsing - simulationcraft.hpp - Level3 - true - ProgramDatabase - 5030;4005;4996;6011;6386;6246;6313;6102;6330;%(DisableSpecificWarnings) - true - true - Precise - true - Speed - true - true - AnySuitable - true - false - true - - - NDEBUG;_WINDOWS;UNICODE;WIN32;Q_OS_WIN;QT_LARGEFILE_SUPPORT;QT_DLL;QT_NO_DEBUG_OUTPUT;QT_NO_DEBUG;QT_WEBENGINE_LIB;QT_GUI_LIB;QT_CORE_LIB;QT_THREAD_SUPPORT;%(PreprocessorDefinitions) - - - qtmain.lib;wininet.lib;crypt32.lib;Qt5WebEngine.lib;Qt5Network.lib;Qt5Gui.lib;Qt5Core.lib;Qt5Widgets.lib;Qt5WebEngineWidgets.lib;%(AdditionalDependencies) - true - $(QTDIR)\lib;%(AdditionalLibraryDirectories) - true - Windows - UseLinkTimeCodeGeneration - true - true - true - false - $(SolutionDir)\$(PlatformShortName)\$(Configuration)\Simulationcraft.pgd - true - - - - - 0 - Unsigned - None - - - Full - $(QTDIR)\include\QtWebEngineCore;$(QTDIR)\include\QtWebEngineCore;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtWebEngineWidgets;$(QTDIR)\include\QtWebEngine;$(QTDIR)\include;$(QTDIR)\include\ActiveQt;$(QTDIR)\include\QtANGLE;$(QTDIR)\mkspecs\default;$(SolutionDir);$(SolutionDir)vs;$(SolutionDir)engine;$(SolutionDir)engine/util;%(AdditionalIncludeDirectories);$(QTDIR)\include\QtWebEngineCore - SC_DEFAULT_APIKEY="$(SC_DEFAULT_APIKEY)";SC_NO_NETWORKING;QT_NO_DEBUG_OUTPUT;QT_NO_DEBUG;NDEBUG;_WINDOWS;UNICODE;WIN32;Q_OS_WIN;QT_LARGEFILE_SUPPORT;QT_VERSION_5;QT_DLL;QT_WEBENGINE_LIB;QT_GUI_LIB;QT_CORE_LIB;QT_THREAD_SUPPORT;%(PreprocessorDefinitions) - MultiThreadedDLL - false - true - true - NotUsing - simulationcraft.hpp - Level3 - true - ProgramDatabase - 5030;4005;4996;6011;6386;6246;6313;6102;6330;%(DisableSpecificWarnings) - true - true - Precise - true - Speed - true - true - AnySuitable - true - false - true - - - NDEBUG;_WINDOWS;UNICODE;WIN32;Q_OS_WIN;QT_LARGEFILE_SUPPORT;QT_DLL;QT_NO_DEBUG_OUTPUT;QT_NO_DEBUG;QT_WEBENGINE_LIB;QT_GUI_LIB;QT_CORE_LIB;QT_THREAD_SUPPORT;%(PreprocessorDefinitions) - - - qtmain.lib;wininet.lib;crypt32.lib;Qt5WebEngine.lib;Qt5Network.lib;Qt5Gui.lib;Qt5Core.lib;Qt5Widgets.lib;Qt5WebEngineWidgets.lib;%(AdditionalDependencies) - true - $(QTDIR)\lib;%(AdditionalLibraryDirectories) - true - Windows - UseLinkTimeCodeGeneration - true - true - true - false - $(SolutionDir)\$(PlatformShortName)\$(Configuration)\Simulationcraft.pgd - true - - - - - - - - - - - - - - From 745855a98f3a0739a84b5f4a42462b3a57c68e6d Mon Sep 17 00:00:00 2001 From: Dave Hendler Date: Sun, 1 Nov 2026 14:59:30 -0800 Subject: [PATCH 5/7] Default c++20 for VS --- vs/simc_vs2019.vcxproj | 2 +- vs/simc_vs2022.vcxproj | 2 +- vs/simc_vs2026.vcxproj | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/vs/simc_vs2019.vcxproj b/vs/simc_vs2019.vcxproj index 4050596b04e..4b2ee06f32f 100644 --- a/vs/simc_vs2019.vcxproj +++ b/vs/simc_vs2019.vcxproj @@ -49,7 +49,7 @@ true 26495;26451;26812 /bigobj /utf-8 %(AdditionalOptions) - stdcpp17 + stdcpp20 Console diff --git a/vs/simc_vs2022.vcxproj b/vs/simc_vs2022.vcxproj index e373917a012..f879fceca2c 100644 --- a/vs/simc_vs2022.vcxproj +++ b/vs/simc_vs2022.vcxproj @@ -49,7 +49,7 @@ true 26495;26451;26812 /bigobj /utf-8 %(AdditionalOptions) - stdcpp17 + stdcpp20 Console diff --git a/vs/simc_vs2026.vcxproj b/vs/simc_vs2026.vcxproj index 3650a0d287a..4c85c055d3a 100644 --- a/vs/simc_vs2026.vcxproj +++ b/vs/simc_vs2026.vcxproj @@ -49,7 +49,7 @@ true 26495;26451;26812 /bigobj /utf-8 %(AdditionalOptions) - stdcpp17 + stdcpp20 Console @@ -90,4 +90,4 @@ - \ No newline at end of file + From 79b82ec607e7c2fd9adfa9a136f0f51aa8ba3961 Mon Sep 17 00:00:00 2001 From: Dave Hendler Date: Sun, 1 Nov 2026 15:00:00 -0800 Subject: [PATCH 6/7] CMake only supports c++20 as of 3.12 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 632f904eb42..7b3e119903b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ # Projects Settings -cmake_minimum_required (VERSION 3.10...3.22) +cmake_minimum_required (VERSION 3.12...3.22) # Set OSX minimum version parity with Qt project set(CMAKE_OSX_DEPLOYMENT_TARGET 10.15) From a6b244dbb9c5713af15c943d70403fe8be140da7 Mon Sep 17 00:00:00 2001 From: Dave Hendler Date: Sun, 1 Nov 2026 15:00:16 -0800 Subject: [PATCH 7/7] [make] Remove some very old c++ versions --- engine/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/engine/Makefile b/engine/Makefile index 81ed82f4235..ef99d96938d 100644 --- a/engine/Makefile +++ b/engine/Makefile @@ -290,7 +290,7 @@ clean: mostlyclean # Unit Tests sc_http$(MODULE_EXT): interfaces$(PATHSEP)sc_http.cpp util$(PATHSEP)sc_io.cpp sc_thread.cpp sc_util.cpp -@echo [$@] Linking - $(CXX) $(CPP_FLAGS) -std=c++0x -DUNIT_TEST $(OPTS_INTERNAL) $(OPTS) $(LINK_FLAGS) $^ -o $@ $(LINK_LIBS) + $(CXX) $(CPP_FLAGS) -DUNIT_TEST $(OPTS_INTERNAL) $(OPTS) $(LINK_FLAGS) $^ -o $@ $(LINK_LIBS) rng$(MODULE_EXT): util$(PATHSEP)rng.cpp lib$(PATHSEP)fmt$(PATHSEP)format.cpp util$(PATHSEP)chrono.cpp -@echo [$@] Linking @@ -298,11 +298,11 @@ rng$(MODULE_EXT): util$(PATHSEP)rng.cpp lib$(PATHSEP)fmt$(PATHSEP)format.cpp uti timeline$(MODULE_EXT): util$(PATHSEP)timeline.hpp util$(PATHSEP)timeline.cpp -@echo [$@] Linking - $(CXX) $(CPP_FLAGS) -std=c++0x -DUNIT_TEST $(OPTS_INTERNAL) $(OPTS) $(LINK_FLAGS) $^ -o $@ $(LINK_LIBS) + $(CXX) $(CPP_FLAGS) -DUNIT_TEST $(OPTS_INTERNAL) $(OPTS) $(LINK_FLAGS) $^ -o $@ $(LINK_LIBS) sample_data$(MODULE_EXT): util$(PATHSEP)sample_data.hpp util$(PATHSEP)sample_data.cpp -@echo [$@] Linking - $(CXX) $(CPP_FLAGS) -std=c++0x -DUNIT_TEST $(OPTS_INTERNAL) $(OPTS) $(LINK_FLAGS) $^ -o $@ $(LINK_LIBS) + $(CXX) $(CPP_FLAGS) -DUNIT_TEST $(OPTS_INTERNAL) $(OPTS) $(LINK_FLAGS) $^ -o $@ $(LINK_LIBS) sc_expressions$(MODULE_EXT): sim$(PATHSEP)sc_expressions.cpp sc_util.cpp -@echo [$@] Linking