Version 1.66.0
Version 1.66.0
December 18th, 2017 13:58 GMT
Platform | File | SHA256 Hash |
---|---|---|
unix | boost_1_66_0.tar.bz2 | 5721818253e6a0989583192f96782c4a98eb6204965316df9f5ad75819225ca9 |
boost_1_66_0.tar.gz | bd0df411efd9a585e5a2212275f8762079fed8842264954675a4fddc46cfcf60 | |
windows | boost_1_66_0.7z | 596389389c005814ecb2a6b64c31dccd2c3e6fbc5a802b4dfada999ae5844628 |
boost_1_66_0.zip | e1c55ebb00886c1a96528e4024be98a38b815115f62ecfe878fcf587ba715aad |
Third Party Downloads
Note about the new Visual Studio release
Visual Studio 15.5 was released too late for us to test this release with it.
New Libraries
-
Beast: Portable HTTP, WebSocket, and network operations using only C++11 and Boost.Asio, from Vinnie Falco.
-
CallableTraits: A spiritual successor to Boost.FunctionTypes, Boost.CallableTraits is a header-only C++11 library for the compile-time inspection and manipulation of all 'callable' types. Additional support for C++17 features, from Barrett Adair.
-
Mp11: A C++11 metaprogramming library, from Peter Dimov.
Updated Libraries
-
Asio:
-
Implemented interface changes to reflect the Networking TS (N4656).
-
See the list of new interfaces and, where applicable, the corresponding old interfaces that have been superseded.
-
The service template parameters, and the corresponding classes, are disabled by default. For example, instead of
basic_socket<Protocol, SocketService>
we now have simplybasic_socket<Protocol>
. The old interface can be enabled by defining theBOOST_ASIO_ENABLE_OLD_SERVICES
macro.
-
-
Removed previously deprecated functions.
-
Added support for customised handler tracking.
-
Added reactor-related (i.e. descriptor readiness) events to handler tracking.
-
Added special "concurrency hint" values that may be used to disable locking on a per
io_context
basis. -
Enabled perfect forwarding for the first
ssl::stream<>
constructor argument. -
Added ability to release ownership of the underlying native socket. (Requires Windows 8.1 or later when using the I/O completion port backend.)
-
-
Atomic:
-
Implemented a set of experimental extended atomic operations for integral types:
-
fetch_negate
,fetch_complement
- atomically replaces the value with a negated or binary complemented value and returns the original value -
opaque_<op>
- equivalent tofetch_<op>
except that it doesn't return the original value -
<op>_and_test
- atomically applies<op>
and returnstrue
if the result is zero. Note: The result of these operations will change to the opposite in Boost 1.67. The code that uses these functions will need to be updated. -
bit_test_and_set
,bit_test_and_reset
,bit_test_and_complement
- atomically sets, resets or complements the specified bit and returns the original value of the bit
-
-
Following C++17 (P0558R1), arithmetic operations for pointers to non-object types are no longer provided.
-
Also following C++17 exposed
atomic<T>::value_type
andatomic<T>::difference_type
member typedefs, where applicable, to the user's code. -
Improved compatibility with gcc 7. In particular, using 128-bit operations on x86-64 should no longer require linking with libatomic (the compiler-supplied library).
-
-
Fiber:
-
synchronization with CUDA streams
-
synchronization with ROCm/HIP streams
-
-
Format:
-
Improvements:
-
44 Accept new argument types
I
,I32
,I64
, andw
from Microsoft (parsed and ignored like all others). -
33 Added a development tool called
format_matrix
that exercises as many different combinations of format strings as possible and logs them to a file:-
helps prevent regressions in between boost releases
-
allows for comparison against
snprintf
-
-
-
Fusion:
-
PR#149
isspace(c)
is not a macro in Dinkum clib for VxWorks, thanks to Brian Kuhl(@kuhlenough). -
PR#150 Remove circular preprocessor include, thanks to Gregor Jasny(@gjasny).
-
PR#151 Change base of
fusion::tuple
. -
PR#153 Fixed compile error with
std::array
. -
PR#154 Fixed bugs nesting and copying on c++03.
-
-
Geometry:
-
Improvements:
-
Add distance for geographic PointLike/AnyGeometry.
-
-
Bugfixes:
-
Fixes in results of union/intersection/difference which could be incorrect in very complex cases
-
Fixes in validity of union/intersection/difference/buffer
-
Fixes in set and relational operations for non-cartesian coordinate systems.
-
-
-
Iterator:
-
next()
/prior()
functions now support user's iterators that don't specify nested types such asiterator_category
,difference_type
, etc. and instead specializestd::iterator_traits
to define those types. The compiler must support C++17-compatiblestd::iterator_traits
for this to work.
-
-
Math:
-
New Features:
-
Add Gauss and Gauss-Kronrod quadrature routines.
-
Add double-exponential (tanh-sinh, exp-sinh and sinh-sinh) quadrature routines.
-
Add Chebyshev polynomial evaluation, roots, integration, differentiation, and interpolation routines.
-
-
-
Multi-index Containers:
-
Made
modify
andmodify_key
more robust so that the modified element is erased if the modifier throws or the rollback functor does not properly restore the element (full discussion at ticket #12542). This is technically backwards incompatible; for instance, the following code:c.modify(c.begin(),[](auto&){throw 0;});
keeps the containerc
untouched in former versions of Boost whereas nowc.begin()
is erased. Thanks to Jon Kalb for raising the issue. -
Maintenance fixes.
-
-
Optional:
-
On newer compilers
optional
is now trivially-copyable for scalarT
s. This uses a different storage (justT
rather thanaligned_storage
). We require the compiler to support defaulted functions. -
Changed the implementation of
operator==
to get rid of the-Wmaybe-uninitialized
false-positive warning from GCC.
-
-
PolyCollection:
-
Boost.PolyCollection has been backported to GCC 4.8 to 4.9 and Clang 3.3 to 3.6. The version of libstdc++-v3 shipped with GCC 4.8 (which can also be used by Clang) has deficiencies that result in the following limitations when using Boost.PolyCollection:
-
Stateful allocators are not properly supported.
-
Allocator-extended move construction decays to allocator-extended copy construction.
-
Copy construction crashes if an exception is thrown during element copying.
-
-
Maintenance fixes.
-
-
Predef:
-
Improved Windows Universal Platform detection. (from James E. King, III)
-
Add detection for CloudABI with cloudlibc. (from James E. King, III)
-
Various other bug fixes.
-
-
Regex:
-
Bug fixes:
-
Numerous small fixes for security issues discovered by de-fuzzing.
-
-
-
Stacktrace:
-
Now works out-of-the-box on MinGW-w64.
-
Now works on MinGW (without
-w64
) iflibbacktrace
is properly installed. See "MinGW specific notes" section in documentation for more info.
-
-
Thread:
-
Bugs Fixes
-
#12323 windows - boost/thread/win32/mfc_thread_init.hpp has wrong signature for _pRawDllMainOrig
-
#12730 windows - static threads library is incompatible with MSVC 2017 RC
-
#12976 Boost Thread Executors documentation mistakes
-
#12949 using sleep_for in a thread context without including boost/thread/thread.hpp yields incorrect behaviour when BOOST_THREAD_HAS_CONDATTR_SET_CLOCK_MONOTONIC is defined
-
#13019 ABI compatibility for BOOST_THREAD_PROVIDES_INTERRUPTIONS incomplete
-
#13069 Boost unit test "sync_pq_multi_thread_p_lib.exe" hung in thread library
-
#13163 boost::detail::heap_new does not have a variadic variant
-
#13226 getpagesize() is deprecated since 199506L
-
#132 VS 2017.4 Preview deadlocks on Test 10964
-
#133 windows - Spurious timing test failures on windows
-
#134 VS 2017.4 Preview deadlock in sync_pq_multi_thread_p_lib.exe
-
#135 VS 2017.4 Preview test_scheduled_tp_p.exe deadlock
-
#136 VS 2017.4 Preview test_scheduler_p.exe deadlock
-
#137 VS 2017.4 Preview executor_ex.exe deadlock
-
#143 Failures on msvc-12.0
-
#145 Clang build error with BOOST_THREAD_ATTRIBUTE_MAY_ALIAS
-
-
New Experimental Feature
-
#116 [Proposal] Add APIs for deferred set_value/exception
-
-
-
Utility:
-
boost/next_prior.hpp
has been moved to Boost.Iterator. No changes needed to the user's code.
-
Compilers Tested
Boost's primary test compilers are:
-
Linux:
-
Clang: 3.0, 4.0.1, 5.0.1
-
Clang, C++0x: 3.0
-
Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 5.0.1
-
Clang, C++14: 3.5.0, 3.6.0, 3.7.1, 3.8.0, 3.9.1, 4.0.0, 4.0.1, 5.0.1
-
Clang, C++17: 5.0.1
-
GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 5.4.0, 7.2.0
-
GCC, C++0x: 4.4.7
-
GCC, C++11: 4.7.2, 4.7.3, 4.8.5, 4.9.4, 6.4.0, 7.1.0, 7.2.0
-
GCC, C++14: 5.4.1, 6.3.0, 6.4.0, 7.1.0, 7.2.0, 7.2.1
-
GCC, C++17: 7.2.0
-
Intel: 18.0
-
-
OS X:
-
Clang: 9.0.0
-
Clang, C++11: 9.0.0
-
Clang, C++14: 9.0.0
-
Clang, C++1z: 9.0.0
-
-
Windows:
-
GCC: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0, 4.5.4
-
GCC, C++0x: 4.6.4
-
GCC, C++11: 4.7.3
-
Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
-
-
Android:
-
Clang: 3.6, 3.7, 3.8
-
GCC: 4.9, 5.4
-
GCC, C++14: 6.2
-
-
FreeBSD:
-
Clang: 4.0.0
-
Clang, C++11: 4.0.0
-
Clang, C++14: 4.0.0
-
Clang, C++1z: 4.0.0
-
-
QNX:
-
QCC, C++0x: 4.4.2
-
QCC, C++11: 4.7.3
-
Boost's additional test compilers include:
-
Linux:
-
Clang: 3.0, 3.8.1, 4.0.1, 5.0.1
-
Clang, C++0x: 3.0
-
Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 5.0.1
-
Clang, C++14: 3.5.0, 3.6.0, 3.7.1, 3.8.0, 3.9.1, 4.0.0, 4.0.1, 5.0.1
-
Clang, C++17: 5.0.1
-
GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 5.4.0, 7.2.0
-
GCC, C++0x: 4.4.7
-
GCC, C++11: 4.7.2, 4.7.3, 4.8.5, 4.9.4, 5.4.0, 6.4.0, 7.1.0, 7.2.0
-
GCC, C++14: 5.4.1, 6.3.0, 6.4.0, 7.1.0, 7.2.0, 7.2.1, 8.0.0
-
GCC, C++17: 7.2.0
-
Intel: 18.0
-
-
OS X:
-
Clang: 9.0.0
-
Clang, C++11: 9.0.0
-
Clang, C++14: 9.0.0
-
Clang, C++1z: 9.0.0
-
-
Windows:
-
GCC: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0, 4.5.4
-
GCC, C++0x: 4.6.4
-
GCC, C++11: 4.7.3, 4.8.1, 4.9.3
-
GCC, C++14: 5.1.0, 5.2.0, 5.3.0, 6.1.0, 6.2.0, 6.3.0, 6.4.0, 7.1.0
-
Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
-
-
Android:
-
Clang: 3.6, 3.7, 3.8
-
GCC: 4.9, 5.4
-
GCC, C++14: 6.2
-
-
FreeBSD:
-
Clang: 4.0.0
-
Clang, C++11: 4.0.0
-
Clang, C++14: 4.0.0
-
Clang, C++1z: 4.0.0
-
-
QNX:
-
QCC, C++0x: 4.4.2
-
QCC, C++11: 4.7.3
-
Acknowledgements
Beman Dawes, Daniel James, Vladimir Prus and Marshall Clow managed this release.