PSARC 2008/549 Re: Apache Standard C++ Library ARC Case
Garrett D'Amore
gdamore at sun.com
Wed Oct 1 23:17:27 PDT 2008
Stefan Teleman wrote:
> Updated proposal document attached.
Thank you. The document appears fairly comprehensive to me, and if you
can get an explicit agreement from the compiler group to this (they
"have to", because the proposal includes obligations that they must
perform), then I'm happy to accept and vote to approve.
In retrospect, I think this is still out-of-bounds for a fast track, so
"re-railing" the proposal might not be the best thing to do. (It also
seems like there may be opinion matters to publish, as well.)
*But*, if you can get the agreement from the compiler, then I see no
reason why the case couldn't just come for a vote and skip the
inception/commitment review phase.
At this point, I think you should find out when you think you can get
commitment from the compiler group, and then ask Aarti to schedule you a
slot on the ARC agenda.
I'm CC'ing PSARC again, so that the members can see that convergence is
imminent (from my perspective only the compiler group agreement is
required), and to give them an opportunity to voice any concerns about
the points of order, or on the content of the actual case. It also
places this into the mail log for the case, which may be helpful to
future readers.
-- Garrett
Stefan Teleman <stefan.teleman at Sun.COM>
October 1, 2008
PSARC/2008/549
Addendum 1
1. Scope and Intent
This document formalizes the integration and support mechanism
for the Apache Standard C++ Library Version 4.2.1 in Solaris,
based on the discussions already having taken place for this ARC
Case. [0]
The issues addressed in this document are:
1.1. Detailed outline of the Apache Standard C++ Library's
Multibyte Character and Internationalization support.
1.2. Mechanics of integrating the Apache Standard C++ Library
in current versions of Nevada, and in a Solaris 10 Update.
1.3. Mechanics of providing Sun Studio specific command-line
switches for the purpose of transparently enabling inclusion, and
linkage, of the Apache Standard C++ Library for Sun Studio generated
binary objects.
1.4. Defining the responsibility boundaries for the ongoing
inclusion of the current Apache Standard C++ Library, in Nevada,
and in Solaris 10 Updates.
1.5. Recommendations for Solaris developers on the future
directions of the existing libCstd.so.1, STLport4, and the Apache
Standard C++ Library.
2. Internationalization and Multibyte Character Support
2.1. The Apache Standard C++ Library provides multibyte
character support via UTF/UCS encoding, and the wchar_t type.
Conversion between different encodings is achieved via Standard C
Library calls to iconv(3C). Character conversion operations
performed by the Apache Standard C++ Library are transparent
to the application.
2.2. The Apache Standard C++ Library Internationalization
and Message Catalog Support via Standard C Library calls to
catgets(3C). Message Catalogs are managed [ opened and closed ]
via Standard C Library calls to catopen(3C) and catclose(3C).
The Apache Standard C++ Library does not require the application
to make explicit calls to these Standard C Library functions.
Internationalization and Multibyte Character Support is provided
via the Standard C++ Language mechanisms for such facilities.
The Apache Standard C++ Library does not make calls to either
gettext(3C), dgettext(3C), dcgettext(3C), bindtextdomain(3C),
or any of the associated Standard C Library functions.
Programmatic handling of such facilities is purposely delegated
to the application.
The Apache Standard C++ Library provides no explicit facilities
for the storage or run-time discovery of localized message
catalogs. The responsibility for implementing such facilities
is explicitly delegated to the application requiring localization
support. Standard Message Catalog location discovery mechanisms
[ i.e. NLSPATH environment variable ] apply.
3. Proposed course of action
3.1. The SFW Consolidation will integrate Major Version 4
[ currently Version 4.2.1 ] of the Apache Standard C++ Library, in
Nevada, and in a Solaris 10 Update [ the likely candidate is Solaris
10 Update 7 ]. This version of the Apache Standard C++ Library, and
subsequent updates, if any, will be maintained by the DevPro/Compiler
Group, in close cooperation with the SFW Consolidation.
The objects delivered by this integration, and their corresponding
installation paths have been described in PSARC/2008/549 and ancillary
Case Materials.
3.2. The SFW Consolidation will provide pkg-config [ *.pc ]
files for the Apache Standard C++ Library. These files will encode
the correct Sun Studio 12 command-line switches for:
- disabling the inclusion of the existing libCstd.so.1 header
files
- disabling the automatic linking of the existing libCstd.so.1
shared library
- enabling the automatic inclusion of the Apache Standard C++
Library header files
- enabling the automatic linking of the Apache Standard C++
Library [ by implicitly passing -lstdcxx to the link editor ]
Automatic discovery of the correct compiler flags for enabling
the Standard C++ Library in the Sun Studio compilers will be
achieved via simple command-line invocation of the pkg-config
command:
pkg-config --cxxflags stdcxx
pkg-config --ldflags stdcxx
3.3. The SFW Consolidation will provide a default UNIX man
page for the Apache Standard C++ Library [ libstdcxx.3C++ and
a symbolic link to stdcxx.3C++ ]. This man page will detail the
mechanics of disabling the default libCstd.so.1, and enabling the
Apache Standard C++ Library, in Sun Studio 12 and above. The inherent
incompatibility restrictions between different implementations
of the Standard C++ Library, and the consequences of intentionally,
or inadvertently, combining such different implementations into
the same executable address space, will be clearly outlined in this
man page.
3.4. The DevPro/Tools Group will provide integrated command-line
support for the Apache Standard C++ Library starting with Version 12
of the Sun Studio Compilers.
These command-line switches will automatically:
- disable the automatic inclusion of the existing libCstd.so.1
header files
- disable the automatic linkage to the existing libCstd.so.1
shared library
- enable the automatic inclusion of the Apache Standard C++ Library
header files
- enable the automatic linkage to the Apache Standard C++ Library,
by passing -lstdcxx to the link editor
3.5. Prevention of accidental inclusion, or linkage, of
incompatible header files, or shared library objects, will be
enforced by the Compiler, by providing appropriate, disjunctive and
mutually exclusive command-line switches. This document does not
attempt to address the interfaces to be provided for such mutual
exclusion facilities: these considerations are purposely delegated
to a future ARC Case.
4. Future Directions, and Recommendations for Solaris Developers
4.1. With the Integration of the Apache Standard C++ Library,
the facilities provided by the existing STLport4 library have
become incomplete, and redundant. This Integration establishes the
de facto Obsolescence of the STLport4 Standard C++ Library.
It is very strongly recommended that applications which rely on the
STLport4 library migrate to the Apache Standard C++ Library as soon
as possible. In the vast majority of cases, the migration path involves
only a recompilation of the application. The STLport4 Library may be
removed in a future Update Version of Solaris, or in a future release
of Nevada. Prior notification for the removal of the STLport4 Library
will be provided. However, the integration of the Apache Standard C++
Library makes the coexistence of the STLport4 Library highly impractical.
Any new software projects must avoid relying on the STLport4 Library
and must use the Apache Standard C++ Library.
4.2. With the Integration of the Apache Standard C++ Library,
the Solaris C++ Compilation Environment has evolved to a very close
tracking of the ISO/IEC:14882:2003 Standard. It is very strongly
recommended that applications which link against the Solaris
libCstd.so.1 migrate to the Apache Standard C++ Library as soon as
possible. Although there are no current and imminent plans for the
obsolescence, or removal, of the Solaris libCstd.so.1, the Apache
Library's conformance with the C++ Language Standard provides
significant portability and cross-platform maintainability advantages.
It is to be expected that all C++ Software currently delivered by
Solaris, OpenSolaris, or Nevada, will migrate to the Apache Standard
C++ Library. The migration path for existing Solaris C++ Projects
will follow established Sun processes.
4.3. Future versions of OpenSolaris will demonstrate a clear
bias towards the Apache Standard C++ Library. It is highly likely that
in the very near future, OpenSolaris will deliver C++ applications and
shared libraries linked exclusively against the Apache Standard C++
Library.
4.4. The Apache Standard C++ Library is not source, or binary
compatible, with either the STLport4 Library, or with the Solaris
libCstd.so.1 Library. Combining symbols from more than one implementation
of the Standard C++ Library into the same executable address space will
result in severe software malfunctions, including crashes and run-time
failures. It is a software construction error to voluntarily, or
inadvertently, combine symbols from more than one implementation of the
Standard C++ Library, within the same executable address space.
4.5. The contents of this document do not establish ARC Precedent.
5. References
0. PSARC/2008/549 Including The Apache Standard C++ Library
with Solaris
1. The Apache Standard C++ Library http://stdcxx.apache.org/
More information about the opensolaris-arc
mailing list