#

“...one of the most highly regarded and expertly designed C++ library projects in the world.” — Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

# 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 ### August 11, 2005 - Version 1.33.0 #### New Libraries Iostreams Library: Framework for defining streams, stream buffers and i/o filters, from Jonathan Turkanis. Functional/Hash Library: A TR1 hash function object that can be extended to hash user defined types, from Daniel James. Parameter Library: Write functions that accept arguments by name: especially useful when a function has more than one argument with a useful default value, since named arguments can be passed in any order. Pointer Container Library: Containers for storing heap-allocated polymorphic objects to ease OO-programming, from Thorsten Ottosen. Wave: Standards conformant implementation of the mandated C99/C++ preprocessor functionality packed behind an easy to use iterator interface, from Hartmut Kaiser. #### Updated Libraries Assignment Library: Support for Pointer Container Library and new efficient functions `ref_list_of()` and `cref_list_of()` for generating anonymous ranges. Bind Library: Bind expressions now support comparisons and negation. Example: `bind(&X::name, _1) < bind(&X::name, _2)`. Date-Time Library: Added local time and time zone classes. Added format-based Input/Output facets. For a complete list of changes, see the library change history. Graph Library: Introduced several new algorithms and improved existing algorithms: Experimental Python bindings, from Doug Gregor and Indiana University. `floyd warshall all pairs shortest paths`, from Lauren Foutz and Scott Hill. `astar search`, from Kristopher Beevers and Jufeng Peng. `fruchterman reingold force directed layout`, from Doug Gregor and Indiana University. `biconnected components` and `articulation points`, from Jeremy Siek, Janusz Piwowarski, and Doug Gregor. `sequential vertex coloring` has been updated, tested, and documented. `gursoy atun layout`, from Jeremiah Willcock and Doug Gregor of Indiana University. `king ordering`, from D. Kevin McGrath of Indiana University. `cuthill mckee ordering` has been recast as an invocation of `breadth first search` and now supports graphs with multiple components. `dijkstra shortest paths` now uses a relaxed heap [61] as its priority queue, improving its complexity to O(V log V) and improving real-world performance for larger graphs. `read graphviz` now has a new, Spirit-based parser that works for all graph types and supports arbitrary properties on the graph, from Ron Garcia. The old, Bison-based GraphViz reader has been deprecated and will be removed in a future Boost release. `write graphviz` also supports dynamic properties. `subgraph`: `get_property` now refers to the subgraph property, not the root graph's property. See the history for additional changes and bug fixes. Multi-index Containers Library: New hashed indices. Added serialization support. For a complete list of changes, see the library release notes. Program Options Library: Option descriptions are now printed with word wrapping. Command line parser can bypass unregistered options, instread of throwing. Removed support for "implicit" (optional) values. New customization method 'command_line_parser::extra_style_parser'. Unlike 'additional_parser', allows the user to parse several tokens and return a vector of options, not just a single option. Work with disabled exceptions. Property Map Library: Introduced the `dynamic properties` class, which provides dynamically-typed access to a set of property maps. Random Number Library: improved initialization for `mersenne_twister`, algorithm by Makoto Matsumoto and Takuji Nishimura, implemented for Boost by Jens Maurer. Note: All test vectors for `mersenne_twister`s constructed or seeded without parameters or with a single `unsigned int` parameter become invalid. Range Library: Minor addition of convenience functions to `iterator range` like `front(), back()` and `operator[]()`. Regex Library: Rewritten front end parser now supports (?imsx-imsx) constructs, plus lookbehind assertions and conditional expressions. Thin wrapper classes improve integration with MFC/ATL code. Full (optional) Unicode support via the ICU library. Refer to the regex history page for more information on these and other small changes. Serialization Library: DLL version. Auto-linking. Serialization of variants. Improved seialization of shared pointers. Signals Library: added slot blocking/unblocking, from Frantz Maerten. Huge improvements to signal invocation performance from Robert Zeh. #### 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 3.x on Mac OS X. Borland C++ 5.6.4 on Windows. GNU C++ 2.95.3 (with and without STLport), 3.2.x., 3.3.x, 3.4.x, 4.0.x on Windows, Linux and Solaris. Intel C++ 8.1, 9.0 on Windows, Linux. Metrowerks CodeWarrior 8.3, 9.4, 9.5 on Mac OS X and Windows. Microsoft Visual C++ 6.0 (sp5, with and without STLport), 7.0, 7.1, 8.0 beta. Note: due to intermittent problems with Visual C++ 8.0 beta, and the presence of a variety of pre-release compiler builds, we are unable to guarantee compatibility until the final compiler is released. #### Acknowledgements Douglas Gregor managed this release. A great number of people contributed their time and expertise to make this release possible. Special thanks go to Aleksey Gurtovoy and Misha Bergal, who managed to keep the regression testing system working throughout the release process; David Abrahams, Beman Dawes, Aleksey Gurtovoy, Rene Rivera and Jonathan Turkanis for greatly improving the quality of this release; Rene Rivera for the new Boost web page design; and Zoltan "cad" Juhasz for the new Boost logo. |