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/


Reply via email to