Boost 1.33 Released
剛去看 Boost 網站,發現整個網站改版,換上了上次 Boost logo competition 的第一名的新 logo,然後赫然發現 Boost 1.33 也一併 release 了。以下是 release announcement,我把我比較感興趣的部分,以藍色加底線的形式 (不能點,以後有時間再撰文討論) 表示:
Boost 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 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, instead 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_twisters 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.
Random Posts
- None Found
Similar Posts
- None Found
4 Comments
配合越來越強大的 boost libraries,寫 C++ 越來越像在寫 scripting language 了,使用方便,功能強大,卻又兼顧效能。這都是因為 C++ 本身是個強大的語言的緣故。
但是,learning curve 是個超級大的致命傷。
boost library有希望進入std library裡嗎?希望大家都來用boost..
Boost 的 document 裡提到屬於 TR1 的,差不多就是會進 std 的部分。請見這篇《The New C++ Not-So-Standard Library》。
Hi .........
沒想到遇到同好了 ^^ ..
我也對 Boost 的 multi-index 非常感興趣呢 ~
這種資料結構可以兼顧效能以及彈性 .. 還可以節省空間,
很久以前曾寫過 set + list 的 multi index, 但是終究還是不及 boost 來的完美阿 ~
anrris
Post a Comment