[libcxx-commits] [libcxx] [libc++] Introduce _LIBCPP_ABI_BOUNDED_ITERATORS_IN_{STRING_VIEW, SPAN} (PR #143172)
Nikolas Klauser via libcxx-commits
libcxx-commits at lists.llvm.org
Mon Jun 23 02:14:55 PDT 2025
philnik777 wrote:
> > The main downside I see is that it makes it a lot easier to have a very weird ABI configuration. I understand that there can be some roll-out challenges, but at this point I think it would be better to allow opting out of specific additions for a set period of time rather than having to opt in to every single one individually.
>
> There is a fundamental problem with bundling all of these ABI changes under the same setting. We can't claim that each ABI configuration gives rise to a stable ABI of its own and then plan to have ABI breaking changes from release to release when you enable one of these ABI configurations. That's just not a consistent model. Sure, we can have a pre-set that allows enabling all of the bounded iterators (as a shortcut), but that can't be the only way of enabling these.
I don't think all the ABI macros should be ABI stable necessarily, and AFAIK we don't claim anywhere that all ABI macros in of themselves will be ABI stable. I'm rather on the opposite side: we shouldn't try to keep a macro ABI stable unless someone told us they rely on the stability of that macro. Otherwise we're potentially restricting ourselves in significant ways without a benefit to anybody.
Is there any disagreement that in a perfect world there would be just two configurations throughout the library, namely bounded iterators and non-bounded iterators?
https://github.com/llvm/llvm-project/pull/143172
More information about the libcxx-commits
mailing list