Version 1.58.0
April 17th, 2015 07:53 GMT
Documentation
Known Issue
- 
          Boost.Python will fail to build if it is compiled against a version of
          python that is one of: 3.0.X, 3.1.X, 3.2.X, 3.3.X. Versions 2.X and 3.4+
          are not affected. This is fixed in git.
        
- 
          Boost.Fusion has a regression with non-constexpr types. #11211
  This
          is fixed in some PRs: Github
          PR #70, Github
          PR #71, Github
          PR #72
      Patches:
    
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
- 
Asio:
- 
                Ensured errors generated by Windows' ConnectExfunction are mapped to their portable equivalents (#10744).
- 
                Added new macro BOOST_ASIO_DISABLE_CONNECTEXto allow use ofConnectExto be explicitly disabled.
- 
                Fixed a race condition in windows::object_handlewhen there are pending wait operations on destruction (#10624).
- 
                Fixed IPv6 address parsing on FreeBSD, where a trailing scope ID
                would cause conversion to fail with EINVAL.
- 
                Worked around shared library visibility issues by ensuring Asio types
                use default visibility (#9465, #11070).
              
- 
                Changed the SSL wrapper to call the password callback when loading
                an in-memory key (#10828).
              
- 
                Fixed false SSL error reports by ensuring that the SSL error queue
                is cleared prior to each operation.
              
- 
                Fixed an ssl::stream<>bug that may result in spurious 'short read' errors.
- 
                Removed a redundant null pointer check in the SSL engine (#10088).
              
- 
                Added options for disabling TLS v1.1 and v1.2 (#10690).
              
- 
                Removed use of deprecated OpenSSL function ERR_remove_state.
- 
                Fixed detection of various C++11 features with Clang (#8835,
                #10884).
              
- 
                Fixed detection of C++11 std::addressofwith g++ (#10982).
- 
                Changed multicast test to treat certain join_groupfailures as non-fatal.
- 
                Decoupled Asio unit tests from Boost.Test (#11116).
              
- 
                Changed the tutorial to use std::endlto ensure output is flushed.
- 
                Fixed an unsigned integer overflow reported by Clang's integer sanitizer.
              
- 
                Added support for move-only return types when using a yield_contextobject with asynchronous
                operations.
- 
                Changed yield_contextto allow reentrant calls to the completion handler from an initiating
                function.
- 
                Updated detection of Windows Runtime to work with latest Windows
                SDK.
              
 
- 
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<int> >
                    
 
 
- 
Container:
- 
                Experimental small_vectorcontainer.
- 
                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 nthandindex_offunctions to containers
                with random-access iterators (exceptbasic_string).
- 
                Added C++17's allocator_traits<Allocator>::is_always_equal.
- 
                Updated containers to implement new constructors as specified in
                2210.
                Missing allocator-extended constructor for allocator-aware containers.
              
- 
                Fixed bugs:
                
- 
Source Breaking: scoped_allocator_adaptor'spropagate_on_container_copy_assignment,propagate_on_container_move_assignmentandpropagate_on_container_swapare no longer::boost::integral_constant<bool, true/false>types. The dependency reorganization
                needed to break with those classes to avoid MPL dependencies, and
                interoperability withstd::integral_constantwas not guaranteed. Code assummingboost::true_type/boost::false_typeon this will not compile. As a workaround, use the guaranteed internal::valueconstant:::boost::integral_constant<bool, scoped_allocator_adaptor<Allocator>::propagate_on_container_move_assignment::value>.
 
- 
Context:
- 
                support for ARM/iOS (32+64 bit)
              
- 
                class execution_context (C++14)
              
 
- 
Conversion:
- 
polymorphic_pointer_downcastandpolymorphic_pointer_castfunctions were added (thanks to Boris Rasin) #10780
- 
                All the functions now throw exceptions using boost::throw_exception
- 
                Documnetation update
              
 
- 
DateTime:
- 
                Restored to_time_tfunction.
- 
                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::hashandboost::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 ofboost::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<Seq, N>::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)
              
 
- 
Geometry:
- 
Additional functionality:
- 
                      New algorithm num_segments, returning the number of segments
                      of a geometry
                    
- 
                      New overload for is_valid algorithm, that takes a string reference
                      as a second argument and fills it with a message related to
                      the validity or invalidity of the geometry
                    
- 
                      New overload for is_valid algorithm, that takes an enum reference
                      as a second argument and fills it with a value related to the
                      validity or invalidity of the geometry
                    
- 
                      Disjoint and intersects support the following geometry combinations:
                      point/multipoint, multipoint/multipoint, multipoint/segment,
                      multipoint/box
                    
 
- 
Improvements:
- 
                      Buffer now supports flat-ends for linestrings with a bend close
                      to the start (such that buffered segment crosses flat-end).
                    
- 
                      Buffer performance is improved significantly
                    
- 
                      Partition performance is improved significantly for polygons,
                      potentially enhancing all overlay operations
                    
 
- 
Solved tickets:
- 
#8379
                      Invalid comparison of the result of determinant
                    
- 
#10108
                      Error in overlay operations in specific cases where geometries
                      touch at one point
                    
- 
#10201
                      Suggestion to use different function to compare coordinates
                      [wontfix]
                    
- 
#10467
                      Template parameter name coliding with B0 macro name defined
                      in termios.h
                    
- 
#10640
                      Invalid result of buffer() for CCW Polygons.
                    
- 
#10666
                      MSVC compiler warning C4127: conditional expression is constant
                    
- 
#10747
                      Error in rescaling causing errors in areal/areal set operations
                    
- 
#10770
                      Buffer fails for large distances, or rough round joins, where
                      concavities where not intersected properly
                    
- 
#10658
                      sym_difference yields bad result for int polygons
                    
- 
#10835
                      Difference of multilinestring and polygon yields wrong result
                    
- 
#10861
                      Rtree failing to compile for Value being a pair or a tuple
                      containing pointer to Geometry and the default equal_to<>
                      used
                    
- 
#10863
                      Template parameter name coliding with B0 macro name defined
                      in termios.h (duplicate of 10467)
                    
- 
#10887
                      Invalid result of within() and relate() for Linear/MultiPolygon
                    
- 
#10890
                      Invalid result of disjoint() for Point/Segment.
                    
- 
#10904
                      Invalid calculation of most significant Dimension of a segment
                      in relate_cartesian_segments strategy
                    
- 
#10912
                      Invalid result of within() and relate() for Areal/Areal
                    
- 
#10951
                      Tests failing on windows with intel compiler due to lack of
                      /bigobj flag.
                    
- 
#10957
                      Assertion failure and invalid results of various relational
                      operations.
                    
- 
#10958
                      Invalid results of disjoint() L/L and L/A.
                    
- 
#10959
                      Assertion failure in get_turns() used with no_rescale_policy.
                    
- 
#10960
                      Invalid result of get_turns() for L/A, missing turn.
                    
- 
#10961
                      Invalid result of get_turns() for L/A, invalid turn for a Linear
                      spike.
                    
- 
#11112
                      Compilation failure on Solaris due to a CS name clash (used
                      for a macro on this platform)
                    
- 
#11121
                      Invalid result of difference() for integral coordinates
                    
 
- 
Bugfixes:
- 
                      Bug in multipoint/polygon multipoint/multipolygon distance
                      computation (wrong detection of points inside the areal geometry)
                    
- 
                      Bug in flatten_iterator's assignment operator causing an access
                      violation
                    
- 
                      Bug in Cartesian segment-segment intersection strategy when
                      one segment degenerates to a point and is collinear to the
                      other non-degenerate segment
                    
- 
                      Bug in centroid(), non-deterministic result if calculated for
                      e.g. a Polygon with zero-area.
                    
- 
                      Bug in buffers for joins with a limited number of points
                    
- 
                      Bug in buffers for round joins with limited number of points
                      around sharp corners
                    
- 
                      Bug in buffers for joins with large buffer distances
                    
- 
                      Bug in buffers for round ends with an odd number of points
                    
- 
                      Bug in buffers for flat ends with large buffer distances
                    
- 
                      Bug in buffers for interior rings with large negative buffer
                      distances
                    
- 
                      Bug in closing_iterator not working properly when the input
                      range is empty
                    
- 
                      Bug in is_simple, not handling properly closed simple linestrings
                      within multilinestrings
                    
- 
                      Bug in rtree constructors taking a pair of Iterators or a Range
                      (packing algorithm), the use of reference to destroyed temporary
                      when Iterator's reference is not true reference, e.g. for some
                      of the Range Adaptors. It also affects distance() and comparable_distance().
                      This bug may cause unexpected behavior of the rtree or distance()
                      algorithm, e.g. an assertion failure or a SEGFAULT.
                    
- 
                      Bug in rtree count() member function, the use of reference
                      to destroyed temporary when object of type convertible but
                      not the same as value_type or indexable_type is passed. If
                      this happens, wrong result may be returned, in most cases 0.
                    
- 
                      Bugs related to the handling of Ranges, preventing compilation
                      of Geometries using non-Container Ranges in some algorithms
                      (thanks to Samuel Debionne)
                    
 
 
- 
Hash:
- 
Interprocess:
- 
                Reduced some compile-time dependencies. Updated to Boost.Container
                changes.
              
- 
                Fixed bugs:
                
 
- 
Intrusive:
- 
                Reduced compile-time dependencies, headers, and the use of Boost.Preprocessor,
                specially for hooks and iterators.
              
- 
                Fixed bugs:
                
 
- 
Lexical Cast:
- 
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)
                    
- 
                      Fixed incorrect behavior of attribute_set::insert()in some cases. The inserted
                      elements could have made some previously inserted elements
                      not findable. (#11106)
- 
                      Fixed incorrect behavior of attribute_value_set::size()if a large number of attribute
                      values are inserted into the set. (#11148)
 
- 
                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_BASEutility.
- 
                Added adl_move_swaputility.
- 
                Reduced dependencies on other Boost libraries to make the library
                a bit more lightweight.
              
- 
                Fixed bugs:
                
 
- 
Multi-index Containers:
- 
Multiprecision:
- 
                Changed frexpto
                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.
              
 
- 
Optional:
- 
                Improved documentation; documented IO operations and header files.
              
- 
Fixed Bugs:
- 
boost::none_tis no longer convertible
                      from literal 0. This avoids a bug whereoptional<rational<int>> oi
= 0;would initialize an optional
                      object with no contained value.
- 
                      Added a way to manually disable move semantics: just define
                      macro BOOST_OPTIONAL_CONFIG_NO_RVALUE_REFERENCES.
                      This can be used to work around #10399.
- 
#10825
                      Improved the trick that prevents streaming out optionalwithout headeroptional_io.hppby using safe-bool idiom.
- 
#11087
                      It is no longer possible to assign optional<U>tooptional<T>whenUis not assignable or convertible toT.
- 
#10839
                      Value accessors now work correctly on rvalues of optional<T&>.
 
 
- 
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 forfabsinphoenix/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_checkprogram 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<future<T>>::then Has No Implementation
                    
- 
#10964
                      future<future<T>>::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<T>
                    
- 
#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:
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:
          
- 
          QNX:
          
      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:
          
- 
          QNX:
          
Acknowledgements
Beman Dawes, Eric Niebler,
      Rene Rivera, Daniel James,
      Vladimir Prus and Marshall Clow managed this release.