<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
          "http://www.w3.org/TR/html4/strict.dtd">
<!-- Material used from: HTML 4.01 specs: http://www.w3.org/TR/html401/ -->
<html>
<head>
  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  <title>"libc++" C++ Standard Library</title>
  <link type="text/css" rel="stylesheet" href="menu.css">
  <link type="text/css" rel="stylesheet" href="content.css">
</head>

<body>
<div id="menu">
  <div>
    <a href="http://llvm.org/">LLVM Home</a>
  </div>

  <div class="submenu">
    <label>libc++ Info</label>
    <a href="/index.html">About</a>
  </div>

  <div class="submenu">
    <label>Quick Links</label>
    <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">cfe-dev</a>
    <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits">cfe-commits</a>
    <a href="http://llvm.org/bugs/">Bug Reports</a>
    <a href="http://llvm.org/svn/llvm-project/libcxx/trunk/">Browse SVN</a>
    <a href="http://llvm.org/viewvc/llvm-project/libcxx/trunk/">Browse ViewVC</a>
  </div>
</div>

<div id="content">
  <!--*********************************************************************-->
  <h1>"libc++" C++ Standard Library</h1>
  <!--*********************************************************************-->

  <p>libc++ is a new implementation of the C++ standard library, targeting
     C++0X.</p>

  <p>All of the code in libc++ is available under the standard
     <a href="http://llvm.org/docs/DeveloperPolicy.html#license">LLVM
     License</a>, a "BSD-style" license.</p>

  <!--=====================================================================-->
  <h2 id="goals">Features and Goals</h2>
  <!--=====================================================================-->

    <ul>
        <li>Correctness as defined by the (currently draft) C++0X standard.</li>
        <li>Fast execution.</li>
        <li>Minimal memory use.</li>
        <li>Fast compile times.</li>
        <li>ABI compatibility with gcc's libstdc++ for some low-level features
            such as exception objects, rtti and memory allocation.</li>
        <li>Extensive unit tests.</li>
    </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 (particularly in C++'0x, which has rvalue references).  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 often seen as worse for a project than starting a new
      independent 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
      design decision 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>
  <!--=====================================================================-->

   <p>libc++ is known to work on the following platforms, using g++-4.2 and
      clang (lack of C++0X language support disables some functionality).</p>

    <ul>
     <li>Mac OS X i386</li>
     <li>Mac OS X x86_64</li>
    </ul>

  <!--=====================================================================-->
  <h2 id="dir-structure">Current Status</h2>
  <!--=====================================================================-->

   <p>libc++ is still under development.  It has about 98% of
      <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3126.pdf">N3126</a>
      implemented/tested.  C++'98 support is fully featured, and most of C++'0x
      support is as well.  The only major missing piece of C++'0x support is
      <code>&lt;atomic&gt;</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
      gcc's libstdc++, or on Mac OS X
      <a href="http://home.roadrunner.com/~hinnant/libcppabi.zip">this library</a>.</p>

   <p><a href="libcxx_by_chapter.pdf">Here</a> is a by-chapter breakdown of what
   is passing tests and what isn't. This chart is currently based on testing
   against g++-4.4.0 with -std=c++0x. </p>

  <!--=====================================================================-->
  <h2>Get it and get involved!</h2>
  <!--=====================================================================-->

  <p>To check out the code, use:</p>

  <ul>
  <li><code>svn co http://llvm.org/svn/llvm-project/libcxx/trunk libcxx</code></li>
  <li><code>cd libcxx/lib</code></li>
  <li><code>./buildit</code></li>
  </ul>

  <p>To run the libc++ test suit (recommended):</p>

  <ul>
  <li><code>cd libcxx/test</code></li>
  <li><code>./testit</code></li>
  </ul>

  <p>Send discussions to the
  (<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">clang mailing list</a>).</p>

</div>
</body>
</html>
