New libraries
Added Hash2 for extensible hashing and MQTT5 client built on Asio.
Added Hash2 for extensible hashing and MQTT5 client built on Asio.
Graph adjacency_list vertex insertion 10% faster; lengauer_tarjan_dominator_tree swaps std::deque for std::vector, gaining ~40% speed.
Dependency changes: +4 additions across 3 libraries and –15 removals across 7 libraries, streamlining the ecosystem.
Fixed use-after-move in ranged_parallel_group, out-of-bounds in iequals, race condition in MySQL, and various UB issues.
constexpr and noexcept added widely, C++03 dropped, new min_category trait simplifies iterator category handling.
April 10th, 2025 20:39 GMT
noexcept and
constexpr as appropriate.
array<T, 0>::begin(),
cbegin(),
end(),
cend()
to return nullptr, enabling
constexpr. This matches
the behavior of std::array.
hash_value
overload; boost::hash supports array-like types
natively.
array<T, 0>
can now be initialized with =
{{}}.
operator<=>.
to_array.
noexcept qualifiers
to various local::basic_endpoint
member functions, to make it consistent with ip::basic_endpoint.
boost::asio::config class's handling of integer
values.
experimental::ranged_parallel_group.
experimental::promise.
io_uring
implementation so that it does not attempt to re-register internal
descriptors with the reactor after a fork, if they were not previously
registered.
thread_pool
default constructor.
std::span to the boost::asio::buffer
function.
file_base::flags
when opening a file.
deferred as the default completion
token.
async_result
documentation to reflect the current type requirements placed on
specialisations of the trait.
BOOST_ASSERT_HANDLER_IS_NORETURN
is defined, boost::assertion_failed
and boost::assertion_failed_msg are declared
as BOOST_NORETURN.
iequals
function.
websocket::stream::async_close.
native_handle_t
to the boost::dll::shared_library. Many thanks to
Tiago Matos for the
PR#82.
std::error_code&
in API is used instead of the boost::system::error_code&. This is not a breaking change
as boost::system::error_code is convertible to std::error_code&.
boost::dll:import_*
functions now return std::shared_ptr
rather than boost::shared_ptr.
Define BOOST_DLL_USE_BOOST_SHARED_PTR
to restore the old behavior, however note that the macro will be
removed in one of the upcomming Boost releases.
boost::dll::library_info now always throws
in case of a broken binary. Updated the docs and added some tests.
RTLD_NODELETE
is missing and why there is no .release()
method. Provided suggestions on possible workarounds.
-ldl if it is required by the platform.
detail::path_from_handle implementation
for long paths on Windows OS.
boost/dll/smart_* parts of the library are experimental
and incomplete.
boost/dll/smart_* parts of the library.
maximum_weighted_matching,
resolves multiple issues.
named_graph
is initialized before use.
is_straight_line_drawing
with Boost.Geometry, fixes incorrect results for very small
angles.
finish_edge
in undirected_dfs.
adjacency_list:
Remove unnecessary calls to resize/reserve from within add_vertex for vector-based storage! A quick
benchmark indicates a 10% improvement to graph construction
time.
lengauer_tarjan_dominator_tree:
Replace std::deque
with std::vector, obtaining a ~40%
improvement for large graphs.
vertex_by_property
no longer requires a mutable graph.
cycle_canceling
and Clang 19.
min_category
trait, which is a variadic equivalent of minimum_category
that doesn't depend on MPL. minimum_category
is deprecated and will be removed in a future release.
enable_if_convertible
trait to a separate header enable_if_convertible.hpp.
The trait was previously defined in iterator_adaptor.hpp,
and the header still provides enable_if_convertible
when included. This dependency is provided for backward compatibility
and will be removed in a future release. Users are advised to add
includes of enable_if_convertible.hpp,
as needed.
*_t
variants of various iterator traits that produce types.
filter_iterator and
transform_iterator
now use empty base optimization (EBO) to reduce size of the iterator
when the adopted function object is stateless.
zip_iterator now
natively supports boost::tuple,
std::tuple and std::pair
for iterator tuples and doesn't need including Fusion support headers.
function_output_iterator
no longer allows default construction when the wrapped function is
a function pointer. Such construction would previously create an
iterator with an uninitialized function pointer value, and such an
iterator would be unusable.
generator_iterator.hpp
and shared_container_iterator.hpp
headers were moved under the boost/iterator
directory. The previous headers in boost
are still retained for backward compatibility, but will be removed
in a future release. Users are advised to update their includes.
shared_container_iterator
now uses std::shared_ptr to reference the container
internally. The support for boost::shared_ptr
is still retained, but it will incur performance overhead on the
iterator construction, as boost::shared_ptr
is now wrapped in a std::shared_ptr
internally. It is recommended to use std::shared_ptr
to reference the container.
std::codecvt<char16_t> and std::codecvt<char32_t> locale facets in C++20 and later
modes as they were deprecated in C++20. This means character code
conversions to/from char16_t
and char32_t is no longer
available in C++20 and later.
text_file_backend
when the backend was configured to append to an existing file and
the actively written file name pattern didn't have a counter placeholder
but the target file name pattern did, and the log files were written
directly into the target storage. (#245)
mp_from_sequence
for non-integral values (accidentally broken in 1.83.0 due to offset
support)
connection_pool now
resizes correctly even in the presence of many connections with session
establishment in-progress. The old algorithm could lead to the pool
not being resized as expected under certain conditions (#395).
any_connection::connection_id.
This function retrieves the connection's ID, which can subsequently
be used in KILL SQL
statements to cancel queries. This function is equivalent to mysql_thread_id in the official
C API (#408)
connection
or any_connection
while another operation is in-progress no longer triggers undefined
behavior. It now fails with client_errc::operation_in_progress
(#405).
connection
or any_connection
are engaged in a multi-function operation no longer yields potentially
dangerous packet mismatches. It instead fails with client_errc::engaged_in_multi_function (#448).
client_errc::not_connected
(#450).
connection
and any_connection
regarding per-operation cancellation. In previous versions, if a
cancellation signal was emitted after an intermediate async operation
had completed, but before its handler had been called, the signal
was ignored. This is no longer the case (#199).
field's constructor
and assignment from std::string_view
are now available in C++17, rather than C++20. These functions were
guarded by standard feature-test macros, only available in C++20.
These have been replaced by their Boost.Config equivalents.
getenv thread-safe
(PR#191)
boost::variant_collection, a closed polymorphic
collection similar in behavior to std::vector<std::variant<...>>.
operator<<
for wide streams (accidentally broken in 1.87.0)
GetModuleNames
to determine the full module path for MSVC implementation. Many thanks
to Daniel Krügler
for the PR#198.
BOOST_STACKTRACE_DISABLE_OFFSET_ADDR_BASE.
Many thanks to Maciej Czarnecki
for the PR#200.
stacktrace_from_exception
builds with MinGW. Thanks to crhilton
for the fix.
Boost's primary test compilers are:
Marshall Clow, Glen Fernandes and Ion Gaztañaga 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.