This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
Re: state of libstdcxx_so_7-branch
On May 3, 2007, at 8:21 AM, Benjamin Kosnik wrote:
I don't know what to do about the libstdcxx_so_7 branch... AFAICT,
the cxx0x-branch hasn't done anything yet that breaks the ABI, so
there are certain advantages to keeping it from breaking the ABI.
That said, some C++0x changes will break the library ABI, so we
might just be delaying the inevitable...
Yes, and I'm just wondering if this means it's better to try and
implement a "clean" C++0x library from the very beginning, with no
hacks, one type_traits file, etc. I think dealing with a branch
might be easier than dealing with obscured interfaces mashing the
two together. (Especially if in the end, it turns out that doesn't
give us a full solution for both.)
Perhaps I'm looking ahead too far, to where work progresses to the
point of a concepts-enabled library. I see divergence growing, not
shrinking over time. The divergence between C++0x and mainline will
be much more substantial than say from gcc-4_1-branch to gcc-4_2-
branch.
Yes. With concepts, the divergence between C++0x and C++98 becomes
very, very large. I've been managing a C++98/C++0x libstdc++ within
the ConceptGCC source tree, but the amount of macro ugliness is
staggering, to say the least. So, we will need to make a clean break,
and we should bring all of the libstdcxx_so_7 improvements with us.
The question is whether to make a clean break now, or wait until
concepts come into the FSF tree. I'm leaning toward doing it now on
the cxx0x-branch. Then, ConceptGCC will be based on the cxx0x-branch,
so it will get all of the ABI-breaking changes from the
libstdcxx_so_7 branch and from the concepts changes. This would help
me immensely, because it means that my concepts changes won't always
conflict with other changes in libstdc++. Of course, you all need to
decide whether that's in your best interests, too.
Either way, we should always plan on moving the non-ABI-breaking
features from the cxx0x-branch to mainline. Long before we get
concepts, we'll still want to have library support for rvalue
references, variadic templates, etc. in mainline and under -std=c++0x.
- Doug