@oschonrock @vitaut
Sigh. Firstly, it's libstdc++ not stdlibc++.
Secondly, no, we don't need to. The overhead of <print> is known, and expected. We don't export any C++23 symbols from libstdc++.so yet, so that we can still change things before we are stuck with a stable ABI forever. That means the entire std::print implementation is inline and has to be instantiated and emitted in the TU, instead of just linking to a library function. The choice is to freeze the ABI early and have people complain for eternity, or delay it until we're ready and have people complain about compile times for a year or two.
I suppose what we could do is make it conditionally non-inline, so that if you define a macro like _GLIBCXX_PRINT_EXTERN and link with -lstdc++exp you'd get a non-inline definition. It's not a priority though. As usual, we're focussing on adding features and on correctness, before we try to prematurely optimize.