New libraries
Added Beast, CallableTraits, and Mp11 covering networking, callable introspection, and metaprogramming.
Added Beast, CallableTraits, and Mp11 covering networking, callable introspection, and metaprogramming.
basic_socket drops service template and concurrency hints can disable locking per io_context for faster I/O.
Added 6 dependencies across 6 libraries and removed 4 across 3 libraries.
Regex fixes address multiple de‑fuzzed security issues and numerous bug fixes improve stability.
format_matrix tool exercises format strings, and boost::apply_visitor now perfect‑forwards visitables.
December 18th, 2017 13:58 GMT
Visual Studio 15.5 was released too late for us to test this release with it.
basic_socket<Protocol,
SocketService>
we now have simply basic_socket<Protocol>. The old interface can
be enabled by defining the BOOST_ASIO_ENABLE_OLD_SERVICES
macro.
io_context
basis.
ssl::stream<> constructor argument.
fetch_negate,
fetch_complement
- atomically replaces the value with a negated or binary complemented
value and returns the original value
opaque_<op>
- equivalent to fetch_<op> except that it doesn't
return the original value
<op>_and_test
- atomically applies <op>
and returns true
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
atomic<T>::value_type
and atomic<T>::difference_type member typedefs,
where applicable, to the user's code.
j
and z from
ISO C99 (parsed and ignored like all others).
I,
I32, I64, and w
from Microsoft (parsed and ignored like all others).
format_matrix
that exercises as many different combinations of format strings
as possible and logs them to a file:
snprintf
isspace(c)
is not a macro in Dinkum clib for VxWorks, thanks to Brian Kuhl(@kuhlenough).
fusion::tuple.
std::array.
next()/prior()
functions now support user's iterators that don't specify nested
types such as iterator_category,
difference_type,
etc. and instead specialize std::iterator_traits
to define those types. The compiler must support C++17-compatible
std::iterator_traits for this to work.
file_collector::scan_for_files
that could cause incorrectly named log files in the target
directory after the user's application restart.
modify and
modify_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 container
c
untouched in former versions of Boost whereas now c.begin() is erased. Thanks to Jon Kalb for
raising the issue.
optional
is now trivially-copyable for scalar Ts.
This uses a different storage (just T
rather than aligned_storage).
We require the compiler to support defaulted functions.
operator== to get rid of the -Wmaybe-uninitialized
false-positive warning from GCC.
-w64) if libbacktrace
is properly installed. See "MinGW specific notes" section
in documentation for more info.
boost/next_prior.hpp has been moved to Boost.Iterator.
No changes needed to the user's code.
boost::apply_visitor now does perfect
forwarding of visitables #6971. Great thanks to Levon Tarakchyan
for implementing this feature.
Boost's primary test compilers are:
Boost's additional test compilers include:
Beman Dawes, 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.