New libraries
Two new libraries were added for exception‑free failure reporting and fast multidimensional histograms.
Two new libraries were added for exception‑free failure reporting and fast multidimensional histograms.
Memory recycling for polymorphic executors, faster Beast compilation with BOOST_BEAST_SEPARATE_COMPILATION, and reduced contention in Fiber.
Added 11 dependencies across 9 libraries and removed 10 across 6 libraries.
Fixed SSL handshake propagation, Windows memory leak, filesystem out‑of‑memory crashes, and Dynamic‑Bitset popcount UB.
New async_compose, make_strand, BOOST_ASIO_DISABLE_VISIBILITY, and improved error diagnostics in Spirit.
April 12th, 2019 06:04 GMT
These are patches from library authors which were found too late to be fixed in the release. Be careful as they have not been through the normal testing process.
async_result
form with an initiate
static member function.
asio namespace.
DynamicBuffer_v2
concept which is CopyConstructible.
async_compose
function that simplifies the implementation of user-defined
asynchronous operations.
make_strand
helper function.
local::basic_endpoint
that takes a string_view.
BOOST_ASIO_DISABLE_VISIBILITY
configuration #define.
error::message_size)
occurs on a datagram-oriented socket.
pthread_cond_timedwait.
EndpointSequence
iterator type.
buffer_sequence_begin
and buffer_sequence_end
to prevent implicit conversion.
eof
error on SSL shutdown as it actually indicates success.
SSL_ERROR_SYSCALL
result without an associated error.
OSMemoryBarrier.
dispatch,
post and defer documentation.
system_executor is used.
basic_stream and tcp_stream offer:
async_read_some,
async_write_some
complete with error::timeout on expiration!
simple and unlimited, or a user-defined
RatePolicy!
bind_executor
at call sites!
async_base and stable_async_base and handle
all composed operation boilerplate for you.
ssl_stream provides a movable,
assignable SSL stream with a flat write optimization.
async_initiate
for efficient integration with Coroutines TS.
BOOST_BEAST_SEPARATE_COMPILATION
and #include <boost/beast/src.hpp>
in one of your .cpp files!
1 to make
the Boost.DLL use C++17's std::filesystem::path,
std::system_error and std::error_code (#21). Note that
exception types change from boost::system::system_error
to std::system_error, so make sure to update
catches.
shared_library::decorate() function that returns a decorated
path to the library without doing any platform related queries and
detections. Prefer using shared_library::load
and shared_library
constructors for better results (many thanks to Loïc Touraine for
the work PR#23).
std::string::end() in path
implementation.
error_code. (#58)
path.
(#12759)
directory_entry.
This avoids a relatively expensive OS query when file status is requested
for a result of dereferencing a directory iterator. (PR#55)
current_path
and read_symlink
implementation to avoid possible memory exhaustion on broken or tampered
with filesystems. The functions now have an internal limit of the
path size they will accept from the OS, which is currently 16 MiB.
copy_file.
numerical_differentiation.hpp
from boost/math/tools/ to boost/math/differentiation/finite_difference.hpp.
tools/univariate_statistics.hpp.
tools/bivariate_statistics.hpp
tools/signal_statistics.hpp.
tools/norms.hpp.
.prime() and .integrate()
methods.
quadratic_roots
to tools/roots.hpp.
roots.hpp.
mp_invoke
to mp_invoke_q
mp_similar
mp_set_union,
mp_set_intersection,
mp_set_difference
mp_not_fn
mp_transform_first,
mp_transform_second,
mp_transform_third
mp_filter
mp_eval_if_not,
mp_eval_or, mp_valid_q
mp_back, mp_pop_back
size_type and difference_type are now defined
as the allocator's same-named types. This will not make any difference
in the vast majority of cases, but allows for some degree of control
of resulting internal structures via user-defined allocator types
(see issue #17 for motivation). For the moment being,
this change is not documented in the reference section (i.e., it
has semi-official status).
std::numeric_limits
on any old type when checking for convertibility. See #98.
mpf_float
and mpfr_float. See
#113.
exp
implementation which could cause invariant failure.
boost/detail/iterator.hpp
header. PR#432
check_overflow
trait default implementation now relies on std::numeric_limits<T>::is_bounded
instead of boost::integer_traits<T>::is_integral.
parse_rule
instantiation with BOOST_SPIRIT_INSTANTIATE
when:
make_attribute
trait was removed due to bugs PR#449
and to simplify
attribute transformation. PR#460
std::numeric_limits<T>::digits10
value. PR#469
(Min %
Base)
== 0
corner case. PR#469
transform_attribute
was removed. PR#480
check_overflow
trait default implementation now relies on std::numeric_limits<T>::is_bounded instead
of boost::integer_traits<T>::is_integral
PR#429
check_overflow trait
default implementation now relies on std::numeric_limits<T>::is_bounded
instead of boost::integer_traits<T>::is_integral.
make_attribute
trait was merged into transform_attribute
trait. PR#471
pre_transform,
post_transform,
and fail_transform
utility functions were removed in favor of directly using
pre/post/fail of the transform
trait. PR#467
std::numeric_limits<T>::digits10
value. PR#469
(Min %
Base)
== 0
corner case. PR#469
transform_attribute
was removed. PR#480
minimal.hpp
is now showing a deprecation warning,
unit_test_log_formatter,
see detailed change log,
BOOST_TEST(3.0001 ==
3)
now use floating point support of Boost.Test,
sample type field anymore,
std::tuple
to any variadic definition,
BOOST_TEST_INFO_SCOPE
for scoped context declaration,
BOOST_TEST_CONTEXT
syntax
Boost's primary test compilers are:
Boost's additional test compilers include:
Daniel James, Vladimir Prus, Marshall Clow and Michael Caisse 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.