diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 320a7f2a11..fdad2bca56 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -260,7 +260,7 @@ jobs: { "name": "Linux fsanitize", // Always run on large if available, more reliable regarding timeouts - "os": large ? "nscloud-ubuntu-22.04-amd64-8x16-with-cache" : "ubuntu-latest", + "os": large ? "nscloud-ubuntu-22.04-amd64-16x32-with-cache" : "ubuntu-latest", "enabled": level >= 2, // do not fail nightlies on this for now "secondary": level <= 2, @@ -277,7 +277,7 @@ jobs: // * `grind_guide` always times out. // * `pkg/|lake/` tests sometimes time out (likely even hang), related to Lake CI // failures? - "CTEST_OPTIONS": "-E 'StackOverflow|reverse-ffi|interactive|async_select_channel|9366|run/bv_|grind_guide|pkg/|lake/'" + "CTEST_OPTIONS": "-E 'StackOverflow|reverse-ffi|interactive|async_select_channel|9366|run/bv_|grind_guide|grind_bitvec2|grind_constProp|grind_indexmap|grind_list|grind_lint|grind_array_attach|grind_ite_trace|pkg/|lake/'" }, { "name": "macOS", diff --git a/flake.lock b/flake.lock index ab4270e2cb..f3046deb98 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1745636243, - "narHash": "sha256-kbNvlQZf8wwok3d2X1kM/TlXH/MZ+03ZNv+IPPBx+DM=", - "rev": "f771eb401a46846c1aebd20552521b233dd7e18b", + "lastModified": 1769018530, + "narHash": "sha256-S/5RU76BdQ32bbE99a+G9gMuatpVWEvIfeSjEqyoFS4=", + "rev": "88d3861acdd3d2f0e361767018218e51810df8a1", "type": "tarball", - "url": "https://releases.nixos.org/nixos/unstable/nixos-25.05pre789333.f771eb401a46/nixexprs.tar.xz" + "url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre931542.88d3861acdd3/nixexprs.tar.xz" }, "original": { "type": "tarball", diff --git a/flake.nix b/flake.nix index cec5a8a213..540e2e2012 100644 --- a/flake.nix +++ b/flake.nix @@ -18,7 +18,7 @@ # An old nixpkgs for creating releases with an old glibc pkgsDist-old-aarch = import inputs.nixpkgs-old { localSystem.config = "aarch64-unknown-linux-gnu"; }; - llvmPackages = pkgs.llvmPackages_15; + llvmPackages = pkgs.llvmPackages_19; devShellWithDist = pkgsDist: pkgs.mkShell.override { stdenv = pkgs.overrideCC pkgs.stdenv llvmPackages.clang; diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d32527b993..0d620dcdfd 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -250,7 +250,7 @@ else() endif() if(NOT MSVC) - set(CMAKE_CXX_FLAGS "-Wall -Wextra -std=c++14 ${CMAKE_CXX_FLAGS}") + set(CMAKE_CXX_FLAGS "-Wall -Wextra -std=c++20 ${CMAKE_CXX_FLAGS}") set(CMAKE_CXX_FLAGS_DEBUG "-g3 ${CMAKE_CXX_FLAGS_DEBUG}") if(CMAKE_SYSTEM_NAME MATCHES "Emscripten") # smallest+slower | -Oz .. -Os .. -O3 | largest+faster diff --git a/src/library/time_task.cpp b/src/library/time_task.cpp index db1cf8268f..faef6dd160 100644 --- a/src/library/time_task.cpp +++ b/src/library/time_task.cpp @@ -57,7 +57,7 @@ void finalize_time_task() { time_task::time_task(std::string const & category, options const & opts, name decl) : m_category(category) { if (get_profiler(opts)) { - m_timeit = optional(get_profiling_threshold(opts), [=](second_duration duration) mutable { + m_timeit = optional(get_profiling_threshold(opts), [=, this](second_duration duration) mutable { sstream ss; ss << m_category; if (decl) diff --git a/src/runtime/buffer.h b/src/runtime/buffer.h index c3d4ecb72e..f5b137061a 100644 --- a/src/runtime/buffer.h +++ b/src/runtime/buffer.h @@ -72,7 +72,7 @@ public: m_buffer(reinterpret_cast(m_initial_buffer)), m_pos(0), m_capacity(INITIAL_SIZE) { - std::for_each(source.begin(), source.end(), [=](T const & e) { push_back(e); }); + std::for_each(source.begin(), source.end(), [=, this](T const & e) { push_back(e); }); } void ensure_capacity(size_t new_capacity) { @@ -85,7 +85,7 @@ public: buffer & operator=(buffer const & source) { clear(); - std::for_each(source.begin(), source.end(), [=](T const & e) { push_back(e); }); + std::for_each(source.begin(), source.end(), [=, this](T const & e) { push_back(e); }); return *this; } diff --git a/src/runtime/interrupt.cpp b/src/runtime/interrupt.cpp index c1e26b317c..8c1fbea677 100644 --- a/src/runtime/interrupt.cpp +++ b/src/runtime/interrupt.cpp @@ -64,7 +64,7 @@ void check_interrupted() { if (g_cancel_tk) { inc_ref(g_cancel_tk); if (lean_io_cancel_token_is_set(g_cancel_tk) && - !std::uncaught_exception()) { + !std::uncaught_exceptions()) { throw interrupted(); } } diff --git a/src/util/list_fn.h b/src/util/list_fn.h index 3389b3c416..d2f7fc3731 100644 --- a/src/util/list_fn.h +++ b/src/util/list_fn.h @@ -125,7 +125,7 @@ list append(list const & l1, list const & l2) { /** \brief Given list (a_0, ..., a_k), return list (f(a_0), ..., f(a_k)). */ template list map2(list const & l, F && f) { - static_assert(std::is_same::type, To>::value, + static_assert(std::is_same::type, To>::value, "map: return type of f is not equal to input type"); if (is_nil(l)) { return list(); @@ -271,7 +271,7 @@ list map_reuse(list const & l, F && f, Eq const & eq = Eq()) { /** \brief Given list (a_0, ..., a_k), exec f(a_0); f(a_1); ... f(a_k). */ template void for_each(list const & l, F && f) { - static_assert(std::is_same::type, void>::value, + static_assert(std::is_same::type, void>::value, "for_each: return type of f is not void"); typedef typename list::cell cell; cell * it = l.raw(); @@ -285,7 +285,7 @@ void for_each(list const & l, F && f) { exec f(a_0, b_0); f(a_1, b_1); ... f(a_k, b_k). */ template void for_each2(list const & l1, list const & l2, F && f) { - static_assert(std::is_same::type, void>::value, + static_assert(std::is_same::type, void>::value, "for_each2: return type of f is not void"); typedef typename list::cell cell1; typedef typename list::cell cell2; @@ -303,7 +303,7 @@ void for_each2(list const & l1, list const & l2, F && f) { exec f(a_0, b_0, c_0); f(a_1, b_1, c_1); ... f(a_k, b_k, c_k). */ template void for_each3(list const & l1, list const & l2, list const & l3, F && f) { - static_assert(std::is_same::type, void>::value, + static_assert(std::is_same::type, void>::value, "for_each2: return type of f is not void"); typedef typename list::cell cell1; typedef typename list::cell cell2; @@ -322,7 +322,7 @@ void for_each3(list const & l1, list const & l2, list const & l3, F /** \brief Compare two lists using the binary predicate p. */ template bool compare(list const & l1, list const & l2, P && p) { - static_assert(std::is_same::type, bool>::value, + static_assert(std::is_same::type, bool>::value, "compare: return type of f is not bool"); auto it1 = l1.begin(); auto it2 = l2.begin();