New libraries
Added the Process library for cross‑platform child process creation, stream handling, and termination.
Added the Process library for cross‑platform child process creation, stream handling, and termination.
Optimized allocate_shared and make_shared for arrays and accelerated 128‑bit scans in multiprecision.
Added 7 dependencies across 6 libraries and removed 3 dependencies across 3 libraries.
Fixed numerous bugs including atomic generation issues, container crashes, and memory leaks, enhancing overall stability.
Introduced constexpr addressof, new BOOST_TEST_ALL_EQ/BOOST_TEST_ALL_WITH macros, and traits make_void/void_t.
April 19th, 2017 17:42 GMT
BOOST_NO_CXX11_SFINAE_EXPR
defect detection.
address,
leak, and undefined sanitizers
constexpr
addressof on compilers
that support C++11 constexpr
and SFINAE expressions (Glen Fernandes). BOOST_CORE_NO_CONSTEXPR_ADDRESSOF
macro indicates when constexpr
addressof is not
available.
lightweight_test.hpp,
added new macros BOOST_TEST_ALL_EQ
and BOOST_TEST_ALL_WITH
for testing container contents (Bjorn Reese).
boost:dll::symbol_location_ptr function for
getting location of a symbol by pointer that could not be dereferenced
(void pointer for example)
detail::aggressive_ptr_cast
for member pointers
address
and leak sanitizers
does
not wake
fibers in
pop`
std::unary_function and std::binary_function when they're not
available.
BOOST_INTERPROCESS_BOOTSTAMP_IS_SESSION_MANAGER_BASED
from Windows systems. This option derives the unique bootstamp used
to name the folder where shared memory is placed from registry values
associated with the session manager. This option only works on Vista
and later systems and might be more stable than the default version.
address,
leak, and undefined sanitizers
cpp_bin_float
prevent double rounding when converting to a denormalized float.
See #12527.
cpp_bin_float.
cpp_bin_float
rounding code to round at arbitrary location so we can use it for
conversions, see #12527.
cpp_bin_float.
See: #12580.
cpp_int's,
see #12627.
ilogb (and code
that uses it) to consistently return the smallest value of the exponent
type when the argument is zero, see #12625.
__float128
to cpp_bin_float.
cpp_int
which would result in bit-loss, see #12790.
cpp_int's
caused by over-aggressive constexpr optimization, see #12798.
BOOST_VERSION_NUMBER_MAJOR,
BOOST_VERSION_NUMBER_MINOR,
BOOST_VERSION_NUMBER_PATCH
macros to extract components from valid version numbers.
allocate_shared
and make_shared for
arrays for a more optimal and more maintainable implementation (Glen
Fernandes)
BOOST_TYPE_INDEX_IMPLEMENT_RUNTIME_CAST,
which implements the functionality for runtime_cast
but does not include the BOOST_TYPE_INDEX_REGISTER_CLASS
macro (thanks to Chris Glover for imlpementing it)
address,
leak, and undefined sanitizers
make_void
and void_t.
insert_or_assign
and try_emplace in
unordered_map, merge and extract
in all containers.
recursive_variant_
(thanks to Mikhail Maksimov for the fix) #12508, #12645
boost::polymorphic_*get to work as boost::*get
in undocumented border cases and fixed tests #11950
address,
leak, and undefined sanitizers
Boost's primary test compilers are:
Boost's additional test compilers include:
Beman Dawes, Eric Niebler, Rene Rivera, Daniel James, Vladimir Prus and Marshall Clow managed this release.
Boost is publicly released three times a year in April, August, and December. Each release has updates to existing libraries, and any new libraries that have passed the rigorous acceptance process.