On Tue, 26 Aug 2025 at 18:31, Nathan Myers <[email protected]> wrote:
>
> Changes in v4:
> * Move global symbols to correct list.
> * Fix up commit annotations: Changelog, title.
>
> Changes in v3:
> * Add to global symbols list.
>
> Changes in v2:
> * tai_clock and gps_clock remain "is_steady = false".
> * Note adjustments to the exported global symbols list are
> not yet included in this patch.
>
> This patch moves std::tai_clock::now() and std::tai_clock::now()
> definitions from header inlines to static members invoked via a
> normal function call, in service of stabilizing the C++20 ABI.
>
> It also changes #if guards to mention the actual __cpp_lib_*
> feature gated, not just the language version, for clarity.
This was a breaking change. The __cpp_lib_chrono macro is not set to
the C++20 value when using the old COW std::string:
ftms = {
name = chrono;
values = {
v = 201907;
cxxmin = 20;
hosted = yes;
cxx11abi = yes; // std::chrono::tzdb requires cxx11 std::string
};
So changing <chrono> to check __cpp_lib_chrono >= 201803L means that
all the C++20 chrono features are unavailable when using
-D_GLIBCXX_USE_CXX11_ABI=0
I knew I should have asked for that change to be done as a separate
commit, not as a drive-by in this change :-)