BOOST C++ Framework [PSARC/2008/752]
John Fischer
John.Fischer at sun.com
Thu Dec 4 09:19:00 PST 2008
PSARC,
I am sponsoring this case for Stefan Teleman from the SWF group
in Menlo Park. The case directory contains this proposal and
the BOOST documentation which can be accessed via:
http://sac.eng/Archives/CaseLog/arc/PSARC/2008/752/materials/boost-doc-1.37.0/
I have set the timeout for Thursday, December 11th, 2008.
This project proposes to include the BOOST C++ Framework within
a Minor release of Solaris. BOOST allows for Parallel versions
to be installed on a system. This project will install BOOST
into /usr/include/boost/<Major>.<Minor>.<Micro> and /usr/lib
with the library SONAME corresponding to the Major/Minor/Micro
name scheme. BOOST depends upon the previous Standard C++ Library
provided by the platform specific C++ Compliation and Run-Time
Environment.
Thanks,
John
-------------- next part --------------
Including the BOOST C++ Framework with Solaris
Stefan Teleman <stefan.teleman at Sun.COM>
03 December 2008
1. Summary and motivation
The BOOST C++ Framework is a Collection of Open Source,
portable C++ source and object libraries. BOOST is designed
with concern for portability and Standard C++ compatibility
first and foremost. [0]
BOOST seeks to establish existing practice precedent, and to
provide reference implementations suitable for eventual
standardization.
To this effect, BOOST's Home Page states: "Ten Boost libraries are
already included in the C++ Standards Committee's Library Technical
Report [TR1] as a step toward becoming part of a future C++ Standard.
More Boost libraries are proposed for the upcoming TR2." [1] [2]
This FastTrack proposes the integration of the latest Stable BOOST
Release, Version 1.37.0.
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
BOOST is very large. For the purposes of this ARC Case,
and in order to maintain brevity of this document, a full and
complete document set detailing all the Intefaces and Objects
delivered by BOOST will be provided as an Addendum in the ARC
Case Materials. This documentation is provided by the BOOST Project.
BOOST delivers both source code and shared library objects.
This mixed object delivery mechanism is consistent with the design
of the C++ Programming Language. [3]
A high-level overview of a canonical BOOST distribution
outlines the following directory structure:
[$BOOST]/include/
[$BOOST]/include/boost/
[$BOOST]/include/boost/<Major>.<Minor>.<Micro>
[$BOOST]/lib/
[$BOOST]/lib/${MACH64}
For the purposes of this Document, [$BOOST] revers to the root
directory installation of a particular BOOST release.
This Integration will deliver BOOST objects under /usr, following
the recommendations set forth by PSARC/2005/185. [4]
BOOST's construction and installation mechanisms allow for the
coexistence of several BOOST versions by default. This facility
is provided via two different mechanisms:
- For header files, each BOOST release installs its
header files under a versioned subdirectory.
- For shared libraries, the library name, and its
binding SONAME hardcode the corresponding Major/Minor/Micro
triad.
Further details about facilitating the correct and complete BOOST
object discovery mechanisms are discussed below.
BOOST delivers no executables.
2.2. C++ ABI Considerations
BOOST is dependent on the Standard C++ Library provided by the
platform specific C++ Compliation and Run-Time Environment.
As such, all the C++ ABI considerations, and the precedent
established by PSARC/2008/549 apply to this BOOST Integration.
[5]
2.3. Internationalization
BOOST provides full support for internationalization and
localization through Native Language Support and multibyte
[ wchar_t ] character support, if such support is provided
by the platform specific Standard C++ Library. In addition,
BOOST imports Interfaces from International Components
for Unicode [ ICU ]. [6] Details about external Interfaces
imported by BOOST are further discussed below. Implementation
detail particulars for Internationalization and Localization
are purposely delegated to the application importing BOOST
interfaces, with the presumption that BOOST maintains full
compatibility with the Standard C++ Library provided by the
C++ Run-Time Environment.
2.4. Documentation
BOOST provides a full documentation set in HTML support. This
documentation set will be included with this BOOST Integration.
3. Interfaces
3.1. Interface Stability
In general, the Interface Stability commitment provided by
BOOST can be [ in theory ] divided in two high-level categories:
- Committed -- for those BOOST Interfaces which
have been adopted as part of the C++ Standard.
- Uncommitted -- for those BOOST Interfaces which
have not yet been adopted by the C++ Standard, or
which are not being considered for adoption.
However, in certain cases, the C++ Standard has modified some of
the Interfaces adopted from BOOST, and in other cases, has adopted
these interfaces verbatim. [2]
This ARC Case recommends an overall Uncommited Interface
Stability Classification for BOOST. The BOOST Interfaces adopted
by the C++ Standard will acquire a Committed Classification
by virtue of the C++ Standard's Interface Classification.
Conflict resolution between competing [ but not functionally
or ABI equivalent ] Interfaces will be resolved at compile time
via Standard C++ Namespace Resolution Mechanmism.
3.2. Interface Dependencies and Compatibility
BOOST can optionally import Interfaces from International
Components for Unicode [ ICU ], and from Python. [7]
Python interfaces do not create ABI compatibility problems, since
they are written in C. ICU Interfaces [ being written in C++ ]
create the whole gamut of compatibility constraints described in
detail in PSARC/2008/549 [ Apache Standard C++ Library ].
For the purpose of this Integration, C++ Interface or ABI
compatibility requirements will be satisfied by observing the
C++ software construction constraints set forth by PSARC/2008/549.
In addition to Python and ICU, BOOST imports interfaces from
the Standard C Library and the Standard Math Library.
4. Programmatic Facilities
Compiling C++ Programs with the BOOST Framework requires
additional header files to be added to the Compiler's header
files discovery paths. For the purpose of facilitating the
discovery of the correct and complete BOOST header files,
and of the corresponding BOOST libraries, this Integration
will deliver additional pkg-config files:
/usr/lib/pkgconfig/boost$VERSION.pc
/usr/lib/${MACH64}/pkgconfig/boost$VERSION.pc
where $VERSION represents the BOOST Major/Minor/Micro Version
Triad.
5. References
[0] http://www.boost.org/
[1] http://www.open-std.org/jtc1/sc22/wg21/
[2] http://www.aristeia.com/EC3E/TR1_info.html
[3] http://www.open-std.org/jtc1/sc22/wg21/docs/standards#14882
[4] PSARC/2005/185
[5] PSARC/2008/549
[6] http://www.icu-project.org/
[7] http://www.python.org/
More information about the opensolaris-arc
mailing list