All, I am sponsoring this case for Stefan Teleman from the SFW group. The case directory contains this proposal, the ANSI C++ Standard, 2003 Revision and delivered files appendices. I have set the timeout for Monday, September 1st, 2008.
This project proposes to deliver the Apache Standard C++ library (libstdcxx.so.4) in a Micro/Patch release of Solaris. The inclusion of the Apache Standard C++ Library in Solaris will enable the adoption, of important developments in the evolution of the C++ Language Standard. Most notably, it will enable the building and inclusion of the Boost Framework. Please note: the Apache/RogueWave Standard C++ Library is not binary compatible with the Sun Standard C++ Library [ libCstd.so.1 ], or with the STLport Standard C++ Library. See the proposal for further details. Thanks, John -------------- next part -------------- Including The Apache Standard C++ Library with Solaris Stefan Teleman <stefan.teleman at Sun.COM> 24 August 2008 1. Summary and motivation C++ [1] is a generic purpose programming language designed by Bjarne Stroustroup at AT&T Bell Labs in the 1980's. C++ was designed as a "Better C". [0] The C++ Programming Language became an ANSI/ISO Standard in 1998. [1] In 2005, Rogue Wave Software [3] contributed its commercial implementation of the Standard C++ Library to the Apache stdcxx Project, under the Apache License, Version 2.0. [4] This contribution from Rogue Wave makes available to the Open Source Community an implementation of the Standard C++ Library with more than 10 years of real-life, production experience and acceptance. The Apache/RogueWave Standard C++ Library is known to run on at least the following platforms: AIX, HP-UX, Linux, Solaris, FreeBSD, Windows. The goal of the Apache/RogueWave Standard C++ Library is to provide a free and open source implementation of the ISO/IEC 14882:2003 [ C++ Programming Language + Technical Corrigendum 1] Standard. [1] According to the Project's Web Site: "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" A detailed README containing operating system and compiler and operating system specific Platform Notes is available at: http://stdcxx.apache.org/#platforms The inclusion of the Apache Standard C++ Library in Solaris will enable the adoption, of important developments in the evolution of the C++ Language Standard. Most notably, it will enable the building and inclusion of the Boost Framework. [6] Ten libraries from the Boost Framework are already included in the C++ Standards Committee's Technical Report [ TR1 ], as a step towards inclusion in the next version of the C++ Language Standard. [11] Several other Boost libraries are under active consideration for inclusion in Technical Report 2 [ TR2 ]. [12] This Fasttrack proposes the integration of the latest Stable Version of the Apache Standard C++ Library, Version 4.2.1. [5] This Case seeks Micro/Patch release binding. 2. Technical issues 2.1. Key Objects The complete list of all the Objects and Interfaces provided by ISO/IEC 14882:2003 is extremely large [ the printed version of the C++ Language Standard has more than 800 pages ]. [6] For the purposes of this ARC Case, a full and complete PDF document of the ISO/IEC 14882:2003 Standard, detailing all the Interfaces, will be provided as an Addendum in the ARC Case Materials. /usr/include/stdcxx /usr/include/stdcxx/ansi /usr/include/stdcxx/loc /usr/include/stdcxx/sun /usr/include/stdcxx/rw /usr/include/stdcxx/doc /usr/lib/libstdcxx.so.4.2.1 /usr/lib/libstdcxx.so.4 -> /usr/lib/libstdcxx.so.4.2.1 /usr/lib/libstdcxx.so -> /usr/lib/libstdcxx.so.4.2.1 /usr/lib/pkgconfig/stdcxx.pc /usr/lib/${MACH64}/libstdcxx.so.4.2.1 /usr/lib/${MACH64}/libstdcxx.so.4 -> /usr/lib/${MACH64}/libstdcxx.so.4.2.1 /usr/lib/${MACH64}/libstdcxx.so -> /usr/lib/${MACH64}/libstdcxx.so.4.2.1 /usr/lib/${MACH64}/pkgconfig/stdcxx.pc /usr/share/doc/html/stdcxx/ /usr/share/doc/html/stdcxx/index.html /usr/share/doc/html/stdcxx/banner.gif /usr/share/doc/html/stdcxx/rw.css /usr/share/doc/html/stdcxx/rwbanner.css /usr/share/doc/html/stdcxx/stdlibref/ /usr/share/doc/html/stdcxx/stdlibref/*.html /usr/share/doc/html/stdcxx/stdlibug/ /usr/share/doc/html/stdcxx/stdlibug/*.html For the purpose of maintaing brevity of this document, the complete list of the localization and internationalization support objects delivered by the Apache Standard C++ Library is available in the ARC Case Materials directory, Appendix 2. The Apache Standard C++ Library does not deliver any executables. 2.2. C++ ABI Considerations The Apache/RogueWave Standard C++ Library is not binary compatible with the Sun Standard C++ Library [ libCstd.so.1 ], or with the STLport Standard C++ Library. Applications linked against the Sun Standard C++ Library will malfunction at run-time. Combining shared libraries, or executables linked against libCstd.so.1 and libstdcxx.so.1, or linked against other shared libraries which import both libCstd.so.1 and libstdcxx.so, will also result in run-time software malfunctions. Simply put: the Sun libCstd.so.1 and The Apache Standard C++ Library are mutually exclusive. The Sun Studio 12 [ and earlier releases ] C++ Compiler provides a documented way of avoiding the automatic inclusion of the Sun Standard C++ Library header files: -library=no%Cstd passed to the compiler. 2.3. C++ Language Considerations The Apache/RogueWave Standard C++ Library is written in Standard C++. The library compiles correctly with the Sun Studio 12 compilers, in both 32- and 64- bit, on Intel and SPARC ISA's. The Apache Standard C++ Library Project supports the Sun Studio compilers. [2] 2.4. Internationalization The Apache Standard C++ Library provides full support for internationalization and localization through Native Language Support and multibyte [ wchar_t ] character support. The canonical release of stdcxx delivers 196 character maps and NLS support for 166 languages. The full Internationalization support provided by The Apache Standard C++ Library will be included with this Integration. 2.5. Documentation The Apache Standard C++ Library provides a full documentation set in HTML format. This documentation set will be included with the Standard C++ Library Integration. 3. Interfaces 3.1. Interface Stability The Apache Standard C++ Library maintains ABI compatibility within Major Releases. No ABI incompatible changes are to be expected within the boundaries of a Major Standard C++ Library Release. Considering that this Fasttrack proposes the integration of an existing ANSI/ISO/IEC Standard, an overall "Committed" Interface Stability Classification is appropriate, and desirable for this Integration. 3.2. Imported Interfaces The Standard C++ Library imports interfaces from the Standard C Library, the Standard Math Library, and the Sun C++ Runtime Library [ libCrun.so.1 ]. 3.3. Exported Interfaces The Standard C++ Library exports the interfaces mandated by the C++ Language Standard, including Technical Corrigendum 1 [ ISO/IEC 14882:2003 ] [1] [7]. A detailed listing of the Standard C++ Library's exported interfaces will be provided in the Additional Case Materials for this Fasttrack. The canonical distribution of The Apache Standard C++ Library delivers the following Mandatory C++ header files: /usr/include/stdcxx/ansi/cassert /usr/include/stdcxx/ansi/cctype /usr/include/stdcxx/ansi/cerrno /usr/include/stdcxx/ansi/cfloat /usr/include/stdcxx/ansi/ciso646 /usr/include/stdcxx/ansi/climits /usr/include/stdcxx/ansi/clocale /usr/include/stdcxx/ansi/cmath /usr/include/stdcxx/ansi/csetjmp /usr/include/stdcxx/ansi/csignal /usr/include/stdcxx/ansi/cstdarg /usr/include/stdcxx/ansi/cstddef /usr/include/stdcxx/ansi/cstdio /usr/include/stdcxx/ansi/cstdlib /usr/include/stdcxx/ansi/cstring /usr/include/stdcxx/ansi/ctime /usr/include/stdcxx/ansi/cwchar /usr/include/stdcxx/ansi/cwctype /usr/include/stdcxx/tr1/array /usr/include/stdcxx/tr1/cstdint In addition, the Apache Standard C++ Library relies on the availability of three compiler-specific C++ header files: /usr/include/stdcxx/exception /usr/include/stdcxx/new /usr/include/stdcxx/typeinfo The canonical distribution of the Apache Standard C++ Library delivers a complete set of the Mandatory Standard C++ Library header files, along with a complementary set of the Standard C Library header files. The Standard C Library header files delievered by the Library are not 100% compatible with their Solaris equivalents. Therefore, these files will not be delivered with this Integration. For the purposes of this Integration, and for the purpose of maintaining binary compatibility with the Solaris C runtime, and with the Sun Studio Compilers, The Apache Standard C++ Library will be built and integrated with Sun specific Mandatory Standard C++ Library forwarding header files. [9] A complete list of the header files delivered by the Standard C++ Library is available in the ARC Case Materials directory, in Appendix 1. [4]. Programmatic Facilities Compiling C++ programs with the Apache Standard C++ Library, and without introducing conflicts with the default Sun Standard C++ Library, can be easily achieved by passing specific include directories, and options, to the Sun Studio compiler: 4.1. Include files: -I/usr/include/stdcxx/ansi -I/usr/include/stdcxx/tr1 -I/usr/include/stdcxx 4.2. Libraries: -lstdcxx 4.3. Binding SONAME: The Apache Standard C++ Library will have a binding SONAME of libstdcxx.so.4. [4]. References [0] http://www.research.att.com/~bs/C++.html [1] http://www.open-std.org/jtc1/sc22/wg21/ [2] http://stdcxx.apache.org/ [3] http://www.roguewave.com/ [4] http://www.apache.org/licenses/LICENSE-2.0 [5] http://incubator.apache.org/stdcxx/download.html [6] http://www.boost.org/ [7] http://www.amazon.com/C%2B%2B-Standard-Incorporating-Technical-Corrigendum/dp/0470846747/ref=pd_bbs_1?ie=UTF8&s=books&qid=1197413379&sr=1-1 [8] PSARC/1999/192 http://www.opensolaris.org/os/community/arc/caselog/1999/ [9] Sun C++ ABI 5.0: LSARC/1994/323 LSARC/1997/150 LSARC/2000/211 et. seq. [10] PSARC/2002/348 http://www.opensolaris.org/os/community/arc/caselog/2002/ [11] http://open-std.org/jtc1/sc22/wg21/docs/library_technical_report.html http://en.wikipedia.org/wiki/Technical_Report_1 [12] http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1810.html http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2122.htm