Boost Changelog

What's new in Boost 1.61.0 Beta

Apr 4, 2016
  • NEW LIBRARIES:
  • Compute: Parallel/GPU-computing library
  • Hana: A modern C++ metaprogramming library. It provides high level algorithms to manipulate heterogeneous sequences, allows writing type-level computations with a natural syntax, provides tools to introspect user-defined types and much more.
  • Metaparse: A library for generating compile time parsers parsing embedded DSL code as part of the C++ compilation process. The library is similar to Spirit, however while parsers built with Spirit parse at run-time, parsers built with Metaparse parse at compile-time.
  • DLL: Library for comfortable work with DLL and DSO. Library provides a portable across platforms way to:
  • load libraries
  • import any native functions and variables
  • make alias names for C++ mangled functions and symbols
  • query libraries for sections and exported symbols
  • self loading and self querying
  • getting program and module location by exported symbol
  • UPDATED LIBRARIES:
  • Any:
  • More tests and maintainance fixes.
  • Container:
  • small_vector supports more constructors and assignments.
  • Fixed bugs:
  • Trac #11820 : "compiler error when using operator[] of map".
  • Trac #11856 : "pool_resource.cpp error: declaration changes meaning".
  • Trac #11866 : "small_vector does not have range constructor".
  • Trac #11867 : "small_vector should have constructor and assignment operator taking other small_vector".
  • Trac #11912 : "flat_map use of vector::priv_forward_range_insert_expand_backwards may cause move with same source".
  • Trac #11957 : "static_vector::max_size() is higher than the capacity".
  • Trac #12014 : "boost::container::set can not insert const (ref) range".
  • GitHub #33: Make sure std::string constructor is available.
  • Context:
  • #11246 fails to build for mingw because of undefined symbols
  • #11365 execution_context.hpp gives errors when building with VS2015RC
  • #11652 checking __cpp_lib_integer_sequence
  • fcontext_t: no longer part of public API
  • execution_context: relaxed to C++11
  • execution_context: type-safe transfer of data
  • execution_context: execute function on top of stack
  • execution_context: improved performance
  • execution_context: static member-fn current() removed
  • execution_context: new call semantic
  • Coroutine:
  • attribute related to FPU-env removed
  • Coroutine2:
  • attribute related to FPU-env removed
  • improved performance
  • relaxed to C++11
  • Fusion:
  • Mitigate massive warnings about use of BOOST_PP_IS_EMPTY on MSVC8. #11157
  • Container's conversion ctor and SFINAE. #11766
  • Drop trailing fusion::void_ support from C++11 fusion::vector. pull-request 120
  • Geometry:
  • Overlays: enhanced implementation for handling colocated intersection points, fixing many issues
  • Additional support and fixes for spherical and geographic coordinate systems
  • Interprocess:
  • Fixed bugs:
  • GitHub Pull #23 ("Fixed case sensetive for linux mingw").
  • Intrusive:
  • Fixed bugs:
  • Boost Trac #11832: clang-cl + boost intrusive = miscompile
  • Boost Trac #11865: Intrusive list explicit ctor error with Clang 3.6 (C++11/14)
  • Boost Trac #11992: Add an overload of insert_check taking a key_type
  • GitHub Pull #19: ebo_functor_holder: compile fix for copy constructor
  • Lexical Cast:
  • Fixed Sun Studio related issues
  • Log:
  • General changes:
  • The support for boost::basic_string_ref and its specializations is deprecated; users are encouraged to switch to boost::basic_string_view. The support for boost::basic_string_ref will be removed in future releases.
  • Added support for limiting the number of stored log files in the target directory of the file collector. Thanks to Erich Keane for the patch. (#8746)
  • Bug fixes:
  • Fixed various compilation problems for Windows CE.
  • Fixed compilation problems on Solaris.
  • Added a workaround for MSVC-10 generating broken code for formatters in some cases. (#12025)
  • See changelog for more details.
  • Move:
  • Experimental: asymptotically optimal bufferless merge and sort algorithms: adaptive_merge and adaptive_sort.
  • Fixed bug:
  • Trac #11758: "BOOST_MOVABLE_BUT_NOT_COPYABLE doesn't reset private access with rvalue ref version".
  • Optional:
  • Now boost::optional is specialized for reference parameters. This addresses a couple of issues:
  • the sizeof of optional reference is that of a pointer,
  • some bugs connected to copying optional references are gone,
  • all run-time bugs caused by incorrect reference binding on some compilers are now turned into compile-time errors,
  • you can swap optional references: it is like swapping pointers: shalow, underlying objects are not affected,
  • optional references to abstract types work.
  • Documented nested typedefs (Trac #5193).
  • Made the perfect-forwarding constructor SFINAE-friendly, which fixes Trac #12002. However, this only works in the newer platforms that correctly implement C++11 .
  • Fixed Trac #10445.
  • Test:
  • Boost.test v3.2 see the 'Change log' section for details.
  • New features
  • dataset driven test-cases learned to support fixtures and variadic number of arguments
  • dataset driven test-cases sample types now honor move semantics
  • Bug fixes
  • #6767, #8905, #9443, #11854
  • #11887, #11889, #11983
  • Variant:
  • Maintainance fixes.

New in Boost 1.60.0 (Dec 17, 2015)

  • New Libraries: VMD Updated Libraries: Atomic, Chrono, Container, Context, Core, Filesystem, Flyweight, Fusion, Interprocess, Intrusive, Lexical Cast, Locale, Log, Move, Multi-index Containers, odeint, Optional, Predef, Test, Thread, UUID.

New in Boost 1.59.0 (Aug 14, 2015)

  • New Libraries:
  • Convert: An extendible and configurable type-conversion framework, from Vladimir Batov.
  • Coroutine2: (C++14) Coroutine library, from Oliver Kowalke.
  • Updated Libraries:
  • Container:
  • GitHub #26: Fix bug in stable_vector::capacity(). Thanks to timsong-cpp/Arindam Mukerjee.
  • GitHub #27: fix stable_vector's index_of's doxygen comment. Thanks to kariya-mitsuru.
  • Trac #11380: "Container library std forward declarations incorrect in std_fwd.hpp on libc++ with gcc".
  • Trac #11388: "boost::container::list::emplace_back broken on Visual Studio 2010".
  • Trac #11339: "VC12 LNK2005 error with boost::container::adaptive_pool".
  • Context:
  • #11223 check support for std::integer_sequence
  • execution_context uses internally Windows Fibers with BOOST_USE_WINFIBERS
  • support of assember for MinGW on Windows (32bit)
  • Coroutine:
  • #10978 remove additional semicolons
  • #11230 coroutine_error returns dangling exception message pointer
  • #11234 doesn't compile when used with boost::range::algorithms
  • #11356 coroutines segfaults with BOOST_USE_SEGMENTED_STACKS
  • Fusion:
  • Add a new concept, Unbounded Sequence for sequence and Unbounded Iterator for iterator. Currently, Unbounded Sequence affects the behaviour of fusion::(value_)at(_c) and fusion::(value_)at_key. Unbounded Iterator has no effect (reserved for future release). For more details, see Unbounded Sequence and Unbounded Iterator. (pull-request 85)
  • Support C++11 variadic templates for fusion::list. (pull-request 84)
  • Fixed bugs:
  • Fix missing include . (#11161)
  • Revert some constexpr support, regression in 1.58.0. (#11211, #11267)
  • Fix compile error with fold due to missing include. (#11249)
  • Fix compile error with adapting an empty struct, regression in 1.58.0. (#11269)
  • Remove use of obsolete (and incorrect) workaround for sequence comparison, it affects MSVC-8 and earlier. (pull-request 78)
  • Fix compile error while copying a sequece which derived from fusion::list, regression in 1.58.0. (pull-request 87)
  • Fix compile error on copying a fusion::tuple. (#11140)
  • Add workarounds for GCC 4.6 with constexpr. (#11517)
  • Geometry:
  • Additional functionality:
  • Added rtree const_iterator, begin(), end() and the support for Boost.Range.
  • The support for C++11 std::initializer_list in geometries models.
  • Disjoint and intersects support the following geometry combinations: multipoint/linestring, multipoint/multilinestring.
  • Added relate() and relation() algorithms.
  • Intersection has been implemented for combinations of pointlike and linear geometries
  • Added implementation for difference(pointlike, linear)
  • New algorithm is_empty, returning true if the geometry represents the empty set
  • The envelope algorithm supports pointlike and linear geometries in the spherical equatorial coordinate system
  • The envelope algorithm supports pointlike geometries in the geographic coordinate system
  • Improvements:
  • Upgraded rtree const_query_iterator category to ForwardIterator.
  • Buffer performance of buffers around multi-points is improved significantly
  • Breaking changes:
  • buffer side strategy now returns error_code instead of bool. If you have your own custom side strategy, it should be adapted
  • Solved tickets:
  • #11113 Support easy enumeration of all elements with BOOST_FOREACH
  • #11232 Feature request - relate()
  • #11236 Invalid result of centroid() for integer coordinate type
  • #11268 Regression in boost::geometry::intersection interface with multi_linestring and box -- does not compile on 1.57 VS 1.55
  • #11332 Assertion failure in buffer for extreme coordinate differences
  • #11346 Segment iterator does not work with ranges returning values instead of references
  • #11436 sym_difference(py1, py2, mpy) returns invalid multipolygon
  • Bugfixes:
  • Buffer: use a more robust way to calculate the side of an intersection, this fixes several errors in buffer generation
  • Fix in selection of segment to which calculate from IP from, in intersection of two segments. Now is selected the one close to a segment-point point, or else the one on the shortest segment. This avoids (rarely occuring) generation of tiny triangles making output polygons invalid
  • In rescaling round instead of truncate to the integer grid (this fix and the previous mentioned can have some impact on output geometries)
  • Fix potential infinite loop in detail::has_spikes (the loop can happen if the points passed have NaN coordinates)
  • Interprocess:
  • ( Trac #5139 ( ("Initial Stream Position in Boost.Interprocess.Vectorstream").
  • GitHub Pull #19 ("Fix exception visibility"). Thanks to Romain-Geissler.
  • Intrusive:
  • Implemented map and multimap-like interfaces.
  • Refactored hashtable containers to reduce template instantiations.
  • Lexical Cast:
  • Fixed warnings
  • Simplified metaprogramming (thanks to Edward Diener)
  • Log:
  • General changes:
  • On systems with symbol visibility support (e.g. Linux) the library is now built with all internal symbols hidden.
  • Breaking change: The library has been ported to Boost.TypeIndex for its underlying type info management tool. This affected the following public interfaces:
  • invalid_type exceptions thrown by the library now have typeindex::type_index attached as the description of the offending type. The type was previously identified by type_info_wrapper.
  • Boost.Exception type_info_info error information now contains typeindex::type_index instead of type_info_wrapper.
  • attribute_value::get_type() now returns typeindex::type_index instead of type_info_wrapper. User-defined attribute value implementations should be similarly changed (the attribute_value::impl::get_type() virtual method now also returns typeindex::type_index).
  • type_info_wrapper component has been deprecated and will be removed in future releases. Boost.TypeIndex is recommended as a replacement.
  • Removed the previously deprecated headers: boost/log/utility/intrusive_ref_counter.hpp, boost/log/utility/explicit_operator_bool.hpp, boost/log/utility/empty_deleter.hpp.
  • Added support for building the library for OpenBSD. (#11446)
  • Improved internal implementation of the event synchronization primitive used for asynchronous logging. (#11398)
  • Bug fixes:
  • Fixed incorrect behavior of attribute_value_set::insert() and attribute_value_set constructor in some cases. (#11190)
  • See changelog for more details.
  • Move:
  • Changed unique_ptr's converting constructor taking the source by value in C++03 compilers to allow simple conversions from convertible types returned by value.
  • Trac #11229: "vector incorrectly copies move-only objects using memcpy",
  • Multi-index Containers:
  • Added ranked indices.
  • Maintenance fixes.
  • Predef:
  • Fix many problems with predef_check functionality.
  • Update SunPro detection to accomodate latest version of compiler from Oracle.
  • Add and and or logical operators for predef_check expression on the Boost Build side.
  • Fix BOOST_ARCH_PARISC to correctly spelled name.
  • Fix MAKE_YYYYM macros to correctly limit the month.
  • Program Options:
  • Fix compilation errors, missing dllexport and warnings with MSVC and MinGW (Daniela Engert, Marcel Raad).
  • Fix unintialized fields (Zoey Greer).
  • Stop options with implicit value from consuming separate tokens (Michael John Decker).
  • Make multitoken limit be max int, not 32K (Hans Hohenfeld).
  • Code formatting and documentation fixes (Jurko Gospodnetić, Lauri Nurmi).
  • Minimal support for no-rtti build (Minmin Gong)
  • Don't increment environment pointer past the end (Vladimir Prus)
  • Boost.Test v3:
  • Major new features
  • BOOST_TEST generic assertion
  • data driven test cases
  • test units can now have attributes for finer control over tests behavior (logical grouping, test dependencies, test enabling/disabling)
  • CLI learned colour_output and list_content, extended unit test filtering (negation, labels)
  • refactored and rewritten documentation using quickbook
  • Addressed issues:
  • #2018 #2450 #2600 #2717 #2759 #3182 #3316 #3392 #3402 #3445
  • #3463 #3542 #3481 #3495 #3592 #3595 #3623 #3664 #3784 #3785
  • #3811 #3834 #3896 #3932 #3938 #3964 #3978 #3979 #4161 #4275
  • #4389 #4434 #4587 #4806 #4911 #4923 #4924 #4982 #5008 #5036
  • #5262 #5374 #5412 #5563 #5582 #5599 #5718 #5729 #5870 #5972
  • #6002 #6071 #6074 #6161 #6766 #6712 #6748 #7046 #7136 #7410 #7894
  • #8201 #8272 #8467 #8862 #8895 #9179 #9272 #9390 #9409 #9537
  • #9539 #9581 #9960 #10318 #10394 #10888 #11054 #11347 #11358 #11359
  • TypeIndex:
  • Removed dependencies on some of the Boost libraries to improve compilation times and modularity
  • Warnings fixed in tests and other maintainance improvements were done.
  • Variant:
  • Fixed missing include in element_index.hpp #11196, #11283
  • Fixed boost::apply_visitor usage with C++14 and const references #11251, #11285
  • Relaxed compile time checks for all the get(variant_variable) functions (thanks to Nicolas Cornu)

New in Boost 1.59.0 Beta 1 (Aug 5, 2015)

  • Container:
  • GitHub #26: Fix bug in stable_vector::capacity(). Thanks to timsong-cpp/Arindam Mukerjee.
  • GitHub #27: fix stable_vector's index_of's doxygen comment. Thanks to kariya-mitsuru.
  • Trac #11380: "Container library std forward declarations incorrect in std_fwd.hpp on libc++ with gcc".
  • Trac #11388: "boost::container::list::emplace_back broken on Visual Studio 2010".
  • Trac #11339: "VC12 LNK2005 error with boost::container::adaptive_pool".
  • Context:
  • #11223 check support for std::integer_sequence
  • execution_context uses internally Windows Fibers with BOOST_USE_WINFIBERS
  • support of assember for MinGW on Windows (32bit)
  • Coroutine:
  • #10978 remove additional semicolons
  • #11230 coroutine_error returns dangling exception message pointer
  • #11234 doesn't compile when used with boost::range::algorithms
  • #11356 coroutines segfaults with BOOST_USE_SEGMENTED_STACKS
  • Fusion:
  • Add a new concept, Unbounded Sequence for sequence and Unbounded Iterator for iterator. Currently, Unbounded Sequence affects the behaviour of fusion::(value_)at(_c) and fusion::(value_)at_key. Unbounded Iterator has no effect (reserved for future release). For more details, see Unbounded Sequence and Unbounded Iterator. (pull-request 85)
  • Support C++11 variadic templates for fusion::list. (https://github.com/boostorg/fusion/pull/84)
  • Fixed bugs:
  • Fix missing include . (#11161)
  • Revert some constexpr support, regression in 1.58.0. (#11211, #11267)
  • Fix compile error with fold due to missing include. (#11249)
  • Fix compile error with adapting an empty struct, regression in 1.58.0. (#11269)
  • Remove use of obsolete (and incorrect) workaround for sequence comparison, it affects MSVC-8 and earlier. (pull-request 78)
  • Fix compile error while copying a sequece which derived from fusion::list, regression in 1.58.0. (pull-request 87)
  • Interprocess:
  • ( Trac #5139 ( ("Initial Stream Position in Boost.Interprocess.Vectorstream").
  • GitHub Pull #19 ("Fix exception visibility"). Thanks to Romain-Geissler.
  • Intrusive:
  • Implemented map and multimap-like interfaces.
  • Refactored hashtable containers to reduce template instantiations.
  • Log:
  • General changes:
  • On systems with symbol visibility support (e.g. Linux) the library is now built with all internal symbols hidden.
  • Breaking change: The library has been ported to Boost.TypeIndex for its underlying type info management tool. This affected the following public interfaces:
  • invalid_type exceptions thrown by the library now have typeindex::type_index attached as the description of the offending type. The type was previously identified by type_info_wrapper.
  • Boost.Exception type_info_info error information now contains typeindex::type_index instead of type_info_wrapper.
  • attribute_value::get_type() now returns typeindex::type_index instead of type_info_wrapper. User-defined attribute value implementations should be similarly changed (the attribute_value::impl::get_type() virtual method now also returns typeindex::type_index).
  • type_info_wrapper component has been deprecated and will be removed in future releases. Boost.TypeIndex is recommended as a replacement.
  • Removed the previously deprecated headers: boost/log/utility/intrusive_ref_counter.hpp, boost/log/utility/explicit_operator_bool.hpp, boost/log/utility/empty_deleter.hpp.
  • Added support for building the library for OpenBSD. (#11446)
  • Improved internal implementation of the event synchronization primitive used for asynchronous logging. (#11398)
  • Bug fixes:
  • Fixed incorrect behavior of attribute_value_set::insert() and attribute_value_set constructor in some cases. (#11190)
  • See changelog for more details.
  • Move:
  • Changed unique_ptr's converting constructor taking the source by value in C++03 compilers to allow simple conversions from convertible types returned by value.
  • Trac #11229: "vector incorrectly copies move-only objects using memcpy",
  • Multi-index Containers:
  • Added ranked indices.
  • Maintenance fixes.
  • Predef:
  • Fix many problems with predef_check functionality.
  • Update SunPro detection to accomodate latest version of compiler from Oracle.
  • Add and and or logical operators for predef_check expression on the Boost Build side.
  • Fix BOOST_ARCH_PARISC to correctly spelled name.
  • Fix MAKE_YYYYM macros to correctly limit the month.
  • Program Options:
  • Fix compilation errors, missing dllexport and warnings with MSVC and MinGW (Daniela Engert, Marcel Raad).
  • Fix unintialized fields (Zoey Greer).
  • Stop options with implicit value from consuming separate tokens (Michael John Decker).
  • Make multitoken limit be max int, not 32K (Hans Hohenfeld).
  • Code formatting and documentation fixes (Jurko Gospodnetić, Lauri Nurmi).
  • Minimal support for no-rtti build (Minmin Gong)
  • Don't increment environment pointer past the end (Vladimir Prus)
  • Boost.Test v3:
  • Major new features
  • BOOST_TEST generic assertion
  • data driven test cases
  • test units can now have attributes for finer control over tests behavior (logical grouping, test dependencies, test enabling/disabling)
  • CLI learned colour_output and list_content, extended unit test filtering (negation, labels)
  • refactored and rewritten documentation using quickbook
  • Addressed issues:
  • #2018 #2450 #2600 #2717 #2759 #3182 #3316 #3392 #3402 #3445
  • #3463 #3542 #3481 #3495 #3592 #3595 #3623 #3664 #3784 #3785
  • #3811 #3834 #3896 #3932 #3938 #3964 #3978 #3979 #4161 #4275
  • #4389 #4434 #4587 #4806 #4911 #4923 #4924 #4982 #5008 #5036
  • #5262 #5374 #5412 #5563 #5582 #5599 #5718 #5729 #5870 #5972
  • #6002 #6071 #6074 #6161 #6766 #6712 #6748 #7046 #7136 #7410 #7894
  • #8201 #8272 #8467 #8862 #8895 #9179 #9272 #9390 #9409 #9537
  • #9539 #9581 #9960 #10318 #10394 #10888 #11054 #11347 #11358 #11359

New in Boost 1.58.0 (Apr 17, 2015)

  • New Libraries: Endian, Sort. Updated Libraries: Asio, Chrono, Container, Context, Conversion, DateTime, Flyweight, Function, Functional/Factory, Fusion, Geometry, Hash, Interprocess, Intrusive, Lexical Cast, Log, Math, Move, Multi-index Containers, Multiprecision, Optional, Phoenix, Predef, Random, Thread, TypeErasure, TypeIndex, Units, Unordered, Variant.

New in Boost 1.58.0 Beta (Mar 21, 2015)

  • New Libraries:
  • Endian: Types and conversion functions for correct byte ordering and more regardless of processor endianness.
  • Sort: Includes spreadsort, a general-case hybrid radix sort that is faster than O(n*log(n))
  • Updated Libraries:
  • Chrono:
  • Version 2.0.5
  • Fixes:
  • #10778 VC14 CTP4 Atomic don't compile with boost::chrono durations which are not TriviallyCopyable
  • #10840 Missing std:: qualifier for puts call in test_7868.cpp
  • #10851 Missing std:: qualifier for puts call in time_point_output.cpp
  • #10893 Minor doc typo in Boost.Chrono
  • #10992 Chrono IO state savers inconsistent with Boost.IO state savers
  • #10995 duration_put::put_value truncates fractional part
  • #11006 Impossible to instantiate time_fmt_io_saver due to several errors.
  • #11012 chrono_io v2 fail to compile with boost::chrono::duration< boost::rational >
  • Container:
  • Experimental small_vector container.
  • Massive dependency reorganization. Now Boost.Container depends on very basic utilities like Boost.Core and Boost.Intrusive. Preprocessed code size have decreased considerably and compilation times have improved.
  • Added nth and index_of functions to containers with random-access iterators (except basic_string).
  • Added C++17's allocator_traits::is_always_equal.
  • Updated containers to implement new constructors as specified in 2210. Missing allocator-extended constructor for allocator-aware containers.
  • Fixed bugs:
  • #9931: "flat_map::insert(ordered_unique_range_t...) fails with move_iterators" (reopened).
  • #11076: "Unqualified calls to memmove/memcpy in container/detail/copy_move_algo.hpp".
  • Trac #10790 (long long errors from container").
  • Trac #10808 (compare equal operator of vector is broken").
  • Source Breaking: scoped_allocator_adaptor's propagate_on_container_copy_assignment, propagate_on_container_move_assignment and propagate_on_container_swap are no longer ::boost::integral_constant types. The dependency reorganization needed to break with those classes to avoid MPL dependencies, and interoperability with std::integral_constant was not guaranteed. Code assumming boost::true_type/boost::false_type on this will not compile. As a workaround, use the guaranteed internal ::value constant: ::boost::integral_constant.
  • Context:
  • support for ARM/iOS (32+64 bit)
  • class execution_context (C++14)
  • Conversion:
  • polymorphic_pointer_downcast and polymorphic_pointer_cast functions were added (thanks to Boris Rasin) #10780
  • All the functions now throw exceptions using boost::throw_exception
  • Documnetation update
  • DateTime:
  • Restored to_time_t function.
  • Renamed variable v_type to var_type so it longer conflicts with an AIX system variable.
  • Documnetation fixes.
  • Flyweight:
  • Added hash support both with std::hash and boost::hash. This can be optionally disabled to avoid clashes with legacy code where this support has already been defined by the user.
  • Maintenance fixes.
  • Function:
  • Added support for functions accepting C++11 rvalues and Boost.Move rvalues #10585.
  • Functional/Factory:
  • Minor breaking change: the default template parameter to indicate that it shouldn't use an allocator is now void, instead of boost::none_t. For details, see the changelog.
  • Fusion:
  • Automatic hash creation function (Github PR #12)
  • New ADAPT_STRUCT, ADAPT_ADT, ADAPT_ASSOC_ that deduce the members types (#9516).
  • Add convert implementation for Boost.Tuple and std::tuple.
  • Add mpl::clear implementation for Boost.Tuple and std::tuple.
  • Use boost::declval instead of std::declval, (#10190).
  • Remove use of boost::blank (#8622).
  • Add result_of::{copy,move} (#5886).
  • Better constexpr and noexcept support.
  • Improved SFINAE Friendliness of many metafunctions (#10676, #10443).
  • result_of::size::value and result_of::size::type::value are the same type now (#7304)
  • result_of::at::type is now defined when sizeof of sequence is less than N (#6507, #7651)
  • Fix missing includes (#8457).
  • Many documentation fixes & improvements (#6090, #5324, GitHub PR #33, GitHub PR #53, GitHub PR #56)
  • Hash:
  • Fixed strict aliasing violation (GitHub #3).
  • Interprocess:
  • Reduced some compile-time dependencies. Updated to Boost.Container changes.
  • Fixed bugs:
  • GitHub Pull #13 ("haiku: we don't have XSI shared memory, so don't try to use it").
  • Intrusive:
  • Reduced compile-time dependencies, headers, and the use of Boost.Preprocessor, specially for hooks and iterators.
  • Fixed bugs:
  • Boost Trac #6720: intrusive::unordered_set::clear_and_dispose does not compile on VC11 Beta when passed a stateless lambda
  • Boost Trac #10771: remove_if is broken for slist
  • Boost Trac #10853: problem with detection of const_cast_from
  • Boost Trac #10987: bug in any_xxx_node_traits, returning by reference
  • Lexical Cast:
  • Now std::stream is used for conversions to float numbers #5660, #6975, #10639
  • Log:
  • Bug fixes:
  • Fixed thread id formatting.
  • Fixed process id formatting. (#10926)
  • Fixed build failure on GNU Hurd.
  • Fixed incorrect behavior of text file sink backend in case if free space on the file system gets exhausted. The sink will no longer create lots of empty files in attempt to recover. (#11016)
  • See changelog for more details.
  • Math:
  • Added two new special functions - trigamma and polygamma.
  • Large update to the Elliptic integral code to use Carlson's latest algorithms - these should be more stable, more accurate and slightly faster than before. Also added support for Carlson's RG integral.
  • Added ellint_d, jacobi_zeta and heuman_lambda elliptic integrals.
  • Fixed namespace scope constants so they are constexpr on conforming compilers, see #10901.
  • Fixed various cases of spurious under/overflow in the incomplete beta and gamma functions, plus the elliptic integrals, with thanks to Rocco Romeo.
  • Fix 3-arg legendre_p and legendre_q functions to not call the policy based overload if the final argument is not actually a policy.
  • Cleaned up some dead code in the incomplete beta function, see #10985.
  • Fixed extreme-value pdf for large valued inputs, see #10938.
  • Switched documentation to use SVG rather than PNG graphs and equations - browsers seem to have finally caught up!
  • Move:
  • Added BOOST_MOVE_BASE utility.
  • Added adl_move_swap utility.
  • Reduced dependencies on other Boost libraries to make the library a bit more lightweight.
  • Fixed bugs:
  • Trac #11044: "boost::rv inherits off union, when such passed as template argument".
  • Multi-index Containers:
  • The efficiency of lookup operations has improved in situations where they involve the generation of temporary values of key_type. Consider for instance the following code:
  • typedef multi_index_container<
  • std::string,
  • indexed_by<
  • ordered_unique
  • >
  • > multi_t;
  • ...
  • multi_t m=...;
  • m.find("boost"); // passed a const char*, not a std::string
  • In previous versions of the library, the find operation generates several temporary std::strings (one every time an internal comparison is made). In sufficiently advanced compilers, this is now avoided so that only one temporary is created.
  • Maintenance fixes.
  • Multiprecision:
  • Changed frexp to always be non-expression template generating, see: 10993.
  • Improved support of cpp_dec_float on Cygwin and other platforms with missing long double support, see 10924.
  • Improved noexcept support and added some more tests, see 10990.
  • Various workarounds applied for Intel-15.0 and Solaris-12.4 compilers.
  • Phoenix:
  • Version 3.2.0
  • New Features:
  • Phoenix now has a lazy list implementation as an optional extension.
  • New Example:
  • A new example bind_goose shows the compatibility between boost bind and boost phoenix bind.
  • Fixed Bugs:
  • #10927 Missing std:: qualifier for fabs in phoenix/test/stdlib/cmath.cpp
  • #11085 Missing qualifier for pow call in phoenix/test/function/function_tests.cpp
  • Fixes for a number of cases failing with bind, lambda and let.
  • Predef:
  • Version 1.2
  • Added Visual Studio 2015 detection.
  • Added detection of Haiku OS.
  • Fix Android endian detection.
  • Added predef_check program and BBv2 integration for build configuration checks.
  • Random:
  • Added non_central_chi_squared_distribution.
  • Thread:
  • Version 4.5.0
  • New Experimental Features:
  • #9600 Async: Add task_region
  • #10611 Add emplace promise::set_value and emplace make_ready_future
  • #10826 Add scheduled executor operations
  • #11048 Add a serial_executor based on continuations
  • Fixed Bugs:
  • #6787 boost::thread::sleep() hangs if system time is rolled back
  • #10734 Submit method work differently on different executors, some throw exception and some silently ignore error (thread_executor and inline_executor)
  • #10736 Task exceptions silently ignored. I think std::terminate solution from N3785 and std::thread is better choice and more consistent.
  • #10737 In serial_executor we have infinite wait if task throw exception.
  • #10822 Boost.Thread fails to compile on Android
  • #10824 Boost.Thread 1.57 breaks Windows XP compatibility for SP2 and below.
  • #10963 future::then Has No Implementation
  • #10964 future::unwrap().then() Deadlocks
  • #10968 The futures returned by async() and future::then() are not blocking.
  • #10971 shared_future::get()/get_or() must be const
  • #10972 shared_future::then() can be called multiple times.
  • #10979 Support T& type deduction when the make_ready_future parameter is reference_wrapper
  • #10996 Thread physical_concurrency() is failing on Windows
  • #11035 BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE not defined for Android
  • #11053 The attached code results in a R6025 - pure virtual function call in run_thread_exit_callbacks
  • TypeErasure:
  • Fixed compilation with MSVC 12.
  • TypeIndex:
  • Link time assertions added on platforms that support it
  • Units:
  • Fix for base units with arbitrary dimensions.
  • Unordered:
  • Fix move assignment with stateful, propagate_on_container_move_assign allocators (#10777).
  • Fix potential overflow when calculating number of buckets to allocate (GitHub #4).
  • Other minor changes, see changelog.
  • Variant:
  • Breaking change: Compile time checked getter is now used by default in boost::get(VariantT) and boost::polymorphic_get(VariantT). New getter asserts that type U is one of the types that can be stored in VariantT. Define BOOST_VARIANT_USE_RELAXED_GET_BY_DEFAULT to change default behavior. See get.hpp and polymorphic_get.hpp descriptions for more info #547.
  • Added missing comparison operators to variant #8620, #10811
  • Multiple documentations fixes #10273, #10653
  • Variadic templats enabled on Clang #10832
  • Autodetection of return types for visitors in C++14, which makes it possible to use boost::apply_visitor with generic lambdas #10837:
  • auto str = boost::apply_visitor(
  • [](auto v) {
  • return boost::lexical_cast(v);
  • variant_instance
  • Improved swap functions #10882
  • Many improvements to variadic templates, even more methods support variadics.
  • Multiple bugfixes and testing improvements including Coveralls integration
  • Compilers Tested:
  • Boost's primary test compilers are:
  • Linux:
  • Clang: 3.4
  • Clang, C++14: 3.5, 3.6
  • GCC: 4.4.7, 4.9.2
  • GCC, C++98: 4.8.1, 4.8.2
  • GCC, C++11: 4.4.7, 4.8.4, 4.9.2
  • GCC, C++14: 4.9.2
  • Windows:
  • GCC, mingw: 4.4.7, 4.5.4, 4.6.3, 4.7.3, 4.8.2
  • Visual C++: 8.0, 9.0, 10.0, 11.0, 12.0
  • FreeBSD:
  • GCC: 4.2.1
  • QNX:
  • QCC: 4.4.2
  • Boost's additional test compilers include:
  • Linux:
  • Clang: 3.0, 3.1, 3.2, 3.3, 3.4
  • Clang, C++14: 3.5, 3.6
  • GCC: 4.4.7, 4.6.4, 4.7.3, 4.8.1, 4.9.2, 5.0.0 (experimental)
  • GCC, C++11: 4.4.7, 4.8.4, 4.9.2
  • GCC, C++14: 4.9.2
  • Windows:
  • GCC, mingw: 4.4.7, 4.5.4, 4.6.4, 4.7.3
  • Visual C++: 8.0, 9.0, 10.0, 11.0, 12.0, 14.0
  • Android
  • Clang: 3.4, 3.5
  • GCC: 4.8, 4.9
  • FreeBSD:
  • GCC: 4.2.1
  • QNX:
  • QCC: 4.4.2

New in Boost 1.57.0 (Nov 11, 2014)

  • Updated Libraries:
  • Any:
  • RTTI is not required any more (TypeIndex library is used for RTTI emulation)
  • Fixed #8958
  • Asio:
  • Fixed the kqueue reactor so that it works on FreeBSD (#10606).
  • Fixed an issue in the kqueue reactor which resulted in spinning when using serial ports on Mac OS (#10496).
  • Fixed kqueue reactor support for read-only file descriptors (#10367).
  • Fixed a compile error when using the /dev/poll reactor (#10350, #10572).
  • Changed the Windows backend to use WSASocketW, as WSASocketA has been deprecated (#10534).
  • Fixed some warnings reported by Visual C++ 2013 (#10376).
  • Fixed integer type used in the WinRT version of the byte-order conversion functions (#10539).
  • Changed documentation to indicate that use_future and spawn() are not made available when including the asio.hpp convenience header (#10567).
  • Explicitly marked asio::strand as deprecated. Use asio::io_service::strand instead.
  • Circular Buffer:
  • Fixed some warnings and move_if_noexcept from Boost.Move is used #7888
  • Config:
  • BOOST_HAS_PRAGMA_DETECT_MISMATCH macro was added
  • Container:
  • Added support for initializer_list. Contributed by Robert Matusewicz.
  • Fixed double destruction bugs in vector and backward expansion capable allocators.
  • Fixed bugs:
  • Trac #10263 ("AIX 6.1 bug with sched_yield() function out of scope").
  • GitHub #16: Fix iterators of incomplete type containers. Thanks to Mikael Persson.
  • Coroutine:
  • optionally register stacks with valgrind
  • #10386 MSVC link error in asymmetric_coroutine.hpp: symbol already defined
  • #10536 call to 'begin(...pull_coroutine< R > & c)' is ambiguous
  • Flyweight:
  • Added serialization support via Boost Serialization.
  • flyweight default constructor was made explicit in Boost 1.56, which introduces a regression in some initialization scenarios. The former non-explicit default constructor has been restored (ticket #10439).
  • Geometry:
  • Improvements
  • The support of parameters convertible to value_type in rtree insert(), remove() and count() functions
  • Solved tickets
  • 8402 Implicit conversion warnings
  • 9354 Bug in winding strategy affecting within() and covered_by() for non-cartesian coordinate systems
  • 10177 Missing include
  • 10345 Distance fails to compile for some coordinate types
  • 10398 Wrong neighbour check in buffer, calculating turns
  • 10421 Invalid Point-Box distance for spherical CS
  • 10615 Rtree constructor feature request
  • 10643 Invalid point_on_surface() result for big coordinates
  • 10668 Implicit conversion warnings (duplicated 8402)
  • Bugfixes
  • Several fixes of bugs in algorithm buffer
  • Bug in point_on_surface() for CCW Polygons (extreme_points()) and numerical issue (thanks to Matt Amos)
  • Bug in disjoint() for A/A fixed by replacement of point_on_surface() with point_on_border() (thanks to Matt Amos)
  • The result of convex_hull(), duplicated Point in open output, too small number of Points for 1- and 2-Point input
  • Imprecision for big coordinates in centroid(), fixed by Points translation (related with ticket 10643)
  • for_each_segment() not taking into account the last segment of open Geometry
  • Interprocess:
  • Removed unique_ptr, now forwards boost::interprocess::unique_ptr to the general purpose boost::movelib::unique_ptr class from Boost.Move. This implementation is closer to the standard std::unique_ptr implementation and it's better maintained.
  • Fixed bugs:
  • Trac #10262 ("AIX 6.1 bug with variable definition hz").
  • Trac #10229 ("Compiling errors in interprocess\detail\os_file_functions.hpp").
  • Trac #10506 ("Infinite loop in create_or_open_file").
  • GitHub Pull #11 ("Compile fix for BOOST_USE_WINDOWS_H").
  • Reorganized Doxygen marks to obtain a better header reference.
  • Intrusive:
  • Experimental version of node checkers, contributed by Matei David. Many thanks!
  • Implemented N3644: Null Forward Iterators from C++14.
  • Fixed bugs:
  • GitHub Pull #12: Fix MSVC14 warning C4456: declaration of 'x_parent_right' hides previous local declaration
  • Boost Trac #10520: Conversion warning in intrusive/detail/utilities.hpp
  • Boost Trac #10469: Erasing from intrusive unordered_multiset with optimize_multikey goes into an infinite loop
  • Iterator:
  • Most components of the library were moved into the boost::iterators namespace. For backward compatibility the components are also accessible in the boost namespace.
  • Iterator operators are now conditionally defined based on the iterator category.
  • Some of the internal components of the library were made public (minimum_category, for example).
  • Lexical Cast:
  • Some internal changes, library now consist of multiple headers instead of a single one #10391, #10173
  • Math:
  • Added Hyperexponential Distribution.
  • Fix some spurious overflows in the incomplete gamma functions (with thanks to Rocco Romeo).
  • Fix bug in derivative of incomplete beta when a = b = 0.5 - this also effects several non-central distributions, see issue 10480.
  • Fixed some corner cases in function round.
  • Don't support 80-bit floats in cstdfloat.hpp if standard library support is broken.
  • Move:
  • Added unique_ptr smart pointer. Thanks to Howard Hinnant for his excellent unique_ptr emulation code and testsuite.
  • Added move_if_noexcept utility. Thanks to Antony Polukhin for the implementation.
  • Fixed bugs:
  • Trac #9785: "Compiler warning with intel icc in boost/move/core.hpp",
  • Trac #10460: "Compiler error due to looser throw specifier",
  • Git Pull #3: "Don't delete copy constructor when rvalue references are disabled",
  • MultiArray:
  • Fixed a friend-declaration related warning for clang (thanks to Marcel Raad).
  • Multiprecision:
  • Changed rational to float conversions to exactly round to nearest.
  • Added improved generic float to rational conversions.
  • Fixed rare bug in exponent function for cpp_bin_float.
  • Fixed various minor documentation issues.
  • Multi-index Containers:
  • When std::tuples are available, these can be used for lookup operations in indices equipped with composite keys. boost::tuples are also supported for backwards compatibility.
  • Preprocessor:
  • Added is_begin_parens and remove_parens.
  • Added tuple functionality to parallel all array functionality.
  • Fixed VC++ problems with empty tuple data.
  • Updated internal is_empty to use superior variadic version when variadic macros are supported.
  • Updated clang to have same variadic support as gcc.
  • Updated doc for new functionality.
  • Thread:
  • New Experimental Features:
  • #6227 Synchro: Use of variadic templates on Generic Locking Algorithms on compilers providing them
  • #10298 Synchro: Added queue views.
  • #10300 Async: Added generic_executor_ref.
  • #10552 Add make_valid_future
  • Fixed Bugs:
  • #6782 call_once uses incorrect barrier intrinsic on Visual Studio
  • #6787 boost::thread::sleep() hangs if system time is rolled back
  • #7665 this_thread::sleep_for no longer uses steady_clock in thread
  • #9307 future::fallback_to assert with ERRORRRRR boost: mutex lock failed in pthread_mutex_lock: Invalid argument
  • #9308 future::async fails with terminate called throwing an exception when called with a lambda - clang-darwin-asan11
  • #9310 test_4648_lib fails on clang-darwin-asan11
  • #9425 Boost promise & future does not use supplied allocator for value storage
  • #9558 future continuations unit test hangs in get()/pthread_cond_wait() on Mac 10.7/32-bit/x86/darwin-4.2.1
  • #9787 [windows] Small duration value passed down to basic_timed_mutex::try_lock_until and condition_variable::wait_until can cause infinite or near infinite wait for win32
  • #9880 [windows] boost::condition_variable.timed_wait() exception if system time < 1970
  • #10159 GCC 4.4 error sorry, unimplemented
  • #10196 thread_specific_ptr does not support void*
  • #10296 Boost.Thread 1.56 rc1 does not compile on Mingw
  • #10297 Boost.Thread 1.56 rc1 hangs when built with clang on armhf
  • #10340 No boost::promise::set_value(const T&) overload present in C++03 mode
  • #10425 Missing documentation for when_all/when_any.
  • #10426 Take in account the deferred futures in when_all.
  • #10427 Take in account the deferred and ready futures in when_any.
  • #10428 Adapt to new unique_ptr interface in Boost.Move
  • #10465 Missing implementation of when_all/when_any when the result is a tuple.
  • #10476 classes using BOOST_THREAD_MOVABLE_ONLY dont satisfy is_copy_constructible::value == false
  • #10478 Data race in boost/thread/future.hpp
  • #10529 The pthread/condition_variable_any constructor reports incorrect error code for pthread_cond_init
  • #10563 shared_future::then should be const
  • TypeIndex:
  • BOOST_HAS_PRAGMA_DETECT_MISMATCH is now used to detect ODR violations #10404
  • Typos fixed #10294
  • TypeTraits:
  • Added new traits is_copy_assignable and is_final.
  • Units:
  • New unit system units for: bit, byte, nat, hartley and shannon,
  • Add scale units for binary prefixes kibi, mebi, gibi, tebi, pebi, zebi and yobi IEC prefixes
  • Fix output of NaN on msvc-14
  • Add support for C++11 numeric_limits::max_digits10 and ::lowest
  • warning fixes
  • Unordered:
  • Fix the pointer typedef in iterators (#10672).
  • Fix Coverity warning (GitHub #2).
  • Utility:
  • The next() and prior() functions taking distance arguments were reworked. The code now work correctly when the distance is unsigned or both arguments are integers. The new code relies on the availability of operators supported by the first argument to select the correct implementation.
  • uBLAS:
  • added two new types: matrix_row and matrix_column facades . With them, it is possible to access to the matrices as an array of rows and an array of columns, respectively.
  • added fixed_vector/fixed_matrix classes to represent small - fixed size containers. Requires c++11 because it is using std::array
  • fixed the long standing banded matrix bug (https://svn.boost.org/trac/boost/ticket/7549).
  • the interface of matrices and vectors has been extended with cbegin, cend, crbegin and crend member functions, as defined in c++11.
  • removed doxygen documentation to make the distribution lighter
  • removed warnings with MSVC for unused parameters
  • changed the uBlas development folder structure (will not affect users of the library)
  • performed a very large overhaul with respect to warnings and errors on various compilers. Apart for some hard to resolve warnings and older compiler incompatibilities, compilations with uBlas will be much cleaner now.

New in Boost 1.57.0 Beta 1 (Oct 24, 2014)

  • Updated Libraries:
  • Coroutine:
  • optionally register stacks with valgrind
  • #10386 MSVC link error in asymmetric_coroutine.hpp: symbol already defined
  • #10536 call to 'begin(...pull_coroutine< R > & c)' is ambiguous
  • Flyweight:
  • Added serialization support via Boost Serialization.
  • flyweight default constructor was made explicit in Boost 1.56, which introduces a regression in some initialization scenarios. The former non-explicit default constructor has been restored (ticket #10439).
  • Geometry:
  • Improvements:
  • The support of parameters convertible to value_type in rtree insert(), remove() and count() functions
  • Solved tickets:
  • 8402 Implicit conversion warnings
  • 9354 Bug in winding strategy affecting within() and covered_by() for non-cartesian coordinate systems
  • 10177 Missing include
  • 10345 Distance fails to compile for some coordinate types
  • 10398 Wrong neighbour check in buffer, calculating turns
  • 10421 Invalid Point-Box distance for spherical CS
  • 10615 Rtree constructor feature request
  • 10643 Invalid point_on_surface() result for big coordinates
  • 10668 Implicit conversion warnings (duplicated 8402)
  • Bugfixes:
  • Several fixes of bugs in algorithm buffer
  • Bug in point_on_surface() for CCW Polygons (extreme_points()) and numerical issue (thanks to Matt Amos)
  • Bug in disjoint() for A/A fixed by replacement of point_on_surface() with point_on_border() (thanks to Matt Amos)
  • The result of convex_hull(), duplicated Point in open output, too small number of Points for 1- and 2-Point input
  • Imprecision for big coordinates in centroid(), fixed by Points translation (related with ticket 10643)
  • for_each_segment() not taking into account the last segment of open Geometry
  • Iterator:
  • Most components of the library were moved into the boost::iterators namespace. For backward compatibility the components are also accessible in the boost namespace.
  • Iterator operators are now conditionally defined based on the iterator category.
  • Some of the internal components of the library were made public (minimum_category, for example).
  • MultiArray:
  • Fixed a friend-declaration related warning for clang (thanks to Marcel Raad).
  • Multi-index Containers:
  • When std::tuples are available, these can be used for lookup operations in indices equipped with composite keys. boost::tuples are also supported for
  • backwards compatibility.
  • Preprocessor:
  • Added is_begin_parens and remove_parens.
  • Added tuple functionality to parallel all array functionality.
  • Fixed VC++ problems with empty tuple data.
  • Updated internal is_empty to use superior variadic version when variadic macros are supported.
  • Updated clang to have same variadic support as gcc.
  • Updated doc for new functionality.
  • Thread:
  • New Experimental Features:
  • #6227 Synchro: Use of variadic templates on Generic Locking Algorithms on compilers providing them
  • #10298 Synchro: Added queue views.
  • #10300 Async: Added generic_executor_ref.
  • #10552 Add make_valid_future
  • Fixed Bugs:
  • #6782 call_once uses incorrect barrier intrinsic on Visual Studio
  • #6787 boost::thread::sleep() hangs if system time is rolled back
  • #7665 this_thread::sleep_for no longer uses steady_clock in thread
  • #9307 future::fallback_to assert with ERRORRRRR boost: mutex lock failed in pthread_mutex_lock: Invalid argument
  • #9308 future::async fails with terminate called throwing an exception when called with a lambda - clang-darwin-asan11
  • #9310 test_4648_lib fails on clang-darwin-asan11
  • #9425 Boost promise & future does not use supplied allocator for value storage
  • #9558 future continuations unit test hangs in get()/pthread_cond_wait() on Mac 10.7/32-bit/x86/darwin-4.2.1
  • #9787 [windows] Small duration value passed down to basic_timed_mutex::try_lock_until and condition_variable::wait_until can cause infinite or near infinite wait for win32
  • #9880 [windows] boost::condition_variable.timed_wait() exception if system time < 1970
  • #10159 GCC 4.4 error sorry, unimplemented
  • #10196 thread_specific_ptr does not support void*
  • #10296 Boost.Thread 1.56 rc1 does not compile on Mingw
  • #10297 Boost.Thread 1.56 rc1 hangs when built with clang on armhf
  • #10340 No boost::promise::set_value(const T&) overload present in C++03 mode
  • #10425 Missing documentation for when_all/when_any.
  • #10426 Take in account the deferred futures in when_all.
  • #10427 Take in account the deferred and ready futures in when_any.
  • #10428 Adapt to new unique_ptr interface in Boost.Move
  • #10465 Missing implementation of when_all/when_any when the result is a tuple.
  • #10476 classes using BOOST_THREAD_MOVABLE_ONLY dont satisfy is_copy_constructible::value == false
  • #10478 Data race in boost/thread/future.hpp
  • #10529 The pthread/condition_variable_any constructor reports incorrect error code for pthread_cond_init
  • #10563 shared_future::then should be const
  • Units:
  • New unit system units for: bit, byte, nat, hartley and shannon,
  • Add scale units for binary prefixes kibi, mebi, gibi, tebi, pebi, zebi and yobi IEC prefixes
  • Fix output of NaN on msvc-14
  • Add support for C++11 numeric_limits::max_digits10 and ::lowest
  • warning fixes
  • Utility:
  • The next() and prior() functions taking distance arguments were reworked. The code now work correctly when the distance is unsigned or both arguments are integers. The new code relies on the availability of operators supported by the first argument to select the correct implementation.
  • uBLAS:
  • added two new types: matrix_row and matrix_column facades . With them, it is possible to access to the matrices as an array of rows and an array of columns, respectively.
  • added fixed_vector/fixed_matrix classes to represent small - fixed size containers. Requires c++11 because it is using std::array
  • fixed the long standing banded matrix bug (https://svn.boost.org/trac/boost/ticket/7549).
  • the interface of matrices and vectors has been extended with cbegin, cend, crbegin and crend member functions, as defined in c++11.
  • removed doxygen documentation to make the distribution lighter
  • removed warnings with MSVC for unused parameters
  • changed the uBlas development folder structure (will not affect users of the library)
  • performed a very large overhaul with respect to warnings and errors on various compilers. Apart for some hard to resolve warnings and older compiler incompatibilities, compilations with uBlas will be much cleaner now.

New in Boost 1.56.0 (Aug 8, 2014)

  • Modularization:
  • Boost version control has migrated to a system using git submodules. This shouldn't make too much of a difference to users, although the directory structure is now a bit different.
  • Parts of some libraries have been moved into different modules, and several new modules have been extracted from existing code. All header paths should remain the same. The new modules are:
  • Assert: Customizable assert macros. Maintained by Peter Dimov.
  • Core: Core utilities used by other libraries, with minimal dependencies. Maintained by Peter Dimov, Glen Fernandes and Andrey Semashev.
  • Lexical_Cast: General literal text conversions, such as an int represented a string, or vice-versa, from Kevlin Henney.
  • Throw_Exception: A common infrastructure for throwing exceptions from Boost libraries, from Emil Dotchevski.
  • Winapi: Windows API declarations without , for internal Boost use.
  • New Libraries:
  • Align: Memory alignment functions, allocators, and adaptors, from Glen Fernandes.
  • Type_Index: Runtime/Compile time copyable type info, from Antony Polukhin.
  • Updated Libraries:
  • Acumulators:
  • New accumulators rolling_variance and rolling_moment
  • Any:
  • Fixed rvalue references related issues (#9215, #9462).
  • Dropped support of antique compilers.
  • Asio:
  • Fixed asio::spawn() to work correctly with new Boost.Coroutine interface (#9442, #9928).
  • Ensured that incomplete asio::spawn() coroutines are correctly unwound when cleaned up by the io_service destructor (#9731).
  • Fixed delegation of continuation hook for handlers produced by io_service::wrap() and strand::wrap() (#9741).
  • Changed the Windows I/O completion port backend to use ConnectEx, if available, for connection-oriented IP sockets.
  • Changed the io_service backend for non-Windows (and non-IOCP Windows) platforms to use a single condition variable per io_service instance. This addresses a potential race condition when run_one() is used from multiple threads.
  • Prevented integer overflow when computing timeouts based on some boost::chrono and std::chrono clocks (#9662, #9778).
  • Made further changes to EV_CLEAR handling in the kqueue backend, to address other cases where the close() system call may hang on Mac OS X.
  • Fixed infinite recursion in implementation of resolver_query_base::flags::operator~ (#9548).
  • Made the select reactor more efficient on Windows for large numbers of sockets (#9528).
  • Fixed a Windows-specific type-aliasing issue reported by gcc (#9550).
  • Prevented execution of compile-time-only buffer test to avoid triggering an address sanitiser warning (#8295).
  • Disabled the GetQueuedCompletionStatus timeout workaround on recent versions of Windows.
  • Added support for string-based scope IDs when using link-local multicast addresses.
  • Changed IPv6 multicast group join to use the address's scope ID as the interface, if an interface is not explicitly specified.
  • Fixed multicast test failure on Mac OS X and the BSDs by using a link-local multicast address.
  • Worked around a gcc problem to do with anonymous enums (#10042).
  • Reverted the Windows HANDLE backend change to ignore ERROR_MORE_DATA. Instead, the error will be propagated as with any other (i.e. in an error_code or thrown as a system_error), and the number of bytes transferred will be returned. For code that needs to handle partial messages, the error_code overload should be used (#10034).
  • Fixed an off-by-one error in the signal_set implementation's signal number check (#9324).
  • Changed to use SSE2 intrinsics rather than inline assembly, to allow the Cray compiler to work.
  • Stopped using certain Winsock functions that are marked as deprecated in the latest Visual C++ and Windows SDK.
  • Added a workaround for building the unit tests with gcc on AIX.
  • Various minor documentation improvements (#8295, #9605, #9771).
  • Assign:
  • Resolve some C++11 ambiguities (#3073).
  • Atomic:
  • The library has been redesigned. Besides internal refactoring, various bugs were fixed, including incorrect values of feature test macros and integer overflow handling.
  • Changed values of the memory_order enumeration. The concrete values are not part of the interface, but this change may potentially break ABI, if the enum is used in user's interfaces.
  • Implemented support for 128-bit atomic operations on Windows x64 with MSVC. The library assumes presence of the cmpxchg16b instruction in the target CPUs. Some early AMD CPUs don't support this instruction. To target those define the BOOST_ATOMIC_NO_CMPXCHG16B macro.
  • Implemented experimental support for Windows ARM target with MSVC.
  • Implemented experimental support for DEC Alpha target with GCC.
  • Improved support for ARMv6 and later with GCC. Implemented all atomic operations as assembler blocks instead of CAS-based loops. 64-bit operations are supported with ARMv7.
  • Implemented optional support for the BOOST_ATOMIC_FLAG_INIT macro and static initialization of atomic_flag. (#8158)
  • Fixed compilation for SPARCv9 target. (#9446)
  • Fixed compilation for PowerPC target. (#9447)
  • Fixed several compatibility problems with Clang on x86 and x86-64. (#9610, #9842)
  • Removed specialized code for Windows on IA64 platform.
  • Circular Buffer:
  • #9970,#9334 Support for the C++11 allocator model.
  • Dropped support of antique compilers.
  • Concept Check:
  • Fewer warnings (includes #5012).
  • Container:
  • Added DlMalloc-based Extended Allocators.
  • Improved configurability of tree-based ordered associative containers. AVL, Scapegoat and Splay trees are now available to implement set, multiset, map and multimap.
  • Fixed bugs:
  • #9338: "VS2005 compiler errors in swap() definition after including container/memory_util.hpp".
  • #9637: "Boost.Container vector::resize() performance issue".
  • #9648: "string construction optimization - char_traits::copy could be used ...".
  • #9801: "I can no longer create and iterator_range from a stable_vector".
  • #9915: "Documentation issues regarding vector constructors and resize methods - value/default initialization".
  • #9916: "Allocator propagation incorrect in the assignment operator of most".
  • #9931: "flat_map::insert(ordered_unique_range_t...) fails with move_iterators".
  • #9955: "Using memcpy with overlapped buffers in vector".
  • Context:
  • fcontext_t is opaque pointer to context-data
  • changed signature of make_fcontext()
  • #8826 no executable stack
  • #9437 catch exceptions on iOS and Windows Phone 8
  • #9445 support for x32 ABIs
  • #9522 support for powerpc_64le
  • #9743 bugfix for powerpc_64 le/be
  • #9774 bugfix for x86 on Mac OS X + clang
  • Coroutine:
  • support of symmetric coroutines
  • #9355 fix race condition in protected_stack_allocator
  • #9551 list of supported architectures
  • #9734 wrong check of mmap() return value
  • #9735 no memset() for protected_stack_allocator
  • #9760 coroutine iterator need const operator==
  • #10070 mmap() return value
  • #10157 file descriptor not required in protected_stack_allocator
  • Dynamic Bitset:
  • Support for C++11 move constructors
  • Warning fixes on MSVC 2013
  • Support for C++11 minimal allocators
  • Add noexcept specifications
  • Chrono:
  • #6918 Boost Chrono compilation failure on HP uX due to undefined pthread_getcpuclockid
  • #8006 Boost::Chrono Assertion at startup - steady_clock::now() - Windows
  • #9337 chrono::process_cpu_clock time points wrong by factor 1000 on Linux
  • #9342 Regression on process_cpu_clock::timepoint io on V2
  • #9419 boost::chrono::floor()/round() and negative durations is wrong
  • #9698 boost::chrono::thread_clock not declared in OSX
  • #9720 boost::this_thread::sleep_for() sometimes returns immediately on win32
  • #9859 Remove references to gcc-mingw
  • #9918 chrono compilation error on Solaris, funciton timegm
  • #9811 boost/boost/chrono/duration.hpp:355:56: error: call to non-constexpr function 'static std::numeric_limits::_Ty std::numeric_limits::max()' /home/zosun/input_service/inputservices-core-service/other/boost/boost/chrono/duration.hpp: In static member function 'static constexpr double boost::chrono::detail::chrono_numeric_limits::lowest()':
  • #10069 Overflow in chrono clocks on 32bit
  • #10151 timegm function not available on QNX
  • Flyweight:
  • In compilers with variadic template support, boost::flyweight now provides a perfectly forwarding constructor to T::T (previously an emulation was used).
  • flyweight now replicates the initializer-list constructors and assignment operators of its underlying type.
  • Fixed intermodule static initialization problem (ticket #9553).
  • Maintenance fixes.
  • Fusion:
  • Fusion is enabled for use on GPU
  • Geometry:
  • Additional functionality
  • New algorithm buffer for inflating/deflating geometries (buffer itself already existed but that was only to enlarge a box)
  • New algorithm remove_spikes, algorithm to remove spikes from a ring, polygon or multi_polygon.
  • New algorithm point_on_surface, generating a point lying on the surface (interior) of the polygon
  • New algorithm is_simple, returning true if a geometry is simple according to the OGC standard
  • New algorithm is_valid, returning true if a geometry is valid according to the OGC standard
  • New algorithm crosses for checking this spatial relation according to the OGC standard
  • The set operation algorithms (difference, intersection, sym_difference and union_) now support as input pairs of pointlike or linear geometries
  • The distance and comparable_distance algorithms now support all pairs of geometry combinations
  • The spatial relations which didn't support it (covered_by, touches, within, etc.) now support as input linear and/or areal geometries
  • The support for boost::variants as input geometries in various algorithms
  • The rtree support for indexing segments
  • The rtree nearest() predicate support for arbitrary geometries
  • Solved tickets
  • 8310 Wrong results with overlapping polygons (fixed using point_on_surface for disjoint)
  • 9081 Booleans create self-intersecting polygons from non-self-intersecting polygons
  • 9245 Check for process errors in make_qbk.py
  • 9563 (Sym)difference not successful, fixed by rescaling to robust type
  • 9628 Wrong result of within() due to the winding strategy not working correctly for nearly-horizontal segments
  • 9871 Remove spike in polygon with only a spike
  • 9947 Missing info about WKT in documentation
  • 10019 Difference of Linestring and Box returns their intersection
  • 10077 Wrong types in concept checks in boost/geometry/arithmetic/arithmetic.hpp
  • Bug fixes
  • intersects(polygon) could return a self-intersection-point for its closing point, fixed
  • equals() could return invalid results for non-simple linear geometries according to the OGC standard, fixed
  • touches() didn't work properly for CCW areal geomtries, fixed
  • rtree nearest queries returned wrong elements for non-cartesian coordinate systems, fixed
  • rtree crashed in some cases when used with Interprocess allocator, fixed
  • Hash:
  • Removed some Visual C++ 6 workarounds.
  • Ongoing work on improving hash_combine, this changes the previously documented algorithm for the function.
  • Interprocess:
  • Fixed bugs:
  • Trac #9221 ("message_queue deadlock on linux").
  • Trac #9226 ("On some computers, Common Appdata is empty in registry, so boost interprocess cannot work").
  • Trac #9284 ("WaitForSingleObject(mutex) must handle WAIT_ABANDONED").
  • Trac #9285 ("CreateMutex returns NULL if fails").
  • Trac #9288 ("timed_wait does not check if it has expired").
  • Trac #9408 ("Android does not support XSI_SHARED_MEMORY_OBJECTS").
  • Trac #9729 ("crash on managed_external_buffer object construction").
  • Trac #9767 ("bootstamp generation causes error in case of corrupt Windows Event Log").
  • Trac #9835 ("Boost Interprocess fails to compile with Android NDK GCC 4.8, -Werror=unused-variable").
  • Trac #9911 ("get_tmp_base_dir(...) failure").
  • Trac #9946 ("ret_ptr uninitialized in init_atomic_func, fini_atomic_func").
  • Trac #10011 ("segment_manager::find( unique_instance_t* ) fails to compile").
  • Trac #10021 ("Interprocess and BOOST_USE_WINDOWS_H").
  • GitHub #2 ("Provide support for the Cray C++ compiler. The Cray compiler defines __GNUC__").
  • GitHub #3 ("Fix/mingw interprocess_exception throw in file_wrapper::priv_open_or_create").
  • ABI breaking: #9221 showed that BOOST_INTERPROCESS_MSG_QUEUE_CIRCULAR_INDEX option of message queue, was completely broken so an ABI break was necessary to have a working implementation.
  • Simplified, refactored and unified (timed_)lock code based on try_lock(). There were several bugs when handling timeout expirations.
  • Changed the implementation of condition variables' destructors to allow POSIX semantics (the condition variable can be destroyed after all waiting threads have been woken up)..
  • Added BOOST_INTERPROCESS_SHARED_DIR_PATH option to define the shared directory used to place shared memory objects when implemented as memory mapped files.
  • Added support for BOOST_USE_WINDOWS_H. When this macro is defined Interprocess does not declare used Windows API function and types, includes all needed windows SDK headers and uses types and functions declared by the Windows SDK.
  • Added get_size to windows_shared_memory.
  • Intrusive:
  • Improved Doxygen generated reference and updated and fixed forward-declaration header.
  • ABI breaking: Fixed ABI regression introduced in Boost 1.55 version, mainly noticeable on MSVC compilers.
  • Source breaking: Removed previously deprecated xxx_dont_splay functions from splay containers, splay_set_base_hook and splay_set_member_hookfrom splay containers and bool splay = true extra parameter in splaytree_algorithms functions.
  • Fixed bugs:
  • #8468: Compile error on visual studio 2010/2012 using vector with custom allocator and aligned types
  • #9332: "has_member_function_callable_with.hpp compile error on msvc-12.0".
  • #9650: "intrusive list with stateful value traits".
  • #9746: Modern Sun CC compiler detects error in intrusive library header
  • #9940: bad bug in intrusive list with safe_link (or auto_unlink) hooks
  • #9948: remove use of const_cast in intrusive containers
  • #9949: clear header node hooks upon intrusive container destruction
  • #9961: tests for hooks not derived frorm generic_hook
  • Optimized tree rebalancing code to avoid redundant assignments.
  • Added 64 bit prime values for suggested_upper_bucket_count/suggested_lower_bucket_count in 64 bit platforms.
  • Deleted workarounds for old SUN_CC compilers, those are now unsupported as modern SunPro compilers are standard-corforming enough.
  • Lexical Cast:
  • Added the try_lexical_convert function, that retuns false in case of failed conversion and does not require output parameter to be Default Constructable (#6700).
  • Fixed conversion of string values with leading zeroes to bool (#9659).
  • Code was changed to produce a smaller binaries and simplify compiler's work (#9046).
  • Boost.LexicalCast library was separated from the Boost.Conversion library.
  • Fixed some warnings (#8991).
  • Log:
  • General changes:
  • For Windows targets, the library now compiles for Windows XP by default.
  • Added indexing operators with attribute_name arguments to record and record_view.
  • Added operators for non-const object output to basic_formatting_ostream. (#9389)
  • Added support for putting function names and source file names of named scopes into the formatted strings. (#9263)
  • Added support for incomplete and empty markers to the named scope formatter. (#9123)
  • The default presentation for incomplete named scope lists has changed: trailing scope delimiter is omitted.
  • Added a support header for std::regex.
  • By default Boost.Log uses Boost.Regex internally as the regular expressions backend. The backend can be changed by defining configuration macros.
  • Bug fixes:
  • Fixed dump manipulator output on AVX2-enabled CPUs (e.g. Intel Haswell).
  • Fixed compilation of get_attribute method of loggers.
  • Fixed a possible race in locked_backend() function implementation of synchronous and asynchronous sink frontends.
  • Fixed a possible infinite block of the logging threads in the asynchronous sink enqueue methods when block_on_overflow strategy was used.
  • See changelog for more details.
  • Math:
  • Breaking change: moved a number of non-core headers that are predominantly used for internal maintenance into libs/math/include_private. The headers effected are boost/math/tools/test_data.hpp, boost/math/tools/remez.hpp, boost/math/constants/generate.hpp, boost/math/tools/solve.hpp, boost/math/tools/test.hpp. You can continue to use these headers by adding libs/math/include_private to your compiler's include path.
  • Breaking change: A number of distributions and special functions were returning the maximum finite value rather than raising an overflow_error, this has now been fixed, which means these functions now behave as documented. However, since the default behavior on raising an overflow_error is to throw a std::overflow_error exception, applications which have come to reply rely on these functions not throwing may experience exceptions where they did not before. The special functions involved are gamma_p_inva, gamma_q_inva, ibeta_inva, ibetac_inva, ibeta_invb, ibetac_invb, gamma_p_inv, gamma_q_inv. The distributions involved are pareto_distrib, beta_distrib, geometric_distrib, negative_binomial_distrib, binomial_distrib, chi_squared_distrib, gamma_distrib, inverse_chi_squared_distrib, inverse_gamma_distrib. See #10111.
  • Fix round and trunc functions so they can be used with integer arguments, see #10066.
  • Fix Halley iteration to handle zero derivative (with non-zero second derivative), see #10046.
  • Fix Geometric distribution use of Policies, see #9833.
  • Fix corner cases in the negative binomial distribution, see #9834.
  • Fix compilation failures on Mac OS.
  • Added bernoulli_numbers, changed arbitrary precision tgamma/lgamma to use Sterling's approximation (from Nikhar Agrawal).
  • Added first derivatives of the Bessel functions: cyl_bessel_j_prime, cyl_neumann_prime, cyl_bessel_i_prime, cyl_bessel_k_prime, sph_bessel_prime and sph_neumann_prime (from Anton Bikineev).
  • Fixed buggy Student's t example code, along with docs for testing sample means for equivalence.
  • Documented max_iter parameter in root finding code better, see #9225.
  • Add option to explicitly enable/disable use of __float128 in constants code, see #9240.
  • Cleaned up handling of negative values in Bessel I0 and I1 code (removed dead code), see #9512.
  • Fixed handling of very small values passed to tgamma and lgamma so they don't generate spurious overflows (thanks to Rocco Romeo).
  • #9672 PDF and CDF of a Laplace distribution throwing domain_error Random variate can now be infinite.
  • Fixed several corner cases in rising_factorial, falling_factorial and tgamma_delta_ratio with thanks to Rocco Romeo.
  • Removed constant pow23_four_minus_pi whose value did not match the name (and was unused by Boost.Math), see #9712.
  • Move:
  • Added BOOST_MOVE_RET.
  • Fixed bug #9482: "MSVC macros not undefined in boost/move/detail/config_end.hpp", #9045: "Wrong macro name on docs", #8420: "move's is_convertible does not compile with aligned data".
  • MPL:
  • boost::mpl::for_each is enabled for use on GPU
  • MultiArray:
  • #5664 operator() checks for Collection concept but requires RandomAccessCollection
  • #4874 compile errors using Visual C++ 2010 in debug mode
  • #3581 MultiArray storage order example incorrect for fortran_storage_ordering
  • #4032 Move MultiArray concepts out of detail namespace
  • #9212 Broken links to C++ standard papers
  • #8368 GCC -Wundef warning about BOOST_MULTI_ARRAY_NO_GENERATORS in multi_array
  • Multi-index Containers:
  • The erase(iterator) member function of hashed indices used to have poor performance under low load conditions due to the requirement that an iterator to the next element must be returned (see ticket #4264). In accordance with the resolution of LWG issue #579, this problem has been fixed while maintaining the interface of erase, at the expense of using one more word of memory per element. In fact, C++ complexity requirements on unordered associative containers have been improved for hashed indices so that
  • deletion of a given element is unconditionally constant-time,
  • worst-case performance is not O(n) but O(ndist), where ndist is the number of non-equivalent elements in the index.
  • Due to the fact that hashed indices rely on a new data structure, the internal representation of their iterators and local iterators have changed, which affects serialization: their corresponding serialization class version has been bumped from 0 to 1. Old archives involving hashed index (local) iterators can be loaded by Boost 1.56 version of Boost.MultiIndex, but not the other way around.
  • Hashed indices now provide reserve.
  • Hashed indices can now be checked for equality and inequality following the (suitably adapted) C++ standard specification in [unord.req].
  • The public interface of Boost.MultiIndex provide noexcept specifications where appropriate (for compliant compilers).
  • Improved performance of failed insertions into a multi_index_container.
  • Much internal code aimed at supporting MSVC++ 7.0 and prior has been removed. Compilation times without this legacy code might be slightly faster.
  • Fixed a bug with insertion via iterators dereferencing to rvalues (ticket #9665).
  • Made Boost.MultiIndex compatible with BOOST_BIND_NO_PLACEHOLDERS (ticket #9798).
  • Maintenance fixes.
  • Multiprecision:
  • Change floating point to rational conversions to be implicit, see 10082.
  • Fix definition of checked_cpp_rational typedef.
  • Fix bug in assignment from string in cpp_int, see 9936.
  • Added new cpp_bin_float backend for binary floating point.
  • Fix bug in assignment from string in cpp_int, see 9936.
  • Added MSVC-specific #include for compiler intrinsics, see 9336.
  • Fixed various typos in docs, see 9432.
  • Fixed gmp_rational to allow move-copy from an already copied-from object, see 9497.
  • Added list of values for numeric_limits.
  • Odeint:
  • Added algebra and operations dispatcher for automatic detection of appropriate algebras and operations.
  • Added support for Eigen, Boost.Multiarray, Boost.Mpi, Boost.Compute, Blaze, and NT2.
  • Changed algebra interface to use algebra.norm_inf function.
  • Added iterators for iterating through the solution of the ODEs, hence an alternative to the integrate functions.
  • Added the Velocity-Verlet method.
  • Minor bug fixes.
  • Optional:
  • Added support for rvalue references. Now optional works with moveable but non-copyable T's.
  • Improved swap (now uses move operations).
  • Added function emplace(). This is the last of the requests from #1841.
  • optional is moveable, including conditional noexcept specifications, which make it move_if_noexcept-friendly.
  • Using explicit operator bool() on platforms that support it (#4227) (breaking change).
  • Forward declaration of operator

New in Boost 1.56.0 Beta 1 (Jul 19, 2014)

  • Modularization:
  • Boost version control has migrated to a system using git submodules. This shouldn't make too much of a difference to users, although the directory structure is now a bit different.
  • Parts of some libraries have been moved into different modules, and several new modules have been extracted from existing code. All header paths should remain the same. The new modules are:
  • Assert: Customizable assert macros. Maintained by Peter Dimov.
  • Core: Core utilities used by other libraries, with minimal dependencies. Maintained by Peter Dimov, Glen Fernandes and Andrey Semashev.
  • Lexical_Cast: General literal text conversions, such as an int represented a string, or vice-versa, from Kevlin Henney.
  • Throw_Exception: A common infrastructure for throwing exceptions from Boost libraries, from Emil Dotchevski.
  • Winapi: Windows API declarations without , for internal Boost use.
  • New Libraries:
  • Align: Memory alignment functions, allocators, and adaptors, from Glen Fernandes.
  • Type_Index: Runtime/Compile time copyable type info, from Antony Polukhin.
  • Updated Libraries:
  • Any:
  • Fixed rvalue references related issues (#9215, #9462).
  • Dropped support of antique compilers.
  • Assign:
  • Resolve some C++11 ambiguities (#3073).
  • Atomic:
  • The library has been redesigned. Besides internal refactoring, various bugs were fixed, including incorrect values of feature test macros and integer overflow handling.
  • Changed values of the memory_order enumeration. The concrete values are not part of the interface, but this change may potentially break ABI, if the enum is used in user's interfaces.
  • Implemented support for 128-bit atomic operations on Windows x64 with MSVC. The library assumes presence of the cmpxchg16b instruction in the target CPUs. Some early AMD CPUs don't support this instruction. To target those define the BOOST_ATOMIC_NO_CMPXCHG16B macro.
  • Implemented experimental support for Windows ARM target with MSVC.
  • Implemented experimental support for DEC Alpha target with GCC.
  • Improved support for ARMv6 and later with GCC. Implemented all atomic operations as assembler blocks instead of CAS-based loops. 64-bit operations are supported with ARMv7.
  • Implemented optional support for the BOOST_ATOMIC_FLAG_INIT macro and static initialization of atomic_flag. (#8158)
  • Fixed compilation for SPARCv9 target. (#9446)
  • Fixed compilation for PowerPC target. (#9447)
  • Fixed several compatibility problems with Clang on x86 and x86-64. (#9610, #9842)
  • Removed specialized code for Windows on IA64 platform.
  • Circular Buffer:
  • #9970,#9334 Support for the C++11 allocator model.
  • Dropped support of antique compilers.
  • Concept Check:
  • Fewer warnings (includes #5012).
  • Context:
  • fcontext_t is opaque pointer to context-data
  • changed signature of make_fcontext()
  • #8826 no executable stack
  • #9437 catch exceptions on iOS and Windows Phone 8
  • #9445 support for x32 ABIs
  • #9522 support for powerpc_64le
  • #9743 bugfix for powerpc_64 le/be
  • #9774 bugfix for x86 on Mac OS X + clang
  • Coroutine:
  • support of symmetric coroutines
  • #9355 fix race condition in protected_stack_allocator
  • #9551 list of supported architectures
  • #9734 wrong check of mmap() return value
  • #9735 no memset() for protected_stack_allocator
  • #9760 coroutine iterator need const operator==
  • #10070 mmap() return value
  • #10157 file descriptor not required in protected_stack_allocator
  • Dynamic Bitset:
  • Support for C++11 move constructors
  • Warning fixes on MSVC 2013
  • Support for C++11 minimal allocators
  • Add noexcept specifications
  • Chrono:
  • #6918 Boost Chrono compilation failure on HP uX due to undefined pthread_getcpuclockid
  • #8006 Boost::Chrono Assertion at startup - steady_clock::now() - Windows
  • #9337 chrono::process_cpu_clock time points wrong by factor 1000 on Linux
  • #9342 Regression on process_cpu_clock::timepoint io on V2
  • #9419 boost::chrono::floor()/round() and negative durations is wrong
  • #9698 boost::chrono::thread_clock not declared in OSX
  • #9720 boost::this_thread::sleep_for() sometimes returns immediately on win32
  • #9859 Remove references to gcc-mingw
  • #9918 chrono compilation error on Solaris, funciton timegm
  • #9811 boost/boost/chrono/duration.hpp:355:56: error: call to non-constexpr function 'static std::numeric_limits::_Ty std::numeric_limits::max()' /home/zosun/input_service/inputservices-core-service/other/boost/boost/chrono/duration.hpp: In static member function 'static constexpr double boost::chrono::detail::chrono_numeric_limits::lowest()':
  • #10069 Overflow in chrono clocks on 32bit
  • #10151 timegm function not available on QNX
  • Flyweight:
  • In compilers with variadic template support, boost::flyweight now provides a perfectly forwarding constructor to T::T (previously an emulation was used).
  • flyweight now replicates the initializer-list constructors and assignment operators of its underlying type.
  • Fixed intermodule static initialization problem (ticket #9553).
  • Maintenance fixes.
  • Lexical Cast:
  • Added the try_lexical_convert function, that retuns false in case of failed conversion and does not require output parameter to be Default Constructable (#6700).
  • Fixed conversion of string values with leading zeroes to bool (#9659).
  • Code was changed to produce a smaller binaries and simplify compiler's work (#9046).
  • Boost.LexicalCast library was separated from the Boost.Conversion library.
  • Fixed some warnings (#8991).
  • Log:
  • General changes:
  • For Windows targets, the library now compiles for Windows XP by default.
  • Added indexing operators with attribute_name arguments to record and record_view.
  • Added operators for non-const object output to basic_formatting_ostream. (#9389)
  • Added support for putting function names and source file names of named scopes into the formatted strings. (#9263)
  • Added support for incomplete and empty markers to the named scope formatter. (#9123)
  • The default presentation for incomplete named scope lists has changed: trailing scope delimiter is omitted.
  • Added a support header for std::regex.
  • By default Boost.Log uses Boost.Regex internally as the regular expressions backend. The backend can be changed by defining configuration macros.
  • Bug fixes:
  • Fixed dump manipulator output on AVX2-enabled CPUs (e.g. Intel Haswell).
  • Fixed compilation of get_attribute method of loggers.
  • Fixed a possible race in locked_backend() function implementation of synchronous and asynchronous sink frontends.
  • Fixed a possible infinite block of the logging threads in the asynchronous sink enqueue methods when block_on_overflow strategy was used.
  • Math:
  • Fix Geometric distribution use of Policies, see #9833.
  • Fix corner cases in the negative binomial distribution, see #9834.
  • Fix compilation failures on Mac OS.
  • Added bernoulli_numbers, changed arbitrary precision tgamma/lgamma to use Sterling's approximation (from Nikhar Agrawal).
  • Added first derivatives of the Bessel functions: cyl_bessel_j_prime, cyl_neumann_prime, cyl_bessel_i_prime, cyl_bessel_k_prime, sph_bessel_prime and sph_neumann_prime (from Anton Bikineev).
  • Fixed buggy Student's t example code, along with docs for testing sample means for equivalence.
  • Documented max_iter parameter in root finding code better, see #9225.
  • Add option to explicitly enable/disable use of __float128 in constants code, see #9240.
  • Cleaned up handling of negative values in Bessel I0 and I1 code (removed dead code), see #9512.
  • Fixed handling of very small values passed to tgamma and lgamma so they don't generate spurious overflows (thanks to Rocco Romeo).
  • #9672 PDF and CDF of a Laplace distribution throwing domain_error Random variate can now be infinite.
  • Fixed several corner cases in rising_factorial, falling_factorial and tgamma_delta_ratio with thanks to Rocco Romeo.
  • Removed constant pow23_four_minus_pi whose value did not match the name (and was unused by Boost.Math), see #9712.
  • MultiArray:
  • #5664 operator() checks for Collection concept but requires RandomAccessCollection
  • #4874 compile errors using Visual C++ 2010 in debug mode
  • #3581 MultiArray storage order example incorrect for fortran_storage_ordering
  • #4032 Move MultiArray concepts out of detail namespace
  • #9212 Broken links to C++ standard papers
  • #8368 GCC -Wundef warning about BOOST_MULTI_ARRAY_NO_GENERATORS in multi_array
  • Multi-index Containers:
  • The erase(iterator) member function of hashed indices used to have poor performance under low load conditions due to the requirement that an iterator to the next element must be returned (see ticket #4264). In accordance with the resolution of LWG issue #579, this problem has been fixed while maintaining the interface of erase, at the expense of using one more word of memory per element. In fact, C++ complexity requirements on unordered associative containers have been improved for hashed indices so that
  • deletion of a given element is unconditionally constant-time,
  • worst-case performance is not O(n) but O(ndist), where ndist is the number of non-equivalent elements in the index.
  • Due to the fact that hashed indices rely on a new data structure, the internal representation of their iterators and local iterators have changed, which affects serialization: their corresponding serialization class version has been bumped from 0 to 1. Old archives involving hashed index (local) iterators can be loaded by Boost 1.56 version of Boost.MultiIndex, but not the other way around.
  • Hashed indices now provide reserve.
  • Hashed indices can now be checked for equality and inequality following the (suitably adapted) C++ standard specification in [unord.req].
  • The public interface of Boost.MultiIndex provide noexcept specifications where appropriate (for compliant compilers).
  • Improved performance of failed insertions into a multi_index_container.
  • Much internal code aimed at supporting MSVC++ 7.0 and prior has been removed. Compilation times without this legacy code might be slightly faster.
  • Fixed a bug with insertion via iterators dereferencing to rvalues (ticket #9665).
  • Made Boost.MultiIndex compatible with BOOST_BIND_NO_PLACEHOLDERS (ticket #9798).
  • Maintenance fixes.
  • Multiprecision:
  • Added new cpp_bin_float backend for binary floating point.
  • Fix bug in assignment from string in cpp_int, see 9936.
  • Added MSVC-specific #include for compiler intrinsics, see 9336.
  • Fixed various typos in docs, see 9432.
  • Fixed gmp_rational to allow move-copy from an already copied-from object, see 9497.
  • Added list of values for numeric_limits.
  • Optional:
  • Added support for rvalue references. Now optional works with moveable but non-copyable T's.
  • Improved swap (now uses move operations).
  • Added function emplace(). This is the last of the requests from #1841.
  • optional is moveable, including conditional noexcept specifications, which make it move_if_noexcept-friendly.
  • Using explicit operator bool() on platforms that support it (#4227) (breaking change).
  • Forward declaration of operator

New in Boost 1.55.0 (Nov 13, 2013)

  • Accumulators:
  • #7915 Fix silly typos.
  • #8850 Fix MSVC warnings.
  • #8262 Rename average to fdiv.
  • Any:
  • boost::bad_any_cast exception is now visible across modules #8751.
  • Added clear() member function.
  • Added missing BOOST_NOEXCEPT.
  • Fixed issue with const rvalues #9215.
  • Asio:
  • Implemented a limited port to Windows Runtime. This support requires that the language extensions be enabled. Due to the restricted facilities exposed by the Windows Runtime API, the port also comes with the following caveats:
  • The core facilities such as the io_service, strand, buffers, composed operations, timers, etc., should all work as normal.
  • For sockets, only client-side TCP is supported.
  • Explicit binding of a client-side TCP socket is not supported.
  • The cancel() function is not supported for sockets. Asynchronous operations may only be cancelled by closing the socket.
  • Operations that use null_buffers are not supported.
  • Only tcp::no_delay and socket_base::keep_alive options are supported.
  • Resolvers do not support service names, only numbers. I.e. you must use "80" rather than "http".
  • Most resolver query flags have no effect.
  • Fixed a regression (introduced in Boost 1.54) where, on some platforms, errors from async_connect were not correctly propagated through to the completion handler (#8795).
  • Fixed a Windows-specific regression (introduced in Boost 1.54) that occurs when multiple threads are running an io_service. When the bug occurs, the result of an asynchronous operation (error and bytes transferred) is incorrectly discarded and zero values used instead. For TCP sockets this results in spurious end-of-file notifications (#8933).
  • Fixed a bug in handler tracking, where it was not correctly printing out some handler IDs (#8808).
  • Fixed the comparison used to test for successful synchronous accept operations so that it works correctly with unsigned socket descriptors (#8752).
  • Ensured the signal number is correctly passed to the completion handler when starting an async_wait on a signal that is already raised (#8738).
  • Suppressed a g++ 4.8+ warning about unused typedefs (#8980).
  • Enabled the move optimisation for handlers that use the default invocation hook (#8624).
  • Clarified that programs must not issue overlapping async_write_at operations (#8669).
  • Changed the Windows HANDLE backend to treat ERROR_MORE_DATA as a non-fatal error when returned by GetOverlappedResult for a synchronous read (#8722).
  • Visual C++ language extensions use generic as a keyword. Added a workaround that renames the namespace to cpp_generic when those language extensions are in effect.
  • Fixed some asynchronous operations that missed out on getting async_result support in Boost 1.54. In particular, the buffered stream templates have been updated so that they adhere to current handler patterns (#9000, #9001).
  • Enabled move support for Microsoft Visual Studio 2012 (#8959).
  • Added use_future support for Microsoft Visual Studio 2012.
  • Removed a use of std::min in the Windows IOCP backend to avoid a dependency on the header (#8758).
  • Eliminated some unnecessary handler copies.
  • Fixed various minor and cosmetic issues in code and documentation (including #8347, #8950, #8953, #8965, #8997).
  • Atomic:
  • Added support for 64-bit atomic operations on x86 target for GCC, MSVC and compatible compilers. The support is enabled when it is known at compile time that the target CPU supports required instructions.
  • Added support for 128-bit atomic operations on x86-64 target for GCC and compatible compilers. The support is enabled when it is known at compile time that the target CPU supports required instructions. The support can be tested for with the new BOOST_ATOMIC_INT128_LOCK_FREE macro.
  • Added a more efficient implementation of atomic based on GCC __atomic* intrinsics available since GCC 4.7.
  • Added support for more ARM v7 CPUs, improved detection of Thumb 2.
  • Added support for x32 (i.e. 64-bit x86 with 32-bit pointers) target on GCC and compatible compilers.
  • Removed dependency on Boost.Thread.
  • Internal lock pool now includes proper padding and alignment to avoid false sharing.
  • Fixed compilation with Intel compiler on Windows. Removed internal macro duplication when compiled on Windows.
  • Some code refactoring to use C++11 features when available.
  • Chrono:
  • Fixed Bugs:
  • #7868 chrono_io parses time incorrectly (1.53 and 1.52)
  • #9028 Typo in boost/chrono/stopwatches/formatters/base_formatter.hpp
  • #9147 uninitialized std::tm
  • Circular Buffer:
  • Added support for rvalue references and rvalue references emulation using Boost.Move. Values are moved only if value type has noexcept move constructor and noexcept move assignment operator #7888. Now Circular Buffer is usable with move-only types.
  • Much better documentation.
  • #5362 circular_buffer does not compile with BOOST_NO_EXCEPTIONS.
  • #7025 circular buffer reports warning: " type qualifiers ignored on function return type" while compile.
  • #7950 Eliminate W4-warnings under VS2005 - warning C4913: user defined binary operator ',' exists but no overload could convert all operands, default built-in binary operator ',' used.
  • Config:
  • Breaking change: Removed support for some older compilers. The new minimum compiler versions are:
  • Digitial Mars 8.41
  • GCC 3.3
  • Intel 6.0
  • Visual C++ 7.1
  • Other compilers are unchanged.
  • Container:
  • Implemented SCARY iterators.
  • Fixed bugs #8269, #8473, #8892, #9009, #9064, #9092, #9108.
  • Context:
  • #8650 SSE2 intrinsics
  • Coroutine:
  • New interface (unidirectional data transfer).
  • #8782 no best alternative
  • #8801 auto-linking
  • Filesystem:
  • Fixed Android compilation #8706.
  • Fusion:
  • #8759 specialization of convert_impl for map_tag
  • Geometry:
  • Additional functionality
  • Added centroid for segment type
  • Added intersects() and disjoints() for Segment-Box and Linestring-Box
  • Added rtree creation using packing algorithm
  • Added contains() and covers() spatial query predicates
  • Added iterative queries
  • Bugfixes
  • In some cases .back() or .clear() was called, violating the usage of Concepts. Fixed for the reported cases
  • Solved tickets
  • 6958 Intersection generates self-intersection. Caused by spike, fixed
  • 8364 Invalid input exception, caused by spikes in previous steps, fixed
  • 8365 Invalid input exception, caused by spikes in previous steps, fixed
  • 8969 boost::geometry::model::point single argument constructor should be explicit
  • 8825 Patch adding member variable documentation to doxygen_xml2qbk
  • 8652 Intersection fails for triangle-triangle intersection. Caused by spike, fixed
  • 9047 Boost files that include themselves (strategies/intersection.hpp), fixed
  • Graph:
  • void is no longer allowed as a bundled property type (for example, in the VertexProperties template parameters to graph types); it did not work reliably before, but a static assertion now forbids it entirely. Use boost::no_property instead.
  • Added support for finish_edge visitor event point in depth-first search; the change should be backward-compatible with visitors that do not have that member function.
  • Disabled building of tests on Sun compiler.
  • Multiple source vertices are supported in non-named-parameter versions of breadth_first_visit, breadth_first_search, dijkstra_shortest_paths, and dijkstra_shortest_paths_no_init. This feature is not yet documented; to use it, replace the single parameter for the source vertex in each of these functions by two input iterators of the same type containing the source vertices to use.
  • Added Hawick circuits algorithm; contributed by Louis Dionne.
  • Added edge coloring algorithm; contributed by Maciej Piechotka.
  • Added min-cost max-flow algorithm; contributed by Piotr Wygocki.
  • Bugs and feature requests from Trac fixed: #5269, #8317, #8433, #8791, #8877, #8986, #9012, #9080.
  • Hash:
  • Simplify a SFINAE check so that it will hopefully work on Sun 5.9 (#8822).
  • Suppress Visual C++ infinite loop warning (#8568).
  • Interprocess:
  • Fixed bugs #7156, #7164, #8277, #8976, #9065, #9073, #9008.
  • Intrusive:
  • Source breaking: Deprecated xxx_dont_splay functions from splay containers. Deprecated splay_set_hook from splay containers, use bs_set_hook instead. Both will be removed in Boost 1.56.
  • ABI breaking: Hash containers' end iterator was implemented pointing to one-past the end of the bucket array (see #8698) causing severe bugs when values to be inserted where allocated next to the bucket array. End iterator implementation was changed to point to the beginning of the bucket array.
  • Big refactoring in order to reduce template and debug symbol bloat. Test object files have been slashed to half in MSVC compilers in Debug mode. Toolchains without Identical COMDAT Folding (ICF) should notice size improvements.
  • Implemented SCARY iterators.
  • Lexical cast:
  • std::bad_alloc exceptions are now are not converted to boost::bad_lexical_cast #8966.
  • Added static assert that checks for std::numeric_limits specializations if they are required for conversion. Use BOOST_HAS_INT128 for detecting 128 bit integers support #8790.
  • Documentation improved and more usage examples added.
  • Log:
  • General changes:
  • Added a new configuration macro BOOST_LOG_WITHOUT_DEFAULT_FACTORIES. By defining this macro the user can disable compilation of the default filter and formatter factories used by settings parsers. This can substantially reduce binary sizes while still retaining support for settings parsers.
  • Rewritten some of the parsers to reduce the compiled binary size. The rewritten parsers are more robust in detecting ambiguous and incorrect input.
  • The following headers are deprecated: boost/log/utility/intrusive_ref_counter.hpp, boost/log/utility/explicit_operator_bool.hpp, boost/log/utility/empty_deleter.hpp. These headers will be removed in future releases. The contents of these headers were moved to other libraries.
  • Bug fixes:
  • Fixed timer attribute generating incorrect time readings on Windows on heavy thread contention when QueryPerformanceCounter API was used.
  • Fixed a bug in the filter parser that prevented using parsed filters with some attributes.
  • Fixed thread id formatting discrepancies between the default sink and formatters.
  • Closed tickets: #8815, #8819, #8915, #8917, #9139, #9140, #9153, #9155.
  • See changelog for more details.
  • Math:
  • Suppress numerous warnings (mostly from GCC-4.8 and MSVC) #8384, #8855, #9107, #9109..
  • Fixed PGI compilation issue #8333.
  • Fixed PGI constant value initialization issue that caused erf to generate incorrect results #8621.
  • Prevent macro expansion of some C99 macros that are also C++ functions #8732 and #8733..
  • Fixed Student's T distribution to behave correctly with huge degrees of freedom (larger than the largest representable integer) #8837.
  • Make some core functions usable with long double even when the platform has no standard library long double support #8940.
  • Fix error handling of distributions to catch invalid scale and location parameters when the random variable is infinite #9042 and #9126.
  • Add workaround for broken in Intel C++ 14 #9087.
  • Improve consistency of argument reduction in the elliptic integrals #9104.
  • Fix bug in inverse incomplete beta that results in cancellation errors when the beta function is really an arcsine or Student's T distribution.
  • Fix issue in Bessel I and K function continued fractions that causes spurious over/underflow.
  • Add improvement to non-central chi squared distribution quantile due to Thomas Luu.
  • Move:
  • Fixed bugs #7952, #8764, #8765, #8842, #8979.
  • Meta State Machine:
  • New feature: interrupt states now support a sequence of events to end the interruption.
  • Fixed Trac #8686.
  • Multiprecision:
  • Added support for Boost.Serialization.
  • Suppressed some GCC warnings. See 8872.
  • Fixed bug in pow for large integer arguments. See 8809.
  • Fixed bug in pow for calculation of 0[super N]. See 8798.
  • Fixed bug in fixed precision cpp_int IO code that causes conversion to string to fail when the bit count is very small (less than CHAR_BIT). See 8745.
  • Fixed bug in cpp_int that causes left shift to fail when a fixed precision type would overflow. See 8741.
  • Fixed some cosmetic warnings from cpp_int. See 8748.
  • Fixed calls to functions which are required to be macros in C99. See 8732.
  • Fixed bug that causes construction from INT_MIN, LONG_MIN etc to fail in cpp_int. See 8711.
  • Multi-index Containers:
  • Boost.MultiIndex has been brought to a higher level of compliance with C++11.
  • multi_index_container is now efficiently movable.
  • Initializer lists supported.
  • Emplace functions provided.
  • Non-copyable elements (such as std::unique_ptr) supported. This includes insertion of a range [first,last) where the iterators point to a type that is convertible to that of the element: no copy construction happens in the process.
  • Random access indices provide shrink_to_fit().
  • Refer to the compiler specifics section for limitations on pre-C++11 compilers.
  • The following classes are deprecated:
  • member_offset,
  • const_mem_fun_explicit,
  • mem_fun_explicit,
  • composite_key_result_equal_to,
  • composite_key_result_less,
  • composite_key_result_greater,
  • composite_key_result_hash.
  • Maintenance fixes:
  • MPI:
  • Replaced calls to deprecated MPI functions
  • Added support for multi-threaded initialization
  • Added in-place collectives
  • Phoenix:
  • #9049 phoenix::function constructor is constexpr.
  • Polygon:
  • Updated CGAL part of the Voronoi benchmark with patches from Sebastien Loriot. Updated documentation.
  • Added polygon decomposition capability to polygon_90_set_data container (patch from Intel). Updated documentation.
  • Bugs fixed from Trac: #8197.

New in Boost 1.55.0 Beta 1 (Oct 8, 2013)

  • New Libraries:
  • Predef: This library defines a set of compiler, architecture, operating system, library, and other version numbers from the information it can gather of C, C++, Objective C, and Objective C++ predefined macros or those defined in generally available headers, from Rene Rivera.
  • Updated Libraries:
  • Accumulators:
  • #7915 Fix silly typos.
  • #8850 Fix MSVC warnings.
  • #8262 Rename average to fdiv.
  • Any:
  • boost::bad_any_cast exception is now visible across modules #8751.
  • Added clear() member function.
  • Added missing BOOST_NOEXCEPT.
  • Asio:
  • Implemented a limited port to Windows Runtime. This support requires that the language extensions be enabled. Due to the restricted facilities exposed by the Windows Runtime API, the port also comes with the following caveats:
  • The core facilities such as the io_service, strand, buffers, composed operations, timers, etc., should all work as normal.
  • For sockets, only client-side TCP is supported.
  • Explicit binding of a client-side TCP socket is not supported.
  • The cancel() function is not supported for sockets. Asynchronous operations may only be cancelled by closing the socket.
  • Operations that use null_buffers are not supported.
  • Only tcp::no_delay and socket_base::keep_alive options are supported.
  • Resolvers do not support service names, only numbers. I.e. you must use "80" rather than "http".
  • Most resolver query flags have no effect.
  • Fixed a regression (introduced in Boost 1.54) where, on some platforms, errors from async_connect were not correctly propagated through to the completion handler (#8795).
  • Fixed a Windows-specific regression (introduced in Boost 1.54) that occurs when multiple threads are running an io_service. When the bug occurs, the result of an asynchronous operation (error and bytes transferred) is incorrectly discarded and zero values used instead. For TCP sockets this results in spurious end-of-file notifications (#8933).
  • Fixed a bug in handler tracking, where it was not correctly printing out some handler IDs (#8808).
  • Fixed the comparison used to test for successful synchronous accept operations so that it works correctly with unsigned socket descriptors (#8752).
  • Ensured the signal number is correctly passed to the completion handler when starting an async_wait on a signal that is already raised (#8738).
  • Suppressed a g++ 4.8+ warning about unused typedefs (#8980).
  • Enabled the move optimisation for handlers that use the default invocation hook (#8624).
  • Clarified that programs must not issue overlapping async_write_at operations (#8669).
  • Changed the Windows HANDLE backend to treat ERROR_MORE_DATA as a non-fatal error when returned by GetOverlappedResult for a synchronous read (#8722).
  • Visual C++ language extensions use generic as a keyword. Added a workaround that renames the namespace to cpp_generic when those language extensions are in effect.
  • Fixed some asynchronous operations that missed out on getting async_result support in Boost 1.54. In particular, the buffered stream templates have been updated so that they adhere to current handler patterns (#9000, #9001).
  • Enabled move support for Microsoft Visual Studio 2012 (#8959).
  • Added use_future support for Microsoft Visual Studio 2012.
  • Removed a use of std::min in the Windows IOCP backend to avoid a dependency on the header (#8758).
  • Eliminated some unnecessary handler copies.
  • Fixed various minor and cosmetic issues in code and documentation (including #8347, #8950, #8953, #8965, #8997).
  • Atomic:
  • Added support for 64-bit atomic operations on x86 target for GCC, MSVC and compatible compilers. The support is enabled when it is known at compile time that the target CPU supports required instructions.
  • Added support for 128-bit atomic operations on x86-64 target for GCC and compatible compilers. The support is enabled when it is known at compile time that the target CPU supports required instructions. The support can be tested for with the new BOOST_ATOMIC_INT128_LOCK_FREE macro.
  • Added a more efficient implementation of atomic based on GCC __atomic* intrinsics available since GCC 4.7.
  • Added support for more ARM v7 CPUs, improved detection of Thumb 2.
  • Added support for x32 (i.e. 64-bit x86 with 32-bit pointers) target on GCC and compatible compilers.
  • Removed dependency on Boost.Thread.
  • Internal lock pool now includes proper padding and alignment to avoid false sharing.
  • Fixed compilation with Intel compiler on Windows. Removed internal macro duplication when compiled on Windows.
  • Some code refactoring to use C++11 features when available.
  • Chrono:
  • Fixed Bugs:
  • #7868 chrono_io parses time incorrectly (1.53 and 1.52)
  • #9028 Typo in boost/chrono/stopwatches/formatters/base_formatter.hpp
  • #9147 uninitialized std::tm
  • Circular Buffer:
  • Added support for rvalue references and rvalue references emulation using Boost.Move. Values are moved only if value type has noexcept move constructor and noexcept move assignment operator #7888. Now Circular Buffer is usable with move-only types.
  • Much better documentation.
  • #5362 circular_buffer does not compile with BOOST_NO_EXCEPTIONS.
  • #7025 circular buffer reports warning: " type qualifiers ignored on function return type" while compile.
  • #7950 Eliminate W4-warnings under VS2005 - warning C4913: user defined binary operator ',' exists but no overload could convert all operands, default built-in binary operator ',' used.
  • Config:
  • Breaking change: Removed support for some older compilers. The new minimum compiler versions are:
  • Digitial Mars 8.41
  • GCC 3.3
  • Intel 6.0
  • Visual C++ 7.1
  • Other compilers are unchanged.
  • Container:
  • Implemented SCARY iterators.
  • Fixed bugs #8269, #8473, #8892, #9009, #9064, #9092, #9108.
  • Context:
  • #8650 SSE2 intrinsics
  • Coroutine:
  • New interface (unidirectional data transfer).
  • #8782 no best alternative
  • #8801 auto-linking
  • Filesystem:
  • Fixed Android compilation #8706.
  • Fusion:
  • #8759 specialization of convert_impl for map_tag
  • Geometry:
  • Additional functionality
  • Added centroid for segment type
  • Added intersects() and disjoints() for Segment-Box and Linestring-Box
  • Added rtree creation using packing algorithm
  • Added contains() and covers() spatial query predicates
  • Added iterative queries
  • Bugfixes
  • In some cases .back() or .clear() was called, violating the usage of Concepts. Fixed for the reported cases
  • Solved tickets
  • 6958 Intersection generates self-intersection. Caused by spike, fixed
  • 8364 Invalid input exception, caused by spikes in previous steps, fixed
  • 8365 Invalid input exception, caused by spikes in previous steps, fixed
  • 8969 boost::geometry::model::point single argument constructor should be explicit
  • 8825 Patch adding member variable documentation to doxygen_xml2qbk
  • 8652 Intersection fails for triangle-triangle intersection. Caused by spike, fixed
  • 9047 Boost files that include themselves (strategies/intersection.hpp), fixed
  • Graph:
  • void is no longer allowed as a bundled property type (for example, in the VertexProperties template parameters to graph types); it did not work reliably before, but a static assertion now forbids it entirely. Use boost::no_property instead.
  • Added support for finish_edge visitor event point in depth-first search; the change should be backward-compatible with visitors that do not have that member function.
  • Disabled building of tests on Sun compiler.
  • Multiple source vertices are supported in non-named-parameter versions of breadth_first_visit, breadth_first_search, dijkstra_shortest_paths, and dijkstra_shortest_paths_no_init. This feature is not yet documented; to use it, replace the single parameter for the source vertex in each of these functions by two input iterators of the same type containing the source vertices to use.
  • Added Hawick circuits algorithm; contributed by Louis Dionne.
  • Added edge coloring algorithm; contributed by Maciej Piechotka.
  • Added min-cost max-flow algorithm; contributed by Piotr Wygocki.
  • Bugs and feature requests from Trac fixed: #5269, #8317, #8433, #8791, #8877, #8986, #9012, #9080.
  • Hash:
  • Simplify a SFINAE check so that it will hopefully work on Sun 5.9 (#8822).
  • Suppress Visual C++ infinite loop warning (#8568).
  • Interprocess:
  • Fixed bugs #7156, #7164, #8277, #8976, #9065, #9073, #9008.
  • Intrusive:
  • Source breaking: Deprecated xxx_dont_splay functions from splay containers. Deprecated splay_set_hook from splay containers, use bs_set_hook instead. Both will be removed in Boost 1.56.
  • ABI breaking: Hash containers' end iterator was implemented pointing to one-past the end of the bucket array (see #8698) causing severe bugs when values to be inserted where allocated next to the bucket array. End iterator implementation was changed to point to the beginning of the bucket array.
  • Big refactoring in order to reduce template and debug symbol bloat. Test object files have been slashed to half in MSVC compilers in Debug mode. Toolchains without Identical COMDAT Folding (ICF) should notice size improvements.
  • Implemented SCARY iterators.
  • Lexical cast:
  • std::bad_alloc exceptions are now are not converted to boost::bad_lexical_cast #8966.
  • Added static assert that checks for std::numeric_limits specializations if they are required for conversion. Use BOOST_HAS_INT128 for detecting 128 bit integers support #8790.
  • Documentation improved and more usage examples added.
  • Log:
  • General changes:
  • Added a new configuration macro BOOST_LOG_WITHOUT_DEFAULT_FACTORIES. By defining this macro the user can disable compilation of the default filter and formatter factories used by settings parsers. This can substantially reduce binary sizes while still retaining support for settings parsers.
  • Rewritten some of the parsers to reduce the compiled binary size. The rewritten parsers are more robust in detecting ambiguous and incorrect input.
  • The following headers are deprecated: boost/log/utility/intrusive_ref_counter.hpp, boost/log/utility/explicit_operator_bool.hpp, boost/log/utility/empty_deleter.hpp. These headers will be removed in future releases. The contents of these headers were moved to other libraries.
  • Bug fixes:
  • Fixed timer attribute generating incorrect time readings on Windows on heavy thread contention when QueryPerformanceCounter API was used.
  • Fixed a bug in the filter parser that prevented using parsed filters with some attributes.
  • Fixed thread id formatting discrepancies between the default sink and formatters.
  • Closed tickets: #8815, #8819, #8915, #8917, #9139, #9140, #9153, #9155.
  • See changelog for more details.
  • Math:
  • Suppress numerous warnings (mostly from GCC-4.8 and MSVC) #8384, #8855, #9107, #9109..
  • Fixed PGI compilation issue #8333.
  • Fixed PGI constant value initialization issue that caused erf to generate incorrect results #8621.
  • Prevent macro expansion of some C99 macros that are also C++ functions #8732 and #8733..
  • Fixed Student's T distribution to behave correctly with huge degrees of freedom (larger than the largest representable integer) #8837.
  • Make some core functions usable with long double even when the platform has no standard library long double support #8940.
  • Fix error handling of distributions to catch invalid scale and location parameters when the random variable is infinite #9042 and #9126.
  • Add workaround for broken in Intel C++ 14 #9087.
  • Improve consistency of argument reduction in the elliptic integrals #9104.
  • Fix bug in inverse incomplete beta that results in cancellation errors when the beta function is really an arcsine or Student's T distribution.
  • Fix issue in Bessel I and K function continued fractions that causes spurious over/underflow.
  • Move:
  • Fixed bugs #7952, #8764, #8765, #8842, #8979.
  • Meta State Machine:
  • New feature: interrupt states now support a sequence of events to end the interruption.
  • Fixed Trac #8686.
  • Multiprecision:
  • Added support for Boost.Serialization.
  • Suppressed some GCC warnings. See 8872.
  • Fixed bug in pow for large integer arguments. See 8809.
  • Fixed bug in pow for calculation of 0[super N]. See 8798.
  • Fixed bug in fixed precision cpp_int IO code that causes conversion to string to fail when the bit count is very small (less than CHAR_BIT). See 8745.
  • Fixed bug in cpp_int that causes left shift to fail when a fixed precision type would overflow. See 8741.
  • Fixed some cosmetic warnings from cpp_int. See 8748.
  • Fixed calls to functions which are required to be macros in C99. See 8732.
  • Fixed bug that causes construction from INT_MIN, LONG_MIN etc to fail in cpp_int. See 8711.
  • Multi-index Containers:
  • Boost.MultiIndex has been brought to a higher level of compliance with C++11.
  • multi_index_container is now efficiently movable.
  • Initializer lists supported.
  • Emplace functions provided.
  • Non-copyable elements (such as std::unique_ptr) supported. This includes insertion of a range [first,last) where the iterators point to a type that is convertible to that of the element: no copy construction happens in the process.
  • Random access indices provide shrink_to_fit().
  • Refer to the compiler specifics section for limitations on pre-C++11 compilers.
  • The following classes are deprecated:
  • member_offset,
  • const_mem_fun_explicit,
  • mem_fun_explicit,
  • composite_key_result_equal_to,
  • composite_key_result_less,
  • composite_key_result_greater,
  • composite_key_result_hash.
  • Maintenance fixes.

New in Boost 1.46.1 (Mar 15, 2011)

  • Bug fixes: Asio, Fusion, Graph, Icl, Math, Polygon, Proto, Property Tree, Signals2, TR1, Unordered.

New in Boost 1.45.0 (Nov 20, 2010)

  • Updated Libraries: Asio, Config, Flyweight, Foreach, Fusion, Graph, Interprocess, Math, Meta State Machine, MultiArray, Proto, Spirit, TypeTraits, uBLAS, Unordered, Wave, Xpressive.
  • Updated tools: Boostbook, Quickbook

New in Boost 1.45.0 Beta 1 (Nov 10, 2010)

  • New Libraries: Meta State Machine, Polygon. Updated Libraries: Accumulators, Asio, Config, Filesystem, Foreach, Fusion, Hash, Iostreams, Math, MPL, Multi-index Containers, Proto, Regex, Spirit, Thread, TR1, Type Traits, uBLAS, Utility, Uuid, Wave, Xpressive. Updates for Quickbook and Boostbook.

New in Boost 1.44.0 (Aug 16, 2010)

  • New Libraries: Functional/Factory, Functional/Forward. Major Update: Range. Updated Libraries: Accumulators, Array, Asio, Fusion, Iostreams, Multi-index Containers, Proto, Random, Spirit, Thread, Unordered, Uuid, Wave, Xpressive. Also, updates to the build system and quickbook.

New in Boost 1.43.0 Beta 1 (Apr 21, 2010)

  • New Libraries: Uuid. Updated Libraries: Asio, Circular Buffer, Fusion, Graph, Integer, Iostreams, Program.Options, PropertyMap, Proto, Regex, Spirit, Unordered, Xpressive.

New in Boost 1.38.0 Beta 2 (Jan 31, 2009)

  • New Libraries:
  • Flyweight:
  • Design pattern to manage large quantities of highly redundant objects, from Joaquín M López Muñoz.
  • ScopeExit:
  • Execute arbitrary code at scope exit, from Alexander Nasonov.
  • Swap:
  • Enhanced generic swap function, from Joseph Gauterin.
  • Updated Libraries"
  • Accumulators:
  • Add rolling_sum, rolling_count and rolling_mean accumulators.
  • Date_Time:
  • Added support for formatting and reading time durations longer than 24 hours with new formatter: %0.
  • Removed the testfrmwk.hpp file from the public include directory.
  • Fixed several bugs and compile errors.
  • For full details see the change history
  • Exception:
  • Improved and more customizable diagnostic_information output.
  • Hash:
  • boost/functional/detail/container_fwd.hpp has been moved to boost/detail/container_fwd.hpp. The current location is deprecated.
  • For more detail, see the library changelog.
  • Interprocess:
  • Updated documentation to show rvalue-references funcions instead of emulation functions.
  • More non-copyable classes are now movable.
  • Move-constructor and assignments now leave moved object in default-constructed state instead of just swapping contents.
  • Several bugfixes (#2391, #2431, #1390, #2570, #2528).
  • Intrusive:
  • New treap-based containers: treap, treap_set, treap_multiset.
  • Corrected compilation bug for Windows-based 64 bit compilers.
  • Corrected exception-safety bugs in container constructors.
  • Updated documentation to show rvalue-references funcions instead of emulation functions.
  • Math:
  • Added Johan Råde's optimised floating point classification routines.
  • Fixed code so that it compiles in GCC's -pedantic mode (bug report #1451).
  • Multi-index Containers: Some redundant type definitions have been deprecated. Consult the library release notes for further information.
  • Proto:
  • Fix problem with SFINAE of binary operators (Bug 2407).
  • Fix proto::call transform for callable transforms with >3 arguments.
  • result_of::value changed behavior for array-by-value terminals.
  • unpack_expr requires only Forward Sequences rather than Random Access Sequences.
  • Deprecate legacy undocumented BOOST_PROTO_DEFINE_(VARARG_)FUNCTION_TEMPLATE macros.
  • Add BOOST_PROTO_REPEAT and BOOST_PROTO_LOCAL_ITERATE macros to help with repetitive code generation
  • Support for nullary expressions with tag types other than proto::tag::terminal
  • Allow 0- and 1-argument variants of proto::or_ and proto::and_
  • Regex:
  • Breaking change: empty expressions, and empty alternatives are now allowed when using the Perl regular expression syntax. This change has been added for Perl compatibility, when the new syntax_option_type no_empty_expressions is set then the old behaviour is preserved and empty expressions are prohibited. This is issue #1081.
  • Added support for Perl style ${n} expressions in format strings (issue #2556).
  • Added support for accessing the location of sub-expressions within the regular expression string (issue #2269).
  • Fixed compiler compatibility issues #2244, #2514, and #2458.
  • Unordered:
  • Use boost::swap.
  • Use a larger prime number list for selecting the number of buckets.
  • Use aligned storage to store the types.
  • Add support for C++0x initializer lists where they're available.
  • For more detail, see the library changelog.
  • Xpressive:
  • basic_regex gets nested syntax_option_flags and value_type typedef, for compatibility with std::basic_regex
  • Ported to Proto v4; Proto v2 at boost/xpressive/proto has been removed.
  • regex_error inherits from boost::exception
  • Other Changes
  • Experimental support for building Boost with CMake has been introduced in this version. For more details see the wiki, Discussion is taking place on the Boost-cmake mailing list.

New in Boost 1.37.0 (Nov 4, 2008)

  • New Library: Proto.
  • Updated Libraries: Asio, Circular Buffer, Dynamic Bitset, Exception, Hash, Interprocess, Intrusive, Math, Type Traits, Unordered

New in Boost 1.36.0 (Oct 7, 2008)

  • New Libraries: Accumulators, Exception, Units, Unordered. Updated Libraries: Asio, Assign, Circular Buffer, Foreach, Function, Hash, Interprocess, Intrusive, Math, Multi-index Containers, MPI, PtrContainer, Spirit, Thread, Wave, Xpressive.