Apache C++ Standard Library (STDCXX)
What is the Apache C++ Standard Library?
The Apache C++ Standard Library project (code name stdcxx, pronounced "standard C++ library", not S-T-D-C-X-X) is a collection of algorithms, containers, iterators, and other fundamental components of every piece of software, implemented as C++ classes, templates, and functions essential for writing C++ programs.
The goal of the Apache C++ Standard Library is to provide a free implementation of the ISO/IEC 14882 international standard for C++ that enables source code portability and consistent behavior of programs across all major hardware implementations, operating systems, and compilers, open source and commercial alike. An additional goal is to achieve maximum implementation efficiency on each platform by taking advantage of platform-specific high-performance facilities and features which are often unique to the type of hardware, the operating system or the compiler.
As the starting point for future efforts, in summer 2005 Rogue Wave Software has contributed its commercial implementation of the C++ Standard Library to the Apache stdcxx project, a proven code base that has been shipping for over a decade and is among the most widely used cross-platform implementations of the library.
The key features of the stdcxx project at the time of submission include:
- Full conformance to the C++ standard
- Complete implementation of the localization library independent of the underlying operating system, including a large set of locale definition files, character set description files, and utility programs to process these files and generate locale databases
- User control over strict or permissive conformance checking
- Thread-safe implementation of strings, iostreams, and locales
-
Reference counted
basic_string
implementation using atomic locking with the ability to switch to a non-reference counted implementation - Excellent runtime performance
- Optimized for fast compiles and extremely small executable file sizes
- Portable to and fully tested on a large set of operating systems, including AIX, HP-UX, Linux, Solaris, Windows, etc.
- Portable to most leading commercial as well as open source compilers
- Debugging facilities such as safe iterators, precondition and postcondition checking, and the ability to generate stack traces
- Fully documented configuration and build infrastructure
- Thorough, well-maintained documentation
- Ten years of deployment in the world's most critical enterprise systems
Objectives
The long-term objectives of the project include:
- Standards Conformance. Continue to closely track the C++ Standard, as well as any other relevant standards.
- Portablity. Continue to provide support for a broad set of platforms (C++ compilers, operating systems, and hardware architectures).
- Quality of Implementation. Maintain the current high quality of implementation, which has come to be expected of all Apache projects. This ranges from high runtime efficiency to high space efficiency, to high portability of data (in areas such as localization and internationalization which are typically not specified by the C++ or C standards), to facilitating the portability of program source code.
Project News
- 5/1/2008 STDCXX 4.2.1 released.
- 12/14/2007 STDCXX graduates from the Incubator and becomes a Top Level Project.
- 11/29/2007 STDCXX community adds a new committer, Travis Vitek.
- 10/29/2007 With the approval of the Incubator PMC, STDCXX 4.2.0 was released.
- 10/16/2007 Proposal to graduate STDCXX to a Top Level Project passes the Incubator PMC vote.
- 9/5/2007 STDCXX community adds two new committers, Eric (Brad) Lemings and Mark Brown.
- 10/11/2006 STDCXX community adds a new committer, Andrew Black.
- 8/26/2007 Started tracking project metrics at www.ohloh.net under Apache C++ Standard Library.
- 6/1/2007 Started tracking site visitation at Google Analytics under stdcxx. Send an email from your Google Mail account to dev to request access to the account.
- 3/26/2007 Tim Triemstra joins the PPMC.
- 2/13/2007 Andrew Black and Farid Zaripov join the PPMC.
- 10/11/2006 STDCXX community adds a new committer, Andrew Black.
- 8/10/2006 STDCXX community adds a new committer, Farid Zaripov.
- 1/30/2006 With the approval of the Incubator PMC, STDCXX 4.1.3 was released.
- 1/13/2006 STDCXX community adds a new committer, Anton Pevtsov.
- 11/25/2005 Windows configuration and build infarstructure committed to Subversion (stdcxx-5).
- 9/16/2005 The first snapshot of stdcxx 4.1.2 has been published.
- 9/5/2005 The test suite driver committed to Subversion (stdcxx-3).
- 9/1/2005 A proposal to publish the first stdcxx snapshot on the stdcxx Web site has passed the community vote.
- 8/28/2005 The process of downloading stdcxx files documented on the Download page. (See stdcxx-17).
- 8/01/2005 The process of reporting bugs in the stdcxx bug tracking database documented and published on the Bugs page. (See stdcxx-9.)
- 7/19/2005 stdcxx project page committed to Subversion. The project status page committed to Subversion.
- 7/18/2005 stdcxx sources and documentation committed Subversion.
- 5/19/2005 stdcxx project accepted for incubation.
- 5/13/2005 stdcxx project proposal submitted to the Incubator mailing list.
Platforms
A key stdcxx objective is to facilitate the portability of C++ programs to as many platforms (hardware architectures, operating systems, and compilers) as practical. It is envisaged that the set of platforms will evolve and grow as the project attracts contributors.
The project sources initially committed to the Subversion repository (revision 219596) are based on Rogue Wave C++ Standard Library version 4.1.0. The list of platforms to which this version of the project was ported (but which is expected to grow as the stdcxx project evolves) is:
compiler | operating system | processor/architecture |
---|---|---|
Comeau C++ 4.2.4 or later | Solaris 7 or later | UltraSPARC |
Compaq C++ 6.3 or later | Tru64 UNIX | Alpha |
EDG eccp 2.45.2 or later | Linux, Solaris 7 or later | x86, UltraSPARC | GNU gcc 2.95.2 or later | AIX, Cygwin, HP-UX, Linux, SFU, Solaris |
HP aC++ 3.33 or later | HP-UX 11.00, HP-UX 11i HP-UX 11i v2 | PA-RISC |
HP aC++ 5.50 or later | HP-UX 11i v1.5 , HP-UX 11i v1.6 HP-UX 11i v2 | IPF |
IBM VisualAge C++ 5.0 or later | AIX 4.3.3 or later | PowerPC |
IBM XL C/C++ 7.0 or later | AIX 5.2 or later, Linux | PowerPC |
Intel C++ 7.0 or later | Linux, Windows NT or later | x86, AMD64 , EM64T, IA64 |
SGI MIPSpro 7.3 or later | SGI IRIX | MIPS |
Visual C++ 6.0 | Windows NT or later | x86 |
Visual C++ .NET 2002 (7.0) | Windows 2003 or later | IA64 |
Visual C++ 2005 (8.0) | Windows 2003 or later | IA64 |
Sun C++ 5.3 or later | Solaris 2.6 or later | UltraSPARC |
Sun C++ 5.7 or later | Solaris 10 or later | x86, AMD64, EM64T |
Project Status
Stdcxx status reports to the ASF Board of Directors are stored in the status/ subdirectory of the site.
Users
Stdcxx Users are Developers with read-only access, i.e., without Commit Access to the stdcxx Codebase who are using the project.
The mailing list appropriate for discussions of using the stdcxx project is user@stdcxx.apache.org. This is an archived, moderated mailing list open to all subscribers. You may subscribe by sending a blank email to user-subscribe@stdcxx.apache.org. To obtain additional information about this list send a blank email to user-info@stdcxx.apache.org.
Contributors
Stdcxx Contributors are Developers without commit (or write) access to the stdcxx codebase who directly or otherwise make improvements to the project codebase, including its Web pages. This includes but is not limited to individuals who respond to questions on the project's mailing lists, review and provide helpful feedback on patches or commits, submit, provide helpful comments on, or triage bug reports, or contribute useful patches of their own. Interested contributors may be voted to become Committers after a period of valuable activity.
Because Contributors have read but not write access to stdcxx code repository, they can check stdcxx out and make changes to their local copy of stdcxx files but they cannot check them back in. To get their changes committed, they must follow the process for Submitting Patches.
The stdcxx community welcomes new contributors. If you are interested in getting involved, the first thing to do after reading the project Web pages is to subscribe to the dev mailing list and skimming the archives. If you're looking for ideas for where your help might be needed, browse the bug database or simply ask on the maling list.
Committers
Stdcxx Committers are Developers with commit (or write) access to the stdcxx codebase. For safe changes on trunk all stdcxx committers follow the Commit-Then-Review policy (CTR for short). For potentially unsafe changes or any changes to branches all stdcxx committers follow the Review-Then-Commit policy (RTC for short). Whether a change is safe or not is a judgment call that should be made after careful testing of the change on at least two different platforms with two different compilers. The list of current committers in alphabetical order is below:
user id | name/email | affiliation | since | comment |
---|---|---|---|---|
ablack | Andrew Black | Rogue Wave Software, Inc. | Oct 11, 2006 | |
mbrown | Mark Brown | Sep 5, 2007 | ||
hbuelow | Heidi Buelow | May 19, 2005 | Emeritus | |
ldiduck | Lance Diduck | May 19, 2005 | ||
jhollis | John Hollis | Rogue Wave Software, Inc. | May 19, 2005 | Emeritus |
ajindal | Amit Jindal | Aquevix, Ltd. | May 19, 2005 | |
elemings | Eric (Brad) Lemings | Sep 5, 2007 | ||
lnicoara | Liviu Nicoara | May 19, 2005 | ||
rpalepu | Ravi Palepu | May 19, 2005 | Emeritus | |
antonp | Anton Pevtsov | VDI | Jan 3, 2006 | |
sebor | Martin Sebor | Cisco Systems, Inc. | May 19, 2005 | |
ttriemstra | Tim Triemstra | Apple | May 19, 2005 | |
vitek | Travis Vitek | Rogue Wave Software, Inc. | November 29, 2007 | |
faridz | Farid Zaripov | EPAM | Aug 10, 2006 |
Committers in italics do not yet have a signed Contributor License Agreement on file. This indicates a transient state after a committer has been voted in but their CLA hasn't been received or processed by the foundation.
An up-to-date list of all Apache committers (or committers-to-be) is being maintained by Jim Jagielski on this page.
The mailing list used by stdcxx committers for discussions of the maintenance, development, and porting of the stdcxx project is dev@stdcxx.apache.org. This is an archived, moderated mailing list open to all subscribers. You may subscribe by sending a blank email to dev-subscribe@stdcxx.apache.org.
PMC
The stdcxx Project Management Committee (PMC) is a group of volunteers responsible for the formal oversight of the stdcxx podling, its management, and for interfacing with the Apache Board of Directors. The members of the stdcxx PMC are:
user id | name/contact | comment |
---|---|---|
ablack | Andrew Black | |
mbrown | Mark Brown | |
hbuelow | Heidi Buelow | |
jerenkrantz | Justin Erenkrantz | |
ajindal | Amit Jindal | |
elemings | Eric (Brad) Lemings | |
lnicoara | Liviu Nicoara | |
apevtsov | Anton Pevtsov | |
wrowe | William A. Rowe, Jr. | |
sebor | Martin Sebor | PMC Chair |
ttriemstra | Tim Triemstra | |
faridz | Farid Zaripov |
The PMC mailing list is private@stdcxx.apache.org. This is a moderated, by-invitation-only mailing list closed to the public. Invited individuals can subscribe by sending a blank email to private-subscribe@stdcxx.apache.org.
An example of a topic that might be appropriate for this list is a discussion of the merits of a proposed committer.
Communication
Communication about the project and all decisions take place on the project's mailing lists. There are a number good reasons why communicating on mailing lists is preferable to other ways of communicating, including private email or instant messaging. Some of the important ones include:
- Unlike communicating in private, mailing lists make it possible for all list subscribers to benefit from the discussion, and provides an opportunity for those who wouldn't be invited to the private discussion to offer their own feedback on the subject.
- Unlike Instant Messaging, mailing list make it possible for interested parties to participate asynchronously, regardless of which time zone they are located in.
- Unlike private communications, mailing list discussions are archived for future reference, with the archives being easily searchable by anyone interested. Mailing list archives are important not just so that new contributors can learn from past decisions but they are an indispensable tool also for long-time committers when we forget why certain things were done a certain way.
- It is the preferred mode of communicating for all Apache projects. See the Communication section of How the ASF works.
If you choose to contact one of the project committers in private expect to be directed to the mailing lists.
Mailing Lists
The following table provides a summary of information about stdcxx mailing lists along with a number of interfaces to their archives. All lists are moderated. Only subscribers may post. Subscription to private is by invitation of the PMC only. With one exception, the activity of each list is monitored and can be viewed along with other interesting information on this page maintained by Ken Coar.
name | subscribe | raw archives | Apache archive | Nabble Forums | The Mail Archive | MARC | activity |
---|---|---|---|---|---|---|---|
dev | dev-subscribe | mail/dev | mod_mbox | stdcxx-dev forum | dev | apache-stdcxx-dev | stats |
user | user-subscribe | mail/user | mod_mbox | stdcxx-user forum | user | apache-stdcxx-user | stats |
commits | commits-subscribe | mail/commits | mod_mbox | stdcxx-commits forum | commits | apache-stdcxx-commits | stats |
issues | issues-subscribe | mail/issues | mod_mbox | stdcxx-issues forum | issues | apache-stdcxx-issues | stats |
private | private-subscribe | N/A | N/A | N/A | N/A | N/A | N/A |
References
A number of excellent design and programming books describe the C++ Standard Library in an approachable way. In addition, besides the required Class Reference, this implementation of the library also includes an extensive User Guide complete with tutorials and example programs. That being said, the ultimate reference to the C++ Standard Library is, of course, the C++ Standard itself (and to a smaller extent, also the C Standard). An electronic copy of the most recent version of the C++ and C standards can be obtained from the ANSI eStandards store.
- INCITS/ISO/IEC 14882-2003 Programming Languages C++
- INCITS/ISO/IEC 9899-1999 Programming Languages C
- The C++ Standard Library: A Tutorial and Reference by Nicolai M. Josuttis
- Generic Programming and the STL: Using and Extending the C++ Standard Template Library by Matthew H. Austern
- Stl Tutorial & Reference Guide: C++ Programming With the Standard Template Library by David R. Musser and Atul Saini
- The C++ Standard Template Library by P.J. Plauger, Alexander A. Stepanov, Meng Lee, and David R. Musser
- Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library by Scott Meyers
- Standard C++ IOStreams and Locales: Advanced Programmer's Guide and Reference by Angelika Langer, Klaus Kreft