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.
|