Welcome to Boost.org!
Boost provides free peer-reviewed portable C++
source libraries.
We emphasize libraries that work well with the C++
Standard Library. Boost libraries are intended to be
widely useful, and usable across a broad spectrum of
applications. The Boost license encourages
both commercial and non-commercial use.
We aim to establish "existing practice" and
provide reference implementations so that Boost
libraries are suitable for eventual standardization.
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.
Getting
started: Boost works
on almost any modern operating system, including UNIX
and Windows variants. Follow the Getting Started Guide
to download and install Boost. Popular Linux and Unix
distributions such as Fedora, Debian, and NetBSD include pre-built
Boost packages. Boost may also already be available
on your organization's internal web
server.
Background: The Background Information
page has introductory material to help those
educating their organization about Boost.
Participation
Although Boost was begun by members of the C++
Standards Committee Library Working Group,
participation has expanded to include thousands of
programmers from the C++ community at large.
If you are interested in participating in Boost,
please join our main developers mailing
list. Discussions are highly technical, and list
members are encouraged to participate in formal
reviews of proposed libraries. There is also a
users mailing
list, and several project specific
lists.
Both the main Boost developers list and the users
list are also accessible as newsgroups.
Latest News
May 12, 2007 - Version 1.34.0
New Libraries
- Foreach Library:
BOOST_FOREACH macro for easily iterating
over the elements of a sequence, from Eric
Niebler.
- Statechart
Library: Arbitrarily complex finite state
machines can be implemented in easily readable and
maintainable C++ code, from Andreas Huber.
- TR1 Library: An
implementation of the C++ Technical Report on
Standard Library Extensions, from John Maddock.
This library does not itself implement the TR1
components, rather it's a thin wrapper that will
include your standard library's TR1 implementation
(if it has one), otherwise it will include the
Boost Library equivalents, and import them into
namespace
std::tr1 . Highlights
include: Reference Wrappers, Smart Pointers,
result_of, Function Object Binders, Polymorphic
function wrappers, Type Traits, Random Number
Generators and Distributions, Tuples, Fixed Size
Array, Hash Function Objects, Regular Expressions,
and Complex Number Additional Algorithms.
- Typeof
Library: Typeof operator emulation,
from Arkadiy Vertleyb and Peder Holt.
- Xpressive
Library: Regular expressions that can be
written as strings or as expression templates, and
that can refer to each other and themselves
recursively with the power of context-free
grammars, from Eric Niebler.
Updated Libraries
-
Assign
Library:
- Support for
ptr_map<key,T> via the new
function ptr_map_insert()
- Support for initialization of Pointer
Containers when the containers hold
pointers to an abstract base class.
-
Date_time library:
- Support for new US/Canada timezone rules and
other bug fixes. See
Change History
for details.
-
Filesystem
Library: Major upgrade in preparation
for submission to the C++ Standards Committee for
TR2. Changes include:
-
Internationalization, provided by class
templates basic_path,
basic_filesystem_error,
basic_directory_iterator, and
basic_directory_entry.
- Simplification
of the path interface by eliminating special
constructors to identify native formats.
-
Rationalization of predicate function
design, including the addition of several new
functions.
- Clearer specification by reference to
POSIX,
the ISO/IEEE Single Unix Standard, with
provisions for Windows and other operating
systems.
- Preservation
of existing user code whenever possible.
- More
efficient directory iteration.
- Addition of a
recursive directory iterator.
- Function
Library: Boost.Function now implements a
small buffer optimization, which can drastically
improve the performance when copying or
constructing Boost.Function objects storing small
function objects. For instance,
bind(&X:foo, &x, _1, _2)
requires no heap allocation when placed into a
Boost.Function object.
-
Functional/Hash
Library
- Use declarations for standard classes, so
that the library doesn't need to include all of
their headers
- Deprecated the
<boost/functional/hash/*.hpp>
headers.
- Add support for the
BOOST_HASH_NO_EXTENSIONS macro, which
disables the extensions to TR1
- Minor improvements to the hash functions
for floating point numbers.
-
Graph
Library:
- MultiArray
Library: Boost.MultiArray now by default
provides range-checking for
operator[] . Range checking can be
disabled by defining the macro
BOOST_DISABLE_ASSERTS before including
multi_array.hpp. A bug in
multi_array::resize() related
to storage orders was fixed.
-
Multi-index
Containers Library:
-
Optional Library:
boost::none_t and boost::none now added to Optional's documentation
- Relational operators now directly support arguments of type
'T' and 'none_t'
- operator->() now also works with reference types.
- Helper functions
make_optional(val), make_optional(cond,val) and
get_optional_value_or(opt,alternative_value) added.
- Constructor taking a boolean condition (as well as a value) added.
- Member function
get_value_or(alternative_value) added.
- Incompatbility bug with mpl::apply<> fixed.
- Converting assignment bug with uninitialized lvalues fixed.
-
Parameter
Library:
- Every ArgumentPack is now a valid MPL
Forward Sequence.
- Support for unnamed arguments (those whose
keyword is deduced from their types) is
added.
- Support for named and unnamed template
arguments is added.
- New overload generation macros solve the
forwarding problem directly.
- See also the Python library changes,
below.
-
Pointer Container
Library:
- Support for serialization via Boost.Serialization.
- Exceptions can be disabled by defining the
macro BOOST_PTR_CONTAINER_NO_EXCEPTIONS before
including any header. This macro is defined by
default if BOOST_NO_EXCEPTIONS is defined.
- Additional
std::auto_ptr<T> overloads
added s.t. one can also pass
std::auto_ptr<T> instead of
only T* arguments to member
functions.
transfer() now has weaker
requirements s.t. one can transfer objects from
ptr_container<Derived> to
ptr_container<Base> ,
-
Python
Library:
- Boost.Python now automatically appends C++
signatures to docstrings. The new
docstring_options.hpp header is
available to control the content of
docstrings.
-
stl_input_iterator , for
turning a Python iterable object into an STL
input iterator, from Eric Niebler.
- Support for
void* conversions
is added.
- Integrated support for wrapping C++
functions built with the parameter library;
keyword names are automatically known to
docsstrings.
- Enhancements to the API for better embedding support
(
boost::python::import() ,
boost::python::exec() ,
and boost::python::exec_file() ).
- Signals Library:
More improvements to signal invocation performance from
Robert Zeh.
-
Smart
Pointers Library:
-
String Algorithm Library:
lexicographical_compare
join
-
New comparison predicates
is_less , is_not_greater .
-
Negative indexes support (like Perl) in various algorihtms
(
*_head/tail , *_nth ).
-
Wave
Library:
- Wave now correctly recognizes pp-number
tokens as mandated by the C++ Standard, which
are converted to C++ tokens right before they
are returned from the library.
- Several new preprocessing hooks have been
added. For a complete description please refer
to the related documentation page: The
Context Policy.
- Shared library (dll) support has been added
for the generated Wave libraries.
- The overall error handling has been
improved. It is now possible to recover and
continue after an error or a warning was
issued.
- Support for optional comment and/or full
whitespace preservation in the generated output
stream has been added.
- The Wave library now performs automatic
include guard detection to avoid accessing header
files more than once, if appropriate.
- Full interactive mode has been added to the Wave
tool. Now the Wave tool can be used just like Python
or Perl for instance to interactively try out your
BOOST_PP macros. Additionally it is now possible to
load and save the current state of an interactive session
(macro tables et.al.).
- The overall performance has been improved by upto
40-60%, depending on the concrete files to process.
- Support for new pragmas has been added allowing to
control certain library features from inside the
preprocessed sources (partial output redirection,
control of generated whitespace and #line directives).
- Optional support for #pragma message "..."
has been added.
- This version also includes a number of bug
fixes and usage improvements. For a complete
list of changes, see the libraries change log.
Supported Compilers
Boost is tested on a wide range of compilers and
platforms. Since Boost libraries rely on modern C++
features not available in all compilers, not all
Boost libraries will work with every compiler. The
following compilers and platforms have been
extensively tested with Boost, although many other
compilers and platforms will work as well. For more
information, see the regression
test results.
- Apple
GCC 4.0.1 on Mac OS X.
- Borland
C++ 5.8.2 on Windows.
- GNU C++
-
3.2.x., 3.3.x, 3.4.x, 4.0.x, 4.1.x on Linux
-
4.1.x on Solaris
-
3.4.x on Windows
- HP
aC++ A.06.14.
-
Intel C++ 9.1 on Windows, 9.0 on Linux.
- Metrowerks
CodeWarrior 9.4 on Windows.
- Microsoft
Visual C++ 6.0 (sp5, with and without STLport),
7.0, 7.1, 8.0. Note: Boost does not support the
non-standard "Safe" C++ Library shipping with
Visual C++ 8.0, which may result in many spurious
warnings from Boost headers and other
standards-conforming C++ code. To suppress these
warnings, define the macro
_SCL_SECURE_NO_DEPRECATE .
-
Sun Studio 11
on Solaris.
Acknowledgements
Thomas Witt
managed this release.
A great number of people contributed their time
and expertise to make this release possible. Special
thanks go to Vladimir Prus for making Boost.Build version 2
a reality, David Abrahams for authoring a new Getting
Started guide, Rene Rivera for general build and installation support
and Greg D. for answering countless questions.
|