README.txt 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. Boost 1.34.0, the latest version of peer-reviewed, portable C++
  2. libraries, has been released. This release brings five new libraries
  3. and extensive updates to existing libraries.
  4. New Libraries
  5. * Foreach Library:
  6. BOOST_FOREACH macro for easily iterating over the elements of a
  7. sequence, from Eric Niebler.
  8. * Statechart Library:
  9. Arbitrarily complex finite state machines can be implemented in
  10. easily readable and maintainable C++ code, from Andreas Huber.
  11. * TR1 Library:
  12. An implementation of the C++ Technical Report on Standard Library
  13. Extensions, from John Maddock.
  14. This library does not itself implement the TR1 components, rather
  15. it's a thin wrapper that will include your standard library's TR1
  16. implementation (if it has one), otherwise it will include the Boost
  17. Library equivalents, and import them into namespace std::tr1. Highlights
  18. include: Reference Wrappers, Smart Pointers, result_of,
  19. Function Object Binders, Polymorphic function wrappers, Type Traits,
  20. Random Number Generators and Distributions, Tuples, Fixed Size Array,
  21. Hash Function Objects, Regular Expressions and
  22. Complex Number Additional Algorithms.
  23. * Typeof Library:
  24. Typeof operator emulation, from Arkadiy Vertleyb and Peder Holt.
  25. * Xpressive Library:
  26. Regular expressions that can be written as strings or as expression
  27. templates, and that can refer to each other and themselves recursively
  28. with the power of context-free grammars, from Eric Niebler.
  29. Updated Libraries
  30. * Assign Library:
  31. o Support for ptr_map<key,T> via the new function ptr_map_insert()
  32. o Support for initialization of Pointer Containers when the containers
  33. hold pointers to an abstract base class.
  34. * Date_time library:
  35. o Support for new US/Canada timezone rules and other bug fixes.
  36. See Change History for details.
  37. * Filesystem Library:
  38. Major upgrade in preparation for submission to the C++ Standards Committee
  39. for TR2. Changes include:
  40. o Internationalization, provided by class templates basic_path,
  41. basic_filesystem_error, basic_directory_iterator
  42. and basic_directory_entry.
  43. o Simplification of the path interface by eliminating special constructors
  44. to identify native formats.
  45. o Rationalization of predicate function design, including the addition of
  46. several new functions.
  47. o Clearer specification by reference to POSIX, the ISO/IEEE Single Unix
  48. Standard, with provisions for Windows and other operating systems.
  49. o Preservation of existing user code whenever possible.
  50. o More efficient directory iteration.
  51. o Addition of a recursive directory iterator.
  52. * Function Library:
  53. Boost.Function now implements a small buffer optimization, which can
  54. drastically improve the performance when copying or constructing
  55. Boost.Function objects storing small function objects. For instance,
  56. bind(&X:foo, &x, _1, _2) requires no heap allocation when placed into
  57. a Boost.Function object.
  58. * Functional/Hash Library
  59. o Use declarations for standard classes, so that the library doesn't
  60. need to include all of their headers
  61. o Deprecated the <boost/functional/hash/*.hpp> headers.
  62. o Add support for the BOOST_HASH_NO_EXTENSIONS macro, which disables
  63. the extensions to TR1
  64. o Minor improvements to the hash functions for floating point numbers.
  65. * Graph Library:
  66. o edmonds_maximum_cardinality_matching, from Aaron Windsor.
  67. o lengauer_tarjan_dominator_tree, from JongSoo Park.
  68. o compressed_sparse_row_graph, from Jeremiah Willcock and Douglas Gregor
  69. of Indiana University.
  70. o sorted_erdos_renyi_iterator, from Jeremiah Willcock
  71. of Indiana University.
  72. o biconnected_components now supports a visitor and named parameters,
  73. from Janusz Piwowarski.
  74. o adjacency_matrix now models the Bidirectional Graph concept.
  75. o dijkstra_shortest_paths now calls vis.initialize_vertex for each
  76. vertex during initialization.
  77. o Note: the name of the compiled library for the GraphViz reader has
  78. changed to boost_graph (from bgl-viz) to match Boost conventions.
  79. o See the complete revision history for more information.
  80. * MultiArray Library:
  81. Boost.MultiArray now by default provides range-checking for operator[].
  82. Range checking can be disabled by defining the macro BOOST_DISABLE_ASSERTS
  83. before including multi_array.hpp. A bug in multi_array::resize() related
  84. to storage orders was fixed.
  85. * Multi-index Containers Library:
  86. o New random access indices.
  87. o Non key-based indices feature new rearrange facilities.
  88. o This version also includes a number of optimizations and usage
  89. improvements. For a complete list of changes,
  90. see the library release notes.
  91. * Optional Library:
  92. o boost::none_t and boost::none now added to Optional's documentation
  93. o Relational operators now directly support arguments of type 'T'
  94. and 'none_t'
  95. o operator->() now also works with reference types.
  96. o Helper functions make_optional(val), make_optional(cond,val)
  97. and get_optional_value_or(opt,alternative_value) added.
  98. o Constructor taking a boolean condition (as well as a value) added.
  99. o Member function get_value_or(alternative_value) added.
  100. o Incompatbility bug with mpl::apply<> fixed.
  101. o Converting assignment bug with uninitialized lvalues fixed.
  102. * Parameter Library:
  103. o Every ArgumentPack is now a valid MPL Forward Sequence.
  104. o Support for unnamed arguments (those whose keyword is deduced from
  105. their types) is added.
  106. o Support for named and unnamed template arguments is added.
  107. o New overload generation macros solve the forwarding problem directly.
  108. o See also the Python library changes, below.
  109. * Pointer Container Library:
  110. o Support for serialization via Boost.Serialization.
  111. o Exceptions can be disabled by defining the macro
  112. BOOST_PTR_CONTAINER_NO_EXCEPTIONS before including any header.
  113. This macro is defined by default if BOOST_NO_EXCEPTIONS is defined.
  114. o Additional std::auto_ptr<T> overloads added s.t. one can also pass
  115. std::auto_ptr<T> instead of only T* arguments to member functions.
  116. o transfer() now has weaker requirements s.t. one can transfer objects
  117. from ptr_container<Derived> to ptr_container<Base>,
  118. * Python Library:
  119. o Boost.Python now automatically appends C++ signatures to docstrings.
  120. The new docstring_options.hpp header is available to control the
  121. content of docstrings.
  122. o stl_input_iterator, for turning a Python iterable object into an STL
  123. input iterator, from Eric Niebler.
  124. o Support for void* conversions is added.
  125. o Integrated support for wrapping C++ functions built with the
  126. parameter library; keyword names are automatically known to
  127. docsstrings.
  128. o Enhancements to the API for better embedding support
  129. (boost::python::import(), boost::python::exec()
  130. and boost::python::exec_file()).
  131. * Signals Library:
  132. More improvements to signal invocation performance from Robert Zeh.
  133. * Smart Pointers Library:
  134. o Allocator support as proposed in N1851 (162 Kb PDF).
  135. o pointer_cast and pointer_to_other utilities to allow
  136. pointer-independent code, from Ion Gaztanaga.
  137. * String Algorithm Library:
  138. o lexicographical_compare
  139. o join
  140. o New comparison predicates is_less, is_not_greater.
  141. o Negative indexes support (like Perl) in various algorihtms
  142. (*_head/tail, *_nth).
  143. * Wave Library:
  144. o Wave now correctly recognizes pp-number tokens as mandated by the
  145. C++ Standard, which are converted to C++ tokens right before they are
  146. returned from the library.
  147. o Several new preprocessing hooks have been added. For a complete
  148. description please refer to the related documentation page:
  149. The Context Policy.
  150. o Shared library (dll) support has been added for the generated Wave
  151. libraries.
  152. o The overall error handling has been improved. It is now possible to
  153. recover and continue after an error or a warning was issued.
  154. o Support for optional comment and/or full whitespace preservation
  155. in the generated output stream has been added.
  156. o The Wave library now performs automatic include guard detection to
  157. avoid accessing header files more than once, if appropriate.
  158. o Full interactive mode has been added to the Wave tool. Now the Wave
  159. tool can be used just like Python or Perl for instance to
  160. interactively try out your BOOST_PP macros. Additionally it is now
  161. possible to load and save the current state of an interactive
  162. session (macro tables et.al.).
  163. o The overall performance has been improved by upto 40-60%, depending
  164. on the concrete files to process.
  165. o Support for new pragmas has been added allowing to control certain
  166. library features from inside the preprocessed sources (partial
  167. output redirection, control of generated whitespace and #line
  168. directives).
  169. o Optional support for #pragma message "..." has been added.
  170. o This version also includes a number of bug fixes and usage
  171. improvements. For a complete list of changes, see the libraries
  172. change log.
  173. Supported Compilers
  174. Boost is tested on a wide range of compilers and platforms. Since Boost libraries
  175. rely on modern C++ features not available in all compilers, not all Boost
  176. libraries will work with every compiler. The following compilers and platforms
  177. have been extensively tested with Boost, although many other compilers and
  178. platforms will work as well. For more information, see the regression test
  179. results.
  180. * Apple GCC 4.0.1 on Mac OS X.
  181. * Borland C++ 5.8.2 on Windows.
  182. * GNU C++
  183. o 3.2.x., 3.3.x, 3.4.x, 4.0.x, 4.1.x on Linux
  184. o 4.1.x on Solaris
  185. o 3.4.x on Windows
  186. * HP aC++ A.06.14.
  187. * Intel C++ 9.1 on Windows, 9.0 on Linux.
  188. * Metrowerks CodeWarrior 9.4 on Windows.
  189. * Microsoft Visual C++ 6.0 (sp5, with and without STLport), 7.0, 7.1, 8.0.
  190. Note: Boost does not support the non-standard "Safe" C++ Library shipping
  191. with Visual C++ 8.0, which may result in many spurious warnings from Boost
  192. headers and other standards-conforming C++ code. To suppress these warnings,
  193. define the macro _SCL_SECURE_NO_DEPRECATE.
  194. * Sun Studio 11 on Solaris.
  195. Acknowledgements
  196. Thomas Witt managed this release.
  197. A great number of people contributed their time and expertise to make this release
  198. possible. Special thanks go to Vladimir Prus for making Boost.Build version 2 a
  199. reality, David Abrahams for authoring a new Getting Started guide, Rene Rivera for
  200. general build and installation support and Greg D. for answering countless questions.
粤ICP备19079148号