You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The old version of this function was a part of the exported library ABI, leading to the following error when linking together with the new library version:
If this ABI break is intended, shouldn't the SOVERSION in CMakeLists.txt be set to something other than the major library version (7), or this release should have been 8.0.0 instead?
I haven't actually checked if there are other problems with the ABI in this release, because the full set of changes is huge. I suggest keeping a list of expected exported symbols in the source repository and checking for an exact match in CI to help catching these sorts of ABI breaks before release. Downstream consumers start to rely on a shared fmt library in many places (which is great!), and keeping the ABI stability and the SONAME in sync is generally expected.
The text was updated successfully, but these errors were encountered:
In a recent 7.1.0 release, this change was made:
The old version of this function was a part of the exported library ABI, leading to the following error when linking together with the new library version:
spdlog.cpp:function spdlog::details::M_formatterspdlog::details::null_scoped_padder::format(spdlog::details::log_msg const&, tm const&, fmt::v7::basic_memory_buffer<char, 250ul, std::allocator >&): error: undefined reference to 'fmt::v7::basic_format_context<std::back_insert_iterator<fmt::v7::detail::buffer >, char>::iterator fmt::v7::detail::vformat_to(fmt::v7::detail::buffer&, fmt::v7::basic_string_view, fmt::v7::basic_format_args<fmt::v7::basic_format_context<std::back_insert_iterator<fmt::v7::detail::buffer<fmt::v7::type_identity::type> >, fmt::v7::type_identity::type> >)'
If this ABI break is intended, shouldn't the
SOVERSION
inCMakeLists.txt
be set to something other than the major library version (7), or this release should have been 8.0.0 instead?I haven't actually checked if there are other problems with the ABI in this release, because the full set of changes is huge. I suggest keeping a list of expected exported symbols in the source repository and checking for an exact match in CI to help catching these sorts of ABI breaks before release. Downstream consumers start to rely on a shared fmt library in many places (which is great!), and keeping the ABI stability and the SONAME in sync is generally expected.
The text was updated successfully, but these errors were encountered: