Test Details Overview

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 Results

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 - -