forked from OSchip/llvm-project
Cleanup new documentation index and transfer more information from www/index.html
llvm-svn: 246913
This commit is contained in:
parent
d01ea56015
commit
3034b066c0
|
@ -46,35 +46,34 @@ 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:
|
||||
|
||||
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++11, 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++.
|
||||
* 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++11, 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++.
|
||||
|
||||
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++11, 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++.
|
||||
* 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++11, 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++.
|
||||
|
||||
STLport and the Apache libstdcxx library are two other popular
|
||||
candidates, but both lack C++11 support. Our experience (and the
|
||||
experience of libstdc++ developers) is that adding support for C++11 (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.
|
||||
|
||||
Further, both projects are apparently abandoned: STLport 5.2.1 was
|
||||
released in Oct'08, and STDCXX 4.2.1 in May'08.
|
||||
* STLport and the Apache libstdcxx library are two other popular
|
||||
candidates, but both lack C++11 support. Our experience (and the
|
||||
experience of libstdc++ developers) is that adding support for C++11 (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.
|
||||
Further, both projects are apparently abandoned: STLport 5.2.1 was
|
||||
released in Oct'08, and STDCXX 4.2.1 in May'08.
|
||||
|
||||
Platform and Compiler Support
|
||||
-----------------------------
|
||||
|
@ -137,15 +136,22 @@ Design Documents
|
|||
|
||||
.. _clow notes: https://cplusplusmusings.wordpress.com/2012/07/05/clang-and-standard-libraries-on-mac-os-x/
|
||||
|
||||
Build Bots
|
||||
-----------
|
||||
|
||||
* `LLVM Buildbot Builders <http://lab.llvm.org:8011/console>`_
|
||||
* `Apple Jenkins Builders <http://lab.llvm.org:8080/green/view/Libcxx/>`_
|
||||
|
||||
Getting Involved
|
||||
================
|
||||
|
||||
First please review our `Developer's Policy <http://llvm.org/docs/DeveloperPolicy.html>`__.
|
||||
First please review our `Developer's Policy <http://llvm.org/docs/DeveloperPolicy.html>`__
|
||||
and `Getting started with LLVM <http://llvm.org/docs/GettingStarted.html>`__.
|
||||
|
||||
**Bug Reports**
|
||||
|
||||
If you think you've found a bug in libc++, please report it using
|
||||
the _`LLVM Bugzilla`. If you're not sure, you
|
||||
the `LLVM Bugzilla`_. If you're not sure, you
|
||||
can post a message to the `cfe-dev`_. mailing list or on IRC.
|
||||
Please include "libc++" in your subject.
|
||||
|
||||
|
@ -153,20 +159,30 @@ Please include "libc++" in your subject.
|
|||
|
||||
If you want to contribute a patch to libc++, the best place for that is
|
||||
`Phabricator <phab doc_>`__. Please include [libcxx] in the subject and
|
||||
add `cfe-commits` as a subscriber.
|
||||
add `cfe-commits` as a subscriber. Also make sure you are subscribed to the
|
||||
`cfe-commits mailing list <cfe-commits_>`__.
|
||||
|
||||
**Discussion and Questions**
|
||||
|
||||
Send discussions and questions to the `clang mailing list <cfe-dev_>`__.
|
||||
Send discussions and questions to the `cfe-dev mailing list <cfe-dev_>`__.
|
||||
Please include [libcxx] in the subject.
|
||||
|
||||
.. _phab doc: http://llvm.org/docs/Phabricator.html
|
||||
.. _cfe-dev: http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
|
||||
|
||||
Links
|
||||
=====
|
||||
|
||||
* `Getting started with LLVM <http://llvm.org/docs/GettingStarted.html>`_
|
||||
Quick Links
|
||||
===========
|
||||
* `LLVM Homepage <llvm_>`__
|
||||
* `libc++abi Homepage <libc++abi_>`__
|
||||
* `LLVM Bugzilla`_
|
||||
* `cfe-commits Mailing List <cfe-commits_>`__
|
||||
* `cfe-dev Mailing List <cfe-dev_>`__
|
||||
* `Browse libc++ -- SVN <http://llvm.org/svn/llvm-project/libcxx/trunk/>`_
|
||||
* `Browse libc++ -- ViewVC <http://llvm.org/viewvc/llvm-project/libcxx/trunk/>`_
|
||||
|
||||
|
||||
.. _`llvm`: http://llvm.org/
|
||||
.. _`libc++abi`: http://libcxxabi.llvm.org/
|
||||
.. _`LLVM Bugzilla`: http://llvm.org/bugs/
|
||||
.. _cfe-dev: http://lists.llvm.org/mailman/listinfo/cfe-dev
|
||||
.. _cfe-commits: http://lists.llvm.org/mailman/listinfo/cfe-commits
|
||||
|
|
Loading…
Reference in New Issue