FYI, in case you are not subscribed to the sfwnv-discuss list: i have submitted this Fasttrack below as an RFC Draft.
--Stefan ----- -------- Original Message -------- Subject: RFC: [DRAFT] : FastTrack : Including the Apache Standard C++ Library with Solaris Date: Tue, 11 Dec 2007 22:11:53 -0500 From: Stefan Teleman <[email protected]> Reply-To: stefan.teleman at sun.com Organization: Sun Microsystems, Inc. To: SFW-NV Discuss <sfwnv-discuss at opensolaris.org> CC: Stefan Teleman <stefan.teleman at sun.com> Including The Apache/RogueWave Standard C++ Library with Solaris Stefan Teleman <stefan.teleman at Sun.COM> 11 December 2007 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://svn.apache.org/repos/asf/incubator/stdcxx/trunk/README 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.0. [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/stdcxx/4/include/ /usr/stdcxx/4/include/ansi/ /usr/stdcxx/4/include/loc/ /usr/stdcxx/4/include/sun/ /usr/stdcxx/4/include/rw/ /usr/sdtcxx/4/include/tr1/ /usr/stdcxx/4/lib/libstdcxx.so.4.2.0 /usr/stdcxx/4/lib/libstdcxx.so.4 -> /usr/stdcxx/4/lib/libstdcxx.so.4.2.0 /usr/stdcxx/4/lib/libstdcxx.so -> /usr/stdcxx/4/lib/libstdcxx.so.4.2.0 /usr/stdcxx/4/lib/${MACH64}/libstdcxx.so.4.2.0 /usr/stdcxx/4/lib/${MACH64}/libstdcxx.so.4 -> /usr/stdcxx/4/lib/${MACH64}/libstdcxx.so.4.2.0 /usr/stdcxx/4/lib/${MACH64}/libstdcxx.so -> /usr/stdcxx/4/lib/${MACH64}/libstdcxx.so.4.2.0 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/RogueWave 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. In order to accommodate the coexistence of different Major Release Versions of the Standard C++ Library, this Fasttrack proposes a directory layout structure modeled after Perl 5 [ PSARC/1999/192 ] [7]: /usr/stdcxx/[major-version]/lib/ /usr/stdcxx/[major-version]/lib/nls/ /usr/stdcxx/[major-version]/lib/${MACH64}/ /usr/stdcxx/[major-version]/lib/${MACH64}/nls/ /usr/stdcxx/[major-version]/include/ 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: [$C++]/include/ansi/cassert [$C++]/include/ansi/cctype [$C++]/include/ansi/cerrno [$C++]/include/ansi/cfloat [$C++]/include/ansi/ciso646 [$C++]/include/ansi/climits [$C++]/include/ansi/clocale [$C++]/include/ansi/cmath [$C++]/include/ansi/csetjmp [$C++]/include/ansi/csignal [$C++]/include/ansi/cstdarg [$C++]/include/ansi/cstddef [$C++]/include/ansi/cstdio [$C++]/include/ansi/cstdlib [$C++]/include/ansi/cstring [$C++]/include/ansi/ctime [$C++]/include/ansi/cwchar [$C++]/include/ansi/cwctype In addition, the Apache Standard C++ Library relies on the availability of three compiler-specific C++ header files: [$C++]/include/exception [$C++]/include/new [$C++]/include/typeinfo 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 the corresponding Sun Studio header files. [9] [4]. References [0] http://www.research.att.com/~bs/C++.html [1] http://www.open-std.org/jtc1/sc22/wg21/ [2] http://incubator.apache.org/stdcxx/ [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 -- Stefan Teleman Sun Microsystems, Inc. stefan.teleman at Sun.COM
