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
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
<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_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:
-
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:
-
Multi-index Containers:
-
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)
-
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_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:
-
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<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.