Version 1.58.0
Version 1.58.0
April 17th, 2015 07:53 GMT
Platform | File |
---|---|
unix | boost_1_58_0.tar.bz2 |
boost_1_58_0.tar.gz | |
windows | boost_1_58_0.7z |
boost_1_58_0.zip |
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:
-
0001-Fix-exec_file-for-Python-3-3.4.patch (for libs/python).
-
0002-Fix-a-regression-with-non-constexpr-types.patch (for libs/fusion).
New Libraries
Updated Libraries
-
Asio:
-
Ensured errors generated by Windows'
ConnectEx
function are mapped to their portable equivalents (#10744). -
Added new macro
BOOST_ASIO_DISABLE_CONNECTEX
to allow use ofConnectEx
to be explicitly disabled. -
Fixed a race condition in
windows::object_handle
when 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
. -
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 C++11
std::addressof
with g++ (#10982). -
Changed multicast test to treat certain
join_group
failures as non-fatal. -
Decoupled Asio unit tests from Boost.Test (#11116).
-
Changed the tutorial to use
std::endl
to 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_context
object with asynchronous operations. -
Changed
yield_context
to 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_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
andindex_of
functions 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.
-
Source Breaking:
scoped_allocator_adaptor
'spropagate_on_container_copy_assignment
,propagate_on_container_move_assignment
andpropagate_on_container_swap
are 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_constant
was not guaranteed. Code assummingboost::true_type/boost::false_type
on this will not compile. As a workaround, use the guaranteed internal::value
constant:::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_downcast
andpolymorphic_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
andboost::hash
. This can be optionally disabled to avoid clashes with legacy code where this support has already been defined by the user. -
Maintenance fixes.
-
-
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.
-
result_of::size::value and result_of::size::type::value are the same type now (#7304)
-
Fix missing includes (#8457).
-
-
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)
-
-
-
Interprocess:
-
Reduced some compile-time dependencies. Updated to Boost.Container changes.
-
-
Intrusive:
-
Reduced compile-time dependencies, headers, and the use of Boost.Preprocessor, specially for hooks and iterators.
-
Fixed bugs:
-
-
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_BASE
utility. -
Added
adl_move_swap
utility. -
Reduced dependencies on other Boost libraries to make the library a bit more lightweight.
-
-
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<identity<std::string> > > > multi_t; ... multi_t m=...; m.find("boost"); // passed a const char*, not a std::string
In previous versions of the library, thefind
operation generates several temporarystd::string
s (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.
-
-
Optional:
-
Improved documentation; documented IO operations and header files.
-
Fixed Bugs:
-
boost::none_t
is 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
optional
without headeroptional_io.hpp
by using safe-bool idiom. -
#11087 It is no longer possible to assign
optional<U>
tooptional<T>
whenU
is 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.
-
-
-
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
-
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.
-
-
Variant:
-
Breaking change: Compile time checked getter is now used by default in
boost::get<U>(VariantT)
andboost::polymorphic_get<U>(VariantT)
. New getter asserts that typeU
is one of the types that can be stored inVariantT
. DefineBOOST_VARIANT_USE_RELAXED_GET_BY_DEFAULT
to change default behavior. See get.hpp and polymorphic_get.hpp descriptions for more info #547. -
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<std::string>(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
-
Acknowledgements
Beman Dawes, Eric Niebler, Rene Rivera, Daniel James, Vladimir Prus and Marshall Clow managed this release.