[cfe-commits] [libcxx] r103655 - /libcxx/trunk/www/index.html
Chris Lattner
sabre at nondot.org
Wed May 12 15:21:15 PDT 2010
Author: lattner
Date: Wed May 12 17:21:15 2010
New Revision: 103655
URL: http://llvm.org/viewvc/llvm-project?rev=103655&view=rev
Log:
improve the 'current status' section to say what *is* there in
addition to what is not.
Add a big "why libc++" section to address a pretty major FAQ.
Modified:
libcxx/trunk/www/index.html
Modified: libcxx/trunk/www/index.html
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/www/index.html?rev=103655&r1=103654&r2=103655&view=diff
==============================================================================
--- libcxx/trunk/www/index.html (original)
+++ libcxx/trunk/www/index.html Wed May 12 17:21:15 2010
@@ -57,6 +57,48 @@
</ul>
<!--=====================================================================-->
+ <h2 id="why">Why a new C++ Standard Library for C++'0x?</h2>
+ <!--=====================================================================-->
+
+ <p>After its initial introduction, many people have asked "why start a new
+ library instead of contributing to an existing library?" (like Apache's
+ libstdcxx, GNU's libstdc++, STLport, etc). There are many contributing
+ reasons, but some of the major ones are:</p>
+
+ <ul>
+ <li><p>From years of experience (including having implemented the standard
+ library before), we've learned many things about implementing
+ the standard containers which require ABI breakage and fundamental changes
+ to how they are implemented. For example, it is generally accepted that
+ building std::string using the "short string optimization" instead of
+ using Copy On Write (COW) is a superior approach for multicore
+ machines. Breaking ABI compatibility with old versions of the library was
+ determined to be critical to achieving the performance goals of
+ libc++.</p></li>
+
+ <li><p>Mainline libstdc++ has switched to GPL3, a license which the developers
+ of libc++ cannot use. libstdc++ 4.2 (the last GPL2 version) could be
+ independently extended to support C++'0x, but this would be a fork of the
+ codebase, which is usually seen as worse for a project than starting a new
+ one. Another problem with libstdc++ is that it is tightly integrated with
+ G++ development, tending to be tied fairly closely to the matching
+ version of G++.</p>
+ </li>
+
+ <li><p>STLport and the Apache libstdcxx library are two other popular
+ candidates, but both lack C++'0x support. Our experience (and the
+ experience of libstdc++ developers) is that adding support for C++0x (in
+ particular rvalue references and move-only types) requires changes to
+ almost every class and function, essentially amounting to a rewrite.
+ Faced with a rewrite, we decided to start from scratch and evaluate every
+ decision based from first principles based on experience.</p>
+
+ <p>Further, both projects are apparently abandoned: STLport 5.2.1 was
+ released in Oct'08, and STDCXX 4.2.1 in May'08.</p>
+
+ </ul>
+
+ <!--=====================================================================-->
<h2 id="requirements">Platform Support</h2>
<!--=====================================================================-->
@@ -74,13 +116,10 @@
<p>libc++ is still under development. It has about 85% of
<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3092.pdf">N3092</a>
- implemented/tested.</p>
-
- <ul>
- <li>Missing <code><future></code></li>
- <li>Missing <code><regex></code></li>
- <li>Under construction <code><random></code></li>
- </ul>
+ implemented/tested. C++'98 support is fully featured, and most of C++'0x
+ support is as well. The only major missing pieces of C++'0x support are
+ <code><future></code> and <code><regex></code>, and parts of
+ <code><random></code>.</p>
<p>libc++ is currently dependent upon a separate library for the low-level
ABI compatibility with gcc. As a workaround it can be linked against
More information about the cfe-commits
mailing list