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