state of libstdcxx_so_7-branch

Doug Gregor dgregor@osl.iu.edu
Thu May 3 16:58:00 GMT 2007


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



More information about the Libstdc++ mailing list