Update fmt to 11.1.4, spdlog to 1.15.2 and the macOS runner to macos-26 (#5197) * Prepare formatting code for fmt 11 fmt 11 requires the format function of a formatter to be const, and it calls parse at compile time for every replacement field, so parse has to be constexpr. The formatter for boost::system::error_code was neither. fmt::join for ranges moved from fmt/format.h to fmt/ranges.h, which active_elections.cpp did not include. A build with precompiled headers does not show this, because the precompiled header includes every fmt header. Both changes compile with fmt 10 as well. * Update fmt to 11.1.4 and spdlog to 1.15.2 fmt 10.0.0 does not compile with Apple clang 21, the compiler of Xcode 27. Newer clang versions no longer treat two evaluations of a string literal as the same object in a constant expression, which the compile time check of a format string relied on, so every use of FMT_STRING failed with "call to consteval function is not a constant expression". fmt fixed this in 11.1.0. No 10.x or 11.0.x release has the fix. spdlog is built against this fmt and supports fmt 11.1 from 1.15.1 on. 1.15.2 is the release that bundles fmt 11.1.4. * Keep spdlog writes locked Since 1.15.1 spdlog writes with fwrite_unlocked where the platform has it, which includes the console sinks on Linux. They write to stdout and stderr, which other code writes to as well, and the unlocked functions are only safe on a stream that has a single writer. With the option turned off spdlog writes the way 1.12 did. * Move macOS CI jobs to the macos-26 runner Homebrew no longer builds bottles for macOS 14, so installing qt@5 on the macos-14 runner compiles several of its dependencies from source. The rebuilt openssl@3 then cannot be linked over the openssl@1.1 that the image ships, brew exits with an error and every macOS job stops in its prepare step. GitHub also retires the macos-14 image on 2026-11-02. The macos-26 image has bottles for all of them and ships OpenSSL 3, so nothing is built from source. Its default Xcode 26.6 reports clang 21, which fmt 10.0.0 does not compile with, so this needs fmt 11.1 or later.
__________
Type: commit
Hash: 70681e52679c498c5937a8f9f912b8ee2b7bcdb0
Created: yesterday
__________
gr0v1ty/nano-node:70681e52679c498c5937a8f9f912b8ee2b7bcdb0
| Test Case | Status | Duration | Median Deviation | Log | Graph |
|---|---|---|---|---|---|
| 5n4pr_conf_10k_bintree | PASS | 130 s | 16.0 s | - | Show |
| 5n4pr_conf_10k_change | PASS | 135 s | -9.0 s | - | Show |
| 5n4pr_conf_change_dependant | PASS | 121 s | 7.0 s | - | - |
| 5n4pr_conf_change_independant | PASS | 111 s | -5.5 s | - | - |
| 5n4pr_conf_send_dependant | PASS | 128 s | 12.5 s | - | - |
| 5n4pr_conf_send_independant | PASS | 117 s | 1.0 s | - | - |
| 5n4pr_rocks_10k_bintree | PASS | 121 s | 3.0 s | - | - |
| 5n4pr_rocks_10k_change | PASS | 210 s | 45.0 s | - | - |