[LLVMdev] [cfe-dev] New libc++ LLVM Subproject

David Greene dag at cray.com
Tue May 11 21:47:03 PDT 2010


On Tuesday 11 May 2010 19:07:50 Howard Hinnant wrote:

> > This looks cool, but I can't help wondering about the motivation. 
> > libstdc++ has a ton of useful functionality (debug mode, profile mode,
> > etc.).  Does libc++ plan to reproduce that?
> 
> debug mode yes.  It isn't there yet.  And I would like to limit it to being
>  ABI compatible with release mode.  This will entail significant debug
>  functionality curtailment, but also eliminate numerous errors I've seen
>  when debug mode and release mode get accidentally mixed.

Ouch.  I hope libc++ doesn't give up any debug functionality.  It's 
indispensable.  I think the ABI compatibility is worth it, but then I've
never run into significant problems where I've been forced to mix
debug and non-debug mode code.

> > What's driving libc++?
> 
> The possibility of being a superior solution.

Ok, but could that be done by improving libstdc++?

> ----------------
> 
> // Container overhead example

> libc++:
> 
> sizeof map<int, int> = 3
> sizeof deque<int> = 6
> 
> libstdc++:
> 
> sizeof map<int, int> = 6
> sizeof deque<int> = 10
> 
> (smaller is better)

Well, that depends, doesn't it?  Why is libstdc++ larger?  Is any 
functionality being given up by libc++?  If not, why not improve
libstdc++?

> ----------------
> 
> // Adding a few items to a sorted sequence and resorting
> //    (a real world use case)
>
> libc++:
> 
> 5 seconds
> 
> libstdc++:
> 
> 22 seconds
> 
> (smaller is better)

Again, what prevents someone from improving libstdc++ here?

Numbers are good, but context and analysis are even better.
 
> ----------------
> 
> This being said, clang will continue to be std::lib neutral.  If libstdc++
>  meets your needs better than libc++, then you should use it.  libc++ will
>  have to earn its place.

Of course.  That will require some pretty comprehensive analysis.  Right now
I don't know which meets my needs better because we don't yet have an
explanation of what the trade-offs are.

I understand libc++ is new and you're probably not at that point yet, but
a motivating document would help.  Is there are document somewhere that
explains why the project was started in the first place?

                                      -Dave



More information about the llvm-dev mailing list