New libraries
1 new library added for parsing, modifying, and printing URLs with fast compilation and memory‑friendly design.
1 new library added for parsing, modifying, and printing URLs with fast compilation and memory‑friendly design.
Optimised execution::any_executor copies, added open‑addressing unordered_flat_map/unordered_flat_set, and faster hash_combine and string hashing.
Added 7 dependencies across 5 libraries and removed 11 across 3 libraries, streamlining the ecosystem.
Numerous bug fixes improve spawn exception handling, Windows path robustness, and overall stability across many components.
Added constexpr empty_value, fclose_deleter, function_output_iterator perfect forwarding, and expanded C++20 coroutine support.
December 14th, 2022 17:44 GMT
consign
completion token adapter, which can be used to attach additional
values to a completion handler.
any_completion_handler<>, which can be used to type-erase
completion handlers.
experimental::co_composed
to enable lightweight implementations of user-defined asynchronous
operations using C++20 coroutines.
experimental::make_parallel_group() overloads.
any_completion_executor,
a type-erased wrapper for executors that are associated with completion
handlers.
context
query to use_future's executor.
execution::any_executor<> and any_io_executor.
execution::any_executor
objects to improve the performance of copy and move operations.
associated_cancellation_slot
specialisation for std::reference_wrapper.
get functions.
spawn implementation
to catch unhandled exceptions and rethrow them outside of the spawned
"thread".
spawn to ensure
the completion handler is dispatched through the correct executor.
spawn
"thread" objects.
spawn and
co_spawn implementations
to dispatch cancellation handlers on the correct executor.
execution::execute
customisation point and sender/receiver facilities.
parallel_group
example.
resolve
conversions.
experimental::channel_traits
specialisations.
R(error_code)
signature.
cancelled()
public on the async_compose
'self' object.
async_compose
'self' object.
release() for Windows overlapped handles.
experimental::coro,
regularised experimental::use_coro,
and fixed allocator handling.
experimental::promise
and made it an asynchronous operation object.
post/defer overloads on ability to require
blocking.never.
fcntl
if ioctl fails with
ENOTTY when setting
non-blocking mode.
sprintf.
select_reactor::run
when it is run on an internal thread.
BOOST_ASIO_DISABLE_SMALL_BLOCK_RECYCLING
is defined.
std::invoke_result when targeting C++17
or later.
buffers_generator
beast::http::message_generator
buffer_ref,
so beast buffers can be used with asio.
boost::hash
have been removed; it now always calls hash_value.
BOOST_HASH_NO_EXTENSIONS
has been removed. The extensions are always enabled.
std::forward_list and the unordered
associative containers.
begin() and end() member functions that return iterators)
are now supported out of the box.
BOOST_DESCRIBE_STRUCT or BOOST_DESCRIBE_CLASS) are now supported
out of the box.
hash_combine has
been improved.
boost::hash
for strings now passes SMHasher in 64 bit mode.
empty_value members
are now marked as constexpr.
fclose_deleter,
a deleter that calls std::fclose
on a pointer to std::FILE.
boost/core/bit.hpp
now explicitly require unsigned integers on input. (#129)
bit_width now returns
int instead of a value
of the input argument type. This follows resolution of LWG3656.
enumerators.hpp,
bases.hpp, and members.hpp
when the option -pedantic
is used, the invocation of BOOST_DESCRIBE_ENUM
has been moved from modifiers.hpp
into a separate header, modifier_description.hpp.
As a consequence, modifiers.hpp
no longer includes enum.hpp.
Code that has been relying on this implicit inclusion may fail, and
will need to be fixed to include enum.hpp.
path_from_handle
implementation for Windows platforms, thanks to @SaltfishAmi for
the bug report 57.
path
construction, assignment and appending from containers of characters,
such as std::vector<char>
or std::list<wchar_t>,
is deprecated in v3 and removed
in v4. Please use string types or
iterators instead.
boost/filesystem/path_traits.hpp
header is deprecated and will be removed in a future release. The
header contained implementation details of path
and should not be used in user's code.
BOOST_FILESYSTEM_ALLOW_DEPRECATED
macro can be defined when compiling user's code.
*at
APIs. (#250)
ERROR_INVALID_PARAMETER
when constructing directory iterators. (PR#246, #245)
weakly_canonical
failing with an ERROR_INVALID_FUNCTION
error code if the path started with the "\\?\" prefix.
(#247)
std::string_view,
boost::string_view and boost::container::string
(as well as respective wchar_t
counterparts) in path
constructors, assignment and appending operations. (#208)
path constructors,
assignment and appending operations taking a pair of iterators will
no longer accept iterators with value types that are not one of the
supported path character types.
directory_iterator
with various mounted filesystems and Wine releases prior to 7.21.
(#255, #266)
fusion::identity_view (PR#240)
fusion::transform_view
(PR#239)
fusion::reverse_view
used with an associative sequence (PR#237)
boost::ref
and boost::noncopyable are used from Boost.Core
(PR#249)
accumulators::fraction
to compute fractions, their variance, and confidence intervals
utility::clopper_pearson,
utility::wilson_interval, utility::jeffreys_interval, utility::wald_interval which can compute
intervals with arbitrary confidence level
utility::confidence_level and utility::deviation types to pass confidence
levels as probabilities or in multiples of standard deviation for
all interval computers, respectively
sub_array
and span in C++20
function_output_iterator
now supports perfect forwarding of the assigned values to the wrapped
function object. (PR#73)
function_input_iterator
from result of post-incrementing another function_input_iterator.
(#75)
iterator_facade now supports operator->.
(it++)->foo
is equivalent to (*it++).foo, which was supported before.
object::stable_erase.
parse overload
for std::istream and operator>> for value.
value.
std::optional, std::variant,
and null-like types (including std::nullptr_t,
std::nullopt_t, and std::monotype).
value
to user types.
-sICU_LINK_LOCALE
& -sICU_LINK
by fine-grained configuration options as done in Boost.RegEx
std::auto_ptr
codecvt
using wchar_t on Windows
assume/use UTF-16 enconding
basic_format,
date_time &
hold_ptr movable,
Fix use of format cache
*this
date_time
BOOST_STACKTRACE_BACKTRACE_INCLUDE_FILE
macro value while detecting the libbacktrace availability in b2,
thanks to Ben Gemmill for the bug report #115.
BOOST_STACKTRACE_BACKTRACE_FORCE_STATIC
macro to force a single backtrace_state static instance while using
the libbacktrace. Thanks to the Rasmus Thomsen for the bug report
#118!
boost/stacktrace/stacktrace.hpp header. Thanks to the Long
Deng for the bug report #116.
strlen
on Windows platforms. Thanks to Alex Guteniev for the bug report
#122
iterator_interface
operators in pre-C++20 iterators with a const
value_type.
BOOST_SYSTEM_DISABLE_THREADS
can now be defined to disable the use of <mutex>
(e.g. on single-threaded libstdc++).
value_type,
error_type, in_place_value, in_place_error
to result<>.
emplace to
result<>.
boost::unordered_flat_map
and boost::unordered_flat_set based on open
addressing.
boost::json::value_from
and boost::json::value_to.
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.