From 03101cc8398aac222ac2c637ac04de2471f57b9d Mon Sep 17 00:00:00 2001 From: Sergei Zimmerman Date: Sun, 17 Aug 2025 22:41:57 +0300 Subject: [PATCH] treewide: Bump C++ standard version to C++23 Compilers in nixpkgs have caught up and major distros should also have recent enough compilers. It would be nice to have newer features like more full featured ranges and deducing this. --- doc/manual/source/installation/prerequisites-source.md | 2 +- nix-meson-build-support/export/meson.build | 4 ++-- src/libcmd/meson.build | 2 +- src/libexpr-c/meson.build | 2 +- src/libexpr-test-support/meson.build | 2 +- src/libexpr-test-support/tests/value/context.cc | 1 + src/libexpr-tests/derived-path.cc | 1 + src/libexpr-tests/meson.build | 2 +- src/libexpr/meson.build | 2 +- src/libfetchers-c/meson.build | 2 +- src/libfetchers-tests/meson.build | 2 +- src/libfetchers/meson.build | 2 +- src/libflake-c/meson.build | 2 +- src/libflake-tests/meson.build | 2 +- src/libflake/meson.build | 2 +- src/libmain-c/meson.build | 2 +- src/libmain/meson.build | 2 +- src/libstore-c/meson.build | 2 +- src/libstore-test-support/derived-path.cc | 1 + .../include/nix/store/tests/outputs-spec.hh | 1 + src/libstore-test-support/meson.build | 2 +- src/libstore-test-support/path.cc | 3 ++- src/libstore-tests/meson.build | 2 +- src/libstore/meson.build | 2 +- src/libutil-c/meson.build | 2 +- src/libutil-test-support/hash.cc | 1 + src/libutil-test-support/meson.build | 2 +- src/libutil-tests/meson.build | 2 +- src/libutil/meson.build | 2 +- src/nix/meson.build | 2 +- tests/functional/meson.build | 2 +- 31 files changed, 33 insertions(+), 27 deletions(-) diff --git a/doc/manual/source/installation/prerequisites-source.md b/doc/manual/source/installation/prerequisites-source.md index c346a0a4b..057fd4443 100644 --- a/doc/manual/source/installation/prerequisites-source.md +++ b/doc/manual/source/installation/prerequisites-source.md @@ -10,7 +10,7 @@ - Bash Shell. The `./configure` script relies on bashisms, so Bash is required. - - A version of GCC or Clang that supports C++20. + - A version of GCC or Clang that supports C++23. - `pkg-config` to locate dependencies. If your distribution does not provide it, you can get it from diff --git a/nix-meson-build-support/export/meson.build b/nix-meson-build-support/export/meson.build index 26f778324..62a27bd48 100644 --- a/nix-meson-build-support/export/meson.build +++ b/nix-meson-build-support/export/meson.build @@ -14,7 +14,7 @@ extra_pkg_config_variables = get_variable('extra_pkg_config_variables', {}) extra_cflags = [] if not meson.project_name().endswith('-c') - extra_cflags += [ '-std=c++2a' ] + extra_cflags += [ '-std=c++23' ] endif import('pkgconfig').generate( @@ -34,7 +34,7 @@ meson.override_dependency( declare_dependency( include_directories : include_dirs, link_with : this_library, - compile_args : [ '-std=c++2a' ], + compile_args : [ '-std=c++23' ], dependencies : deps_public_subproject + deps_public, variables : extra_pkg_config_variables, ), diff --git a/src/libcmd/meson.build b/src/libcmd/meson.build index 2f8079496..24e075246 100644 --- a/src/libcmd/meson.build +++ b/src/libcmd/meson.build @@ -3,7 +3,7 @@ project( 'cpp', version : files('.version'), default_options : [ - 'cpp_std=c++2a', + 'cpp_std=c++23', # TODO(Qyriad): increase the warning level 'warning_level=1', 'errorlogs=true', # Please print logs for tests that fail diff --git a/src/libexpr-c/meson.build b/src/libexpr-c/meson.build index 606b93e70..7c014d61d 100644 --- a/src/libexpr-c/meson.build +++ b/src/libexpr-c/meson.build @@ -3,7 +3,7 @@ project( 'cpp', version : files('.version'), default_options : [ - 'cpp_std=c++2a', + 'cpp_std=c++23', # TODO(Qyriad): increase the warning level 'warning_level=1', 'errorlogs=true', # Please print logs for tests that fail diff --git a/src/libexpr-test-support/meson.build b/src/libexpr-test-support/meson.build index 89dc1d20a..d762eb85e 100644 --- a/src/libexpr-test-support/meson.build +++ b/src/libexpr-test-support/meson.build @@ -3,7 +3,7 @@ project( 'cpp', version : files('.version'), default_options : [ - 'cpp_std=c++2a', + 'cpp_std=c++23', # TODO(Qyriad): increase the warning level 'warning_level=1', 'errorlogs=true', # Please print logs for tests that fail diff --git a/src/libexpr-test-support/tests/value/context.cc b/src/libexpr-test-support/tests/value/context.cc index b24d83a5a..d6036601a 100644 --- a/src/libexpr-test-support/tests/value/context.cc +++ b/src/libexpr-test-support/tests/value/context.cc @@ -1,3 +1,4 @@ +#include // Needed by rapidcheck on Darwin #include #include "nix/store/tests/path.hh" diff --git a/src/libexpr-tests/derived-path.cc b/src/libexpr-tests/derived-path.cc index a4bd29c1c..e9f9fcd07 100644 --- a/src/libexpr-tests/derived-path.cc +++ b/src/libexpr-tests/derived-path.cc @@ -1,5 +1,6 @@ #include #include +#include // Needed by rapidcheck on Darwin #include #include "nix/store/tests/derived-path.hh" diff --git a/src/libexpr-tests/meson.build b/src/libexpr-tests/meson.build index cc203d60e..a876e9705 100644 --- a/src/libexpr-tests/meson.build +++ b/src/libexpr-tests/meson.build @@ -3,7 +3,7 @@ project( 'cpp', version : files('.version'), default_options : [ - 'cpp_std=c++2a', + 'cpp_std=c++23', # TODO(Qyriad): increase the warning level 'warning_level=1', 'errorlogs=true', # Please print logs for tests that fail diff --git a/src/libexpr/meson.build b/src/libexpr/meson.build index e1a12106d..15bca88f0 100644 --- a/src/libexpr/meson.build +++ b/src/libexpr/meson.build @@ -3,7 +3,7 @@ project( 'cpp', version : files('.version'), default_options : [ - 'cpp_std=c++2a', + 'cpp_std=c++23', # TODO(Qyriad): increase the warning level 'warning_level=1', 'errorlogs=true', # Please print logs for tests that fail diff --git a/src/libfetchers-c/meson.build b/src/libfetchers-c/meson.build index 74ec9c9c2..8542744b4 100644 --- a/src/libfetchers-c/meson.build +++ b/src/libfetchers-c/meson.build @@ -3,7 +3,7 @@ project( 'cpp', version : files('.version'), default_options : [ - 'cpp_std=c++2a', + 'cpp_std=c++23', # TODO(Qyriad): increase the warning level 'warning_level=1', 'errorlogs=true', # Please print logs for tests that fail diff --git a/src/libfetchers-tests/meson.build b/src/libfetchers-tests/meson.build index cd23c1f0c..a18f64d79 100644 --- a/src/libfetchers-tests/meson.build +++ b/src/libfetchers-tests/meson.build @@ -3,7 +3,7 @@ project( 'cpp', version : files('.version'), default_options : [ - 'cpp_std=c++2a', + 'cpp_std=c++23', # TODO(Qyriad): increase the warning level 'warning_level=1', 'errorlogs=true', # Please print logs for tests that fail diff --git a/src/libfetchers/meson.build b/src/libfetchers/meson.build index 3da58cb70..922a2c491 100644 --- a/src/libfetchers/meson.build +++ b/src/libfetchers/meson.build @@ -3,7 +3,7 @@ project( 'cpp', version : files('.version'), default_options : [ - 'cpp_std=c++2a', + 'cpp_std=c++23', # TODO(Qyriad): increase the warning level 'warning_level=1', 'errorlogs=true', # Please print logs for tests that fail diff --git a/src/libflake-c/meson.build b/src/libflake-c/meson.build index 8b844371d..933e06d90 100644 --- a/src/libflake-c/meson.build +++ b/src/libflake-c/meson.build @@ -3,7 +3,7 @@ project( 'cpp', version : files('.version'), default_options : [ - 'cpp_std=c++2a', + 'cpp_std=c++23', # TODO(Qyriad): increase the warning level 'warning_level=1', 'errorlogs=true', # Please print logs for tests that fail diff --git a/src/libflake-tests/meson.build b/src/libflake-tests/meson.build index 08c48f137..59094abe8 100644 --- a/src/libflake-tests/meson.build +++ b/src/libflake-tests/meson.build @@ -3,7 +3,7 @@ project( 'cpp', version : files('.version'), default_options : [ - 'cpp_std=c++2a', + 'cpp_std=c++23', # TODO(Qyriad): increase the warning level 'warning_level=1', 'errorlogs=true', # Please print logs for tests that fail diff --git a/src/libflake/meson.build b/src/libflake/meson.build index faa12e7a9..191d8f068 100644 --- a/src/libflake/meson.build +++ b/src/libflake/meson.build @@ -3,7 +3,7 @@ project( 'cpp', version : files('.version'), default_options : [ - 'cpp_std=c++2a', + 'cpp_std=c++23', # TODO(Qyriad): increase the warning level 'warning_level=1', 'errorlogs=true', # Please print logs for tests that fail diff --git a/src/libmain-c/meson.build b/src/libmain-c/meson.build index 2c08cac41..9e26ad8ad 100644 --- a/src/libmain-c/meson.build +++ b/src/libmain-c/meson.build @@ -3,7 +3,7 @@ project( 'cpp', version : files('.version'), default_options : [ - 'cpp_std=c++2a', + 'cpp_std=c++23', # TODO(Qyriad): increase the warning level 'warning_level=1', 'errorlogs=true', # Please print logs for tests that fail diff --git a/src/libmain/meson.build b/src/libmain/meson.build index 252b28169..4a90d2d83 100644 --- a/src/libmain/meson.build +++ b/src/libmain/meson.build @@ -3,7 +3,7 @@ project( 'cpp', version : files('.version'), default_options : [ - 'cpp_std=c++2a', + 'cpp_std=c++23', # TODO(Qyriad): increase the warning level 'warning_level=1', 'errorlogs=true', # Please print logs for tests that fail diff --git a/src/libstore-c/meson.build b/src/libstore-c/meson.build index 1d01aa3aa..f8eaef803 100644 --- a/src/libstore-c/meson.build +++ b/src/libstore-c/meson.build @@ -3,7 +3,7 @@ project( 'cpp', version : files('.version'), default_options : [ - 'cpp_std=c++2a', + 'cpp_std=c++23', # TODO(Qyriad): increase the warning level 'warning_level=1', 'errorlogs=true', # Please print logs for tests that fail diff --git a/src/libstore-test-support/derived-path.cc b/src/libstore-test-support/derived-path.cc index 225b86c79..cb1d23ac5 100644 --- a/src/libstore-test-support/derived-path.cc +++ b/src/libstore-test-support/derived-path.cc @@ -1,5 +1,6 @@ #include +#include // Needed by rapidcheck on Darwin #include #include "nix/store/tests/derived-path.hh" diff --git a/src/libstore-test-support/include/nix/store/tests/outputs-spec.hh b/src/libstore-test-support/include/nix/store/tests/outputs-spec.hh index 865a97352..5bbcc7340 100644 --- a/src/libstore-test-support/include/nix/store/tests/outputs-spec.hh +++ b/src/libstore-test-support/include/nix/store/tests/outputs-spec.hh @@ -1,6 +1,7 @@ #pragma once ///@file +#include // Needed by rapidcheck on Darwin #include #include "nix/store/outputs-spec.hh" diff --git a/src/libstore-test-support/meson.build b/src/libstore-test-support/meson.build index 26da5d0f2..b2977941f 100644 --- a/src/libstore-test-support/meson.build +++ b/src/libstore-test-support/meson.build @@ -3,7 +3,7 @@ project( 'cpp', version : files('.version'), default_options : [ - 'cpp_std=c++2a', + 'cpp_std=c++23', # TODO(Qyriad): increase the warning level 'warning_level=1', 'errorlogs=true', # Please print logs for tests that fail diff --git a/src/libstore-test-support/path.cc b/src/libstore-test-support/path.cc index 5d5902cc9..145920310 100644 --- a/src/libstore-test-support/path.cc +++ b/src/libstore-test-support/path.cc @@ -1,6 +1,7 @@ -#include +#include // Needed by rapidcheck on Darwin #include +#include #include #include "nix/store/path-regex.hh" diff --git a/src/libstore-tests/meson.build b/src/libstore-tests/meson.build index 87f6a234a..d325e57a6 100644 --- a/src/libstore-tests/meson.build +++ b/src/libstore-tests/meson.build @@ -3,7 +3,7 @@ project( 'cpp', version : files('.version'), default_options : [ - 'cpp_std=c++2a', + 'cpp_std=c++23', # TODO(Qyriad): increase the warning level 'warning_level=1', 'errorlogs=true', # Please print logs for tests that fail diff --git a/src/libstore/meson.build b/src/libstore/meson.build index ad76582d8..4a5f4b2cf 100644 --- a/src/libstore/meson.build +++ b/src/libstore/meson.build @@ -3,7 +3,7 @@ project( 'cpp', version : files('.version'), default_options : [ - 'cpp_std=c++2a', + 'cpp_std=c++23', # TODO(Qyriad): increase the warning level 'warning_level=1', 'errorlogs=true', # Please print logs for tests that fail diff --git a/src/libutil-c/meson.build b/src/libutil-c/meson.build index 3688ddeb6..8131c517c 100644 --- a/src/libutil-c/meson.build +++ b/src/libutil-c/meson.build @@ -3,7 +3,7 @@ project( 'cpp', version : files('.version'), default_options : [ - 'cpp_std=c++2a', + 'cpp_std=c++23', # TODO(Qyriad): increase the warning level 'warning_level=1', 'errorlogs=true', # Please print logs for tests that fail diff --git a/src/libutil-test-support/hash.cc b/src/libutil-test-support/hash.cc index ffff27926..853da8e90 100644 --- a/src/libutil-test-support/hash.cc +++ b/src/libutil-test-support/hash.cc @@ -1,5 +1,6 @@ #include +#include // Needed by rapidcheck on Darwin #include #include "nix/util/hash.hh" diff --git a/src/libutil-test-support/meson.build b/src/libutil-test-support/meson.build index 9bee4a1a6..910f1d881 100644 --- a/src/libutil-test-support/meson.build +++ b/src/libutil-test-support/meson.build @@ -3,7 +3,7 @@ project( 'cpp', version : files('.version'), default_options : [ - 'cpp_std=c++2a', + 'cpp_std=c++23', # TODO(Qyriad): increase the warning level 'warning_level=1', 'errorlogs=true', # Please print logs for tests that fail diff --git a/src/libutil-tests/meson.build b/src/libutil-tests/meson.build index 6f04b46fd..0e2a2e468 100644 --- a/src/libutil-tests/meson.build +++ b/src/libutil-tests/meson.build @@ -3,7 +3,7 @@ project( 'cpp', version : files('.version'), default_options : [ - 'cpp_std=c++2a', + 'cpp_std=c++23', # TODO(Qyriad): increase the warning level 'warning_level=1', 'errorlogs=true', # Please print logs for tests that fail diff --git a/src/libutil/meson.build b/src/libutil/meson.build index ffd1ebd49..c294f895a 100644 --- a/src/libutil/meson.build +++ b/src/libutil/meson.build @@ -3,7 +3,7 @@ project( 'cpp', version : files('.version'), default_options : [ - 'cpp_std=c++2a', + 'cpp_std=c++23', # TODO(Qyriad): increase the warning level 'warning_level=1', 'errorlogs=true', # Please print logs for tests that fail diff --git a/src/nix/meson.build b/src/nix/meson.build index e17b39f98..8accd4755 100644 --- a/src/nix/meson.build +++ b/src/nix/meson.build @@ -3,7 +3,7 @@ project( 'cpp', version : files('.version'), default_options : [ - 'cpp_std=c++2a', + 'cpp_std=c++23', # TODO(Qyriad): increase the warning level 'warning_level=1', 'errorlogs=true', # Please print logs for tests that fail diff --git a/tests/functional/meson.build b/tests/functional/meson.build index e501aa102..54e13b26d 100644 --- a/tests/functional/meson.build +++ b/tests/functional/meson.build @@ -2,7 +2,7 @@ project( 'nix-functional-tests', version : files('.version'), default_options : [ - 'cpp_std=c++2a', + 'cpp_std=c++23', # TODO(Qyriad): increase the warning level 'warning_level=1', 'errorlogs=true', # Please print logs for tests that fail