December 6, 2005
This article was contributed by Matthew Vogt
Whatever type of software you develop, there probably exists an
open-source C++ library that can help you avoid re-inventing the wheel.
However, C++ offers no
analog of Perl's CPAN or Java's extensive environment, so it can be
difficult to find code of sufficiently high quality which can be easily
integrated with code from other sources. In recent years, the Boost C++
Libraries have become the place where a C++ developer should look first
when seeking quality open-source C++ components.
Boost is the product of
an informal group of C++ programmers developing free
open-source libraries that are high-quality, portable and
widely useful.
The Boost C++ Libraries provide components that can be employed in just
about every development project. Boost libraries are among the most
powerful and portable components in the world of C++ development.
Whereas the quality of open-source code is often an unknown quantity,
the standard of code distributed in the Boost distribution is remarkably
high, owing to the
extensive peer review process required to accept
libraries into the distribution. Each library in the Boost distribution
has been reviewed by the Boost developers and accepted through an open
voting process, ensuring a
consistently high level of quality, and an
adherence to principles of the C++ community. Boost libraries are
designed to work well with the C++ Standard Library, and other libraries
designed around the principles embodied in the Standard Library. Boost
libraries are loosely-coupled, and designed so that you can use only
what you need, without trying to provide an all-encompassing
environment.
Boost libraries are all released under the
Boost Software License,
an
extremely permissive license which is designed to make the libraries
equally useful to commercial and non-commercial developers. The Boost
Software License is very similar to the
MIT License, with the major
difference that object code derived from Boost-licensed source code can
be redistributed without the reproduction of copyright messages. This is
required to permit all developers to use Boost libraries in all of their
code, without concern over eventual distribution requirements.
The current version of the Boost Libraries is Version 1.33.1, released
on December 5, 2005. It contains
63 libraries
to assist C++ developers. Many of these libraries are useful in a
broad range of application development, such as the
threads library,
the
regular expression library, the
portable filesystem library and the
smart-pointer library. Other Boost libraries help to make C++ a
more expressive and productive language in which to develop. These
libraries include the generalized
function
and bind
facilities, the
signals library
and support for named (rather than positional)
function arguments.
Finally, Boost also contains libraries that are designed to help
C++ developers improve their own libraries; examples include the
concept-checking library, the
unit testing library, the library for developing
iterators and that for
accessing type traits.
Perhaps the best reason to use Boost, however, is because of its
contribution to the C++ Standard Library: using the Boost libraries
today is a foretaste of the next C++ Standard Library revision. The C++
standards committee favor the standardization of proposals that have
proven their worth in real-world use. Boost is an ideal proving ground
for such proposals, and this has been demonstrated in the
Proposed Draft Technical Report on C++ Library extensions
(PDF), known as 'TR1',
the first specification of likely additions to the next C++ standard.
Ten of the fourteen included proposals were implemented first as Boost
libraries, and proven mature and robust in the Boost distribution.
Other Boost libraries have been proposed for acceptance into the next
Technical Report ('TR2'), open until October 1, 2006.
Boost development is ongoing, you can participate by joining the
mailing list
for development, or the
boost-users mailing list
to discuss using the Boost libraries in your development work.
(
Log in to post comments)