Font size:      

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

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:

Platforms
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.

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.

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.