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/
