Version 1.59.0
August 13th, 2015 15:23 GMT
Documentation
Known Issue
- 
          Boost.Log contains has a regression that prevents some of the logging statements
          from compiling (#11549). This is fixed in git.
        
New Libraries
- Convert: - 
  An extendible and configurable
          type-conversion framework, from Vladimir Batov.
 
- Coroutine2: - 
  (C++14) Coroutine
          library, from Oliver Kowalke.
 
Updated Libraries
- 
Container:
- 
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
Sequencefor sequence andUnbounded Iteratorfor iterator. Currently,Unbounded
Sequenceaffects the behaviour
                offusion::(value_)at(_c)andfusion::(value_)at_key.Unbounded
Iteratorhas 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 <utility>.
                      (#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_listin 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:
- 
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_typeexceptions thrown by the library now havetypeindex::type_indexattached
                            as the description of the offending type. The type was
                            previously identified bytype_info_wrapper.
- 
                            Boost.Exception type_info_infoerror information now containstypeindex::type_indexinstead oftype_info_wrapper.
- 
attribute_value::get_type()now returnstypeindex::type_indexinstead
                            oftype_info_wrapper.
                            User-defined attribute value implementations should be
                            similarly changed (theattribute_value::impl::get_type()virtual method now
                            also returnstypeindex::type_index).
 
- 
type_info_wrappercomponent 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()andattribute_value_setconstructor in some cases. (#11190)
 
- 
                See changelog
                for more details.
              
 
- 
Move:
- 
Multi-index Containers:
- 
Predef:
- 
                Fix many problems with predef_checkfunctionality.
- 
                Update SunPro detection to accomodate latest version of compiler
                from Oracle.
              
- 
                Add andandorlogical operators forpredef_checkexpression on the
                Boost Build side.
- 
                Fix BOOST_ARCH_PARISCto correctly spelled name.
- 
                Fix MAKE_YYYYMmacros
                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)
              
 
- 
Property Tree:
- 
                A new JSON parser with full Unicode support.
              
- 
Breaking change: The new parser
                does not support comments or string concatenation in JSON files.
                These features were non-standard extensions of the old parser but
                their removal could break code which was relying on them.
              
 
- 
Boost.Test v3:
- 
                Major new features
                
- 
BOOST_TESTgeneric 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_outputandlist_content,
                      extended unit test filtering (negation, labels)
- 
                      refactored and rewritten documentation using quickbook
                    
 
- 
                Addressed issues:
                
 
- 
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_visitorusage with C++14
                and const references #11251, #11285
- 
                Relaxed compile time checks for all the get<reference>(variant_variable)functions (thanks to Nicolas Cornu)
 
Compilers Tested
      Boost's primary test compilers are:
    
- 
          Linux:
          
- 
                Clang: 3.4
              
- 
                Clang, C++14: 3.6
              
- 
                GCC: 4.4.7, 4.8.2, 4.9.3
              
- 
                GCC, C++11: 4.4.7
              
- 
                GCC, C++14: 4.9.3
              
- 
                Intel: 15.0
              
 
- 
          Windows:
          
- 
                Visual C++: 8.0, 9.0, 10.0, 11.0, 12.0, 14.0
              
 
- 
          Android:
          
- 
          SunOS:
          
- 
          QNX:
          
      Boost's additional test compilers include:
    
- 
          Linux:
          
- 
                Clang: 3.0, 3.1, 3.2, 3.3, 3.4
              
- 
                Clang, C++14: 3.6, 3.7
              
- 
                GCC: 4.4.7, 4.5.3, 4.6.4, 4.7.3, 4.8.1, 5.1.0, 6.0.0
              
- 
                GCC, C++11: 4.4.7
              
- 
                GCC, C++14: 4.9.3, 5.1.1
              
- 
                Intel: 15.0
              
 
- 
          Android:
          
- 
          FreeBSD:
          
- 
                Clang: 3.4.1
              
- 
                GCC: 4.8.5, 5.1.0, 6.0.0
              
 
Acknowledgements
Beman Dawes, Eric Niebler,
      Rene Rivera, Daniel James,
      Vladimir Prus and Marshall Clow managed this release.