New libraries
Added two libraries for C++20 coroutine algorithms and async Redis client built on Asio.
Added two libraries for C++20 coroutine algorithms and async Redis client built on Asio.
4 dependency additions across 2 libraries, 61 removals across 20 libraries.
Fixed crashes in async handshakes, default handlers, and spawn coroutines; improved error handling.
Introduced boost::core::invoke_swap, constexpr boost::pfr::get_name, and constexpr for_each_field; removed deprecated headers.
December 13th, 2023 23:54 GMT
Boost.WinAPI, a library that is used internally by other Boost libraries for defining Windows SDK components, has been updated to target Windows 10 API by default, where possible. This means that Boost libraries will target Windows 10 by default and may not run on older Windows versions. This includes the pre-built binaries that are distributed by Boost.
The affected libraries include:
as well as libraries that depend on the above.
Users are able to change the default by defining BOOST_USE_WINAPI_VERSION
or _WIN32_WINNT when building
and using Boost to the required version number. For example, to build Boost
targeting Windows 7 one could use a command line like this:
b2 variant=release define=BOOST_USE_WINAPI_VERSION=0x0601 stage
Note, however, that individual libraries may have their own requirements on the minimum supported Windows version.
The list of Windows API version numbers can be seen on this page.
boost::asio::execution
namespace.
try_send_via_dispatch
and try_send_n_via_dispatch
functions to channels.
std::bind.
any_completion_handler.
any_completion_handler
and compilation using BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT.
spawn-based
stackful coroutines would terminate the program when used with asynchronous
operations that have a completion signature starting with std::exception_ptr.
any_completion_handler
object's associators.
ssl::stream<>
class's async_handshake
operation so that it works with a defaulted completion token.
immediate_executor.
BOOST_ASIO_INITFN_RESULT_TYPE
with BOOST_ASIO_INITFN_AUTO_RES.
server-flex-awaitable example resets parser.
websocket::stream::async_ping/pong
handler requirement.
websocket::stream::async_write_some.
boost::swap utility function has been
renamed to boost::core::invoke_swap
to avoid forming a potential infinite recursion when the arguments
are not swappable. The new function is defined in boost/core/invoke_swap.hpp
and is functionally equivalent to boost::swap.
The old boost::swap name is preserved for backward
compatibility but deprecated and will be removed in a future release.
Its noexcept specification
has been removed to avoid compile errors caused by compile-time recursion.
BOOST_ALLOW_DEPRECATED_SYMBOLS
or BOOST_ALLOW_DEPRECATED
can be defined to suppress deprecation warnings for the transition
period. (#148)
boost/swap.hpp, boost/utility/swap.hpp
and boost/core/swap.hpp are deprecated and will be
removed. Please, switch to boost/core/invoke_swap.hpp.
BOOST_ALLOW_DEPRECATED_HEADERS
or BOOST_ALLOW_DEPRECATED
can be defined to suppress deprecation warnings.
directory_entry
observers taking error_code& ec
argument did not clear the error code on successful return. (#291)
boost/filesystem/string_file.hpp header. The header was deprecated
since Boost.Filesystem 1.79.0.
to_title for the
WinAPI backend returns the string unchanged instead of an empty string
char8_t
and std::u8string
connection::reset_connection
and connection::async_reset_connection. These functions
clean session state (including prepared statements, variables, locks
and more) without closing and re-opening the connection.
constexpr
boost::pfr::get_name<N, T>()
function that returns a std::string_view
with a name of field at index N
of an aggregate T.
Requires C++20. BOOST_PFR_CORE_NAME_ENABLED
is defined to 1 if the functionality is available. Many thanks to
Denis Mikhailov,
Bela Schaum and
X-Ryl669 for the
PR PR#129
and implementation ideas.
for_each_field()
is now constexpr for
C++17. Many thanks to Alexander
Karatarakis for the PR PR#134.
BOOST_RATIO_EXTENSIONS
has been removed. Ratio is now implemented in terms of the standard
<ratio> header.
result<U&, E>.
operator|
for result.
operator&
for result.
operator&=
for result.
BOOST_TYPE_INDEX_REGISTER_RUNTIME_CLASS((A)(B)(C)(D)) changed syntax to BOOST_TYPE_INDEX_REGISTER_RUNTIME_CLASS(A, B, C, D).
boost::concurrent_flat_set.
[c]visit_while
operations to concurrent containers, with serial and parallel variants.
boost::unordered_flat_(map|set) from boost::concurrent_flat_(map|set) and vice versa.
boost::unordered_[multi]set
and boost::unordered_[multi]map only work with C++11 onwards.
Boost's primary test compilers are:
Marshall Clow and Glen Fernandes 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.