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


Reply via email to