2
0
mirror of https://github.com/boostorg/website.git synced 2026-01-19 04:42:17 +00:00
Files
website/generated/downloads.rss
Automated Commit 0fd0298015 Release 1.89.0
2025-08-14 02:19:45 +00:00

3730 lines
192 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:boostbook="urn:boost-org:boostbook" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<generator>Boost Website Site Tools</generator>
<title>Boost Downloads</title>
<link>https://www.boost.org/users/download/</link>
<atom:link href="https://www.boost.org/generated/downloads.rss" rel="self" type="application/rss+xml" />
<description></description>
<language>en-us</language>
<copyright>Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or https://www.boost.org/LICENSE_1_0.txt)</copyright>
<item><title>Version 1.89.0</title><link>https://www.boost.org/users/history/version_1_89_0.html</link><guid>https://www.boost.org/users/history/version_1_89_0.html</guid><pubDate>Thu, 14 Aug 2025 02:16:56 +0000</pubDate><description>
&lt;div id="version_1_89_0.new_libraries"&gt;
&lt;h3&gt;&lt;span class="link"&gt;New Libraries&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/bloom/"&gt;Bloom&lt;/a&gt;:&lt;/span&gt;
Bloom filters, from Joaquín
M López Muñoz.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id="version_1_89_0.updated_libraries"&gt;
&lt;h3&gt;&lt;span class="link"&gt;Updated Libraries&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/any/"&gt;Any&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
&lt;strong&gt;Initial support for C++20 Modules&lt;/strong&gt;.
See the docs for more info.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/asio/"&gt;Asio&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Added allocator constructors to &lt;code&gt;&lt;span class="identifier"&gt;execution_context&lt;/span&gt;&lt;/code&gt;,
&lt;code&gt;&lt;span class="identifier"&gt;io_context&lt;/span&gt;&lt;/code&gt; and &lt;code&gt;&lt;span class="identifier"&gt;thread_pool&lt;/span&gt;&lt;/code&gt;, with the supplied
allocator being used for allocating objects associated with the execution
context.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added a new configuration parameter "timer" / "heap_reserve"
that may be used to reserve space in the vector used for a timer
queue's heap.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added a new configuration parameter "resolver" / "threads"
that specifies the number of internal threads used by &lt;code&gt;&lt;span class="identifier"&gt;async_resolve&lt;/span&gt;&lt;/code&gt; to emulate asynchronous
address resolution.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Removed &lt;code&gt;&lt;span class="identifier"&gt;deadline_timer&lt;/span&gt;&lt;/code&gt;,
&lt;code&gt;&lt;span class="identifier"&gt;basic_deadline_timer&lt;/span&gt;&lt;/code&gt;
and &lt;code&gt;&lt;span class="identifier"&gt;time_traits&lt;/span&gt;&lt;/code&gt; from
the convenience header &lt;tt&gt;boost/asio.hpp&lt;/tt&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Ensured that the Windows named pipes created by &lt;code&gt;&lt;span class="identifier"&gt;connect_pipe&lt;/span&gt;&lt;/code&gt;
use unique names that do not conflict if Asio is used in multiple,
independent plug-in DLLs.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Changed &lt;code&gt;&lt;span class="identifier"&gt;BOOST_ASIO_CONCURRENCY_HINT_SAFE&lt;/span&gt;&lt;/code&gt;
to be consistent with the &lt;code&gt;&lt;span class="identifier"&gt;io_context&lt;/span&gt;&lt;/code&gt;
default constructor.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed the documentation for &lt;code&gt;&lt;span class="identifier"&gt;BOOST_ASIO_CONCURRENCY_HINT_UNSAFE_IO&lt;/span&gt;&lt;/code&gt;
to reflect that registration locking is still enabled.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added separate &lt;tt&gt;b2&lt;/tt&gt; and &lt;tt&gt;cmake&lt;/tt&gt;
build targets for optional dependencies.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added the &lt;code&gt;&lt;span class="special"&gt;[[&lt;/span&gt;&lt;span class="identifier"&gt;noreturn&lt;/span&gt;&lt;span class="special"&gt;]]&lt;/span&gt;&lt;/code&gt; attribute to &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;asio&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;detail&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;throw_exception&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed &lt;code&gt;&lt;span class="identifier"&gt;co_spawn&lt;/span&gt;&lt;/code&gt; to
adhere to the asynchronous operation requirement for non-reentrant
invocation of the completion handler.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added a documentation note on &lt;code&gt;&lt;span class="identifier"&gt;basic_signal_set&lt;/span&gt;&lt;/code&gt;
async signal safety.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed various minor compilation errors on different platforms.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Consult the &lt;a href="https://www.boost.org/doc/libs/1_89_0/doc/html/boost_asio/history.html"&gt;Revision
History&lt;/a&gt; for further details.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/atomic/"&gt;Atomic&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Added TSAN instrumentation in asm-based x86, AArch32, AArch64 and
PPC backends. This silences TSAN false errors for code using Boost.Atomic
for thread synchronization.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Following the announcement in Boost 1.84, removed support for Windows
versions older than Windows 10.
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
A note to MinGW-w64 users. Since Windows SDK headers on MinGW-w64
define &lt;code&gt;&lt;span class="identifier"&gt;_WIN32_WINNT&lt;/span&gt;&lt;/code&gt;
to an older Windows version by default, you may need to define
&lt;code&gt;&lt;span class="identifier"&gt;_WIN32_WINNT&lt;/span&gt;&lt;span class="special"&gt;=&lt;/span&gt;&lt;span class="number"&gt;0x0A00&lt;/span&gt;&lt;/code&gt;
or &lt;code&gt;&lt;span class="identifier"&gt;BOOST_USE_WINAPI_VERSION&lt;/span&gt;&lt;span class="special"&gt;=&lt;/span&gt;&lt;span class="number"&gt;0x0A00&lt;/span&gt;&lt;/code&gt;
when compiling Boost.Atomic and the code that uses Boost.Atomic.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Support for Windows CE is deprecated and will be removed in a future
release.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added support for timed waiting operations.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Exposed &lt;code&gt;&lt;span class="identifier"&gt;thread_pause&lt;/span&gt;&lt;/code&gt;
operation, which can be used as a backoff measure in spin loops.
Added support for PowerPC and improved support for AArch64 in &lt;code&gt;&lt;span class="identifier"&gt;thread_pause&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Removed &lt;code&gt;&lt;span class="identifier"&gt;BOOST_ATOMIC_NO_ATOMIC_FLAG_INIT&lt;/span&gt;&lt;/code&gt;
macro definition. Since the library now requires C++11, &lt;code&gt;&lt;span class="identifier"&gt;BOOST_ATOMIC_FLAG_INIT&lt;/span&gt;&lt;/code&gt; is always
supported.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Enabled bitwise operations for atomic enumerations. This can be useful
when enumerations are used to implement bit masks.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/beast/"&gt;Beast&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Fixes
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Conditionally defined &lt;code&gt;&lt;span class="identifier"&gt;immediate_executor_type&lt;/span&gt;&lt;/code&gt;
in &lt;code&gt;&lt;span class="identifier"&gt;async_base&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added missing &lt;code&gt;&lt;span class="identifier"&gt;cstdint&lt;/span&gt;&lt;/code&gt;
header to &lt;code&gt;&lt;span class="identifier"&gt;detail&lt;/span&gt;&lt;span class="special"&gt;/&lt;/span&gt;&lt;span class="identifier"&gt;cpu_info&lt;/span&gt;&lt;span class="special"&gt;.&lt;/span&gt;&lt;span class="identifier"&gt;hpp&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed &lt;code&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;is_trivial&lt;/span&gt;&lt;/code&gt; deprecation warnings.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;code&gt;&lt;span class="identifier"&gt;handshake_timeout&lt;/span&gt;&lt;/code&gt;
now applies to closing handshakes during reads.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Improvements
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Replaced &lt;code&gt;&lt;span class="identifier"&gt;detail&lt;/span&gt;&lt;span class="special"&gt;/&lt;/span&gt;&lt;span class="identifier"&gt;work_guard&lt;/span&gt;&lt;span class="special"&gt;.&lt;/span&gt;&lt;span class="identifier"&gt;hpp&lt;/span&gt;&lt;/code&gt;
with &lt;code&gt;&lt;span class="identifier"&gt;net&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;executor_work_guard&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed portability issues for building tests in MinGW.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Documentation
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Removed moved sections from documentation.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Removed superfluous log messages from tests.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Acknowledgements
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
yliu1021
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/charconv"&gt;Charconv&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Fixed a performance degradation with &lt;code&gt;&lt;span class="identifier"&gt;from_chars&lt;/span&gt;&lt;/code&gt;
for integer types
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed rounding and trailing decimal place bugs with &lt;code&gt;&lt;span class="identifier"&gt;to_chars&lt;/span&gt;&lt;/code&gt; for specified precisions
with floating point types
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/cobalt/"&gt;Cobalt&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Move assign fixed for generator &amp;amp; promise.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed internal exceptions
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added IO library. Cobalt.io provides a large subset of asio as a
compiled library.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/compat/"&gt;Compat&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Added &lt;code&gt;&lt;span class="identifier"&gt;move_only_function&lt;/span&gt;&lt;span class="special"&gt;.&lt;/span&gt;&lt;span class="identifier"&gt;hpp&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/container_hash/"&gt;ContainerHash&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Added the &lt;code&gt;&lt;span class="identifier"&gt;hash_is_avalanching&lt;/span&gt;&lt;/code&gt;
trait class.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/conversion/"&gt;Conversion&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Added an ability to use &lt;code&gt;&lt;span class="identifier"&gt;polymorphic_downcast&lt;/span&gt;&lt;/code&gt;
and &lt;code&gt;&lt;span class="identifier"&gt;polymorphic_cast&lt;/span&gt;&lt;/code&gt;
in constexpr (requires C++20).
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/core/"&gt;Core&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Fixed &lt;code&gt;&lt;span class="identifier"&gt;bit_ceil&lt;/span&gt;&lt;/code&gt; to
return 1 for input 0 as per specification. (&lt;a href="https://github.com/boostorg/core/pull/199"&gt;PR#199&lt;/a&gt;)
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added support for &lt;code&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;format&lt;/span&gt;&lt;/code&gt;
to &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;core&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;string_view&lt;/span&gt;&lt;/code&gt;. (&lt;a href="https://github.com/boostorg/core/issues/190"&gt;#190&lt;/a&gt;)
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/detail/"&gt;Detail&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Operators generated by &lt;code&gt;&lt;span class="identifier"&gt;BOOST_BITMASK&lt;/span&gt;&lt;/code&gt;
now use underlying type of the enum to implement bitwise operators.
The operators are marked &lt;code&gt;&lt;span class="keyword"&gt;noexcept&lt;/span&gt;&lt;/code&gt;
and &lt;code&gt;&lt;span class="keyword"&gt;constexpr&lt;/span&gt;&lt;/code&gt;, when
possible.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
The function &lt;code&gt;&lt;span class="identifier"&gt;bitmask_set&lt;/span&gt;&lt;/code&gt;
generated by &lt;code&gt;&lt;span class="identifier"&gt;BOOST_BITMASK&lt;/span&gt;&lt;/code&gt;
is marked deprecated. In a future release, &lt;code&gt;&lt;span class="identifier"&gt;BOOST_BITMASK&lt;/span&gt;&lt;/code&gt;
will stop producing this function. Users are recommended to use double
negation (&lt;code&gt;&lt;span class="special"&gt;!!&lt;/span&gt;&lt;span class="identifier"&gt;mask&lt;/span&gt;&lt;/code&gt;)
to test if the value is zero. This affects e.g. enums defined in
Boost.Filesystem.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/dll/"&gt;DLL&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Fixed compiling and exporting on Cygwin. Many thanks to &lt;a href="https://github.com/Luohaothu"&gt;Luohao
Wang&lt;/a&gt; for the PR!
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed building on FreeBSD. Thanks to &lt;a href="https://github.com/agokhale"&gt;ash&lt;/a&gt;
for the bug report!
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added &lt;code&gt;&lt;span class="identifier"&gt;BOOST_DLL_USE_STD_FS&lt;/span&gt;&lt;/code&gt;
CMake option to match the preprocessor option. Thanks to &lt;a href="https://github.com/yurybura"&gt;Yury
Bura&lt;/a&gt; for the PR!
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/filesystem/"&gt;Filesystem&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Corrected ASAN warnings about comparing pointers to potentially unrelated
objects in &lt;code&gt;&lt;span class="identifier"&gt;path&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;append&lt;/span&gt;&lt;/code&gt;. (&lt;a href="https://github.com/boostorg/filesystem/issues/335"&gt;#335&lt;/a&gt;)
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/geometry/"&gt;Geometry&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Major improvements
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/geometry/pull/1369"&gt;PR#1369&lt;/a&gt; Rewrite of traversal
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/geometry/pull/1402"&gt;PR#1402&lt;/a&gt; Add geometry polyhedral surface
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Improvements
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/geometry/pull/1404"&gt;PR#1404&lt;/a&gt; Performance improvements in buffer
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/geometry/pull/1405"&gt;PR#1405&lt;/a&gt; Avoid static variables and functions in
header files
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Breaking changes
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/geometry/pull/1401"&gt;PR#1401&lt;/a&gt; Remove deprecated headers
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Solved issues
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/geometry/issues/1221"&gt;#1221&lt;/a&gt; Difference with rectilinear multipolygon with
integer coordinates produces invalid polygon with disconnected
interior
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/geometry/issues/1295"&gt;#1295&lt;/a&gt; Wrong result in intersection (result polygon
is equal to the biggest of the input polygons)
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/geometry/issues/1349"&gt;#1349&lt;/a&gt; Difference of polygons giving wrong result
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/geometry/issues/1382"&gt;#1382&lt;/a&gt; Buffer operation creates self-intersection
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Various fixes of errors and warnings
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/hash2/"&gt;Hash2&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Added Blake2 algorithm (&lt;code&gt;&lt;span class="identifier"&gt;blake2s_256&lt;/span&gt;&lt;/code&gt;,
&lt;code&gt;&lt;span class="identifier"&gt;blake2b_512&lt;/span&gt;&lt;/code&gt;).
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added XXH3 algorithm (&lt;code&gt;&lt;span class="identifier"&gt;xxh3_128&lt;/span&gt;&lt;/code&gt;).
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/iterator/"&gt;Iterator&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Fixed &lt;code&gt;&lt;span class="identifier"&gt;filter_iterator&lt;/span&gt;&lt;/code&gt;
copy/converting constructor, which could previously produce an invalid
iterator. (&lt;a href="https://github.com/boostorg/iterator/issues/92"&gt;#92&lt;/a&gt;)
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Removed usage of &lt;code&gt;&lt;span class="identifier"&gt;is_trivial&lt;/span&gt;&lt;/code&gt;
in &lt;code&gt;&lt;span class="identifier"&gt;iterator_facade&lt;/span&gt;&lt;/code&gt;
as it is deprecated in C++26. (&lt;a href="https://github.com/boostorg/iterator/issues/93"&gt;#93&lt;/a&gt;)
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;code&gt;&lt;span class="identifier"&gt;iterator_facade&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="keyword"&gt;operator&lt;/span&gt;&lt;span class="special"&gt;[]&lt;/span&gt;&lt;/code&gt;
now always returns a proxy rather than conditionally returning a
value or a proxy. This allows users to bind a reference to the result
of the operator, regardless of whether the value type is trivially-copyable.
(&lt;a href="https://github.com/boostorg/iterator/issues/61"&gt;#61&lt;/a&gt;)
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
The proxy returned by &lt;code&gt;&lt;span class="identifier"&gt;iterator_facade&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="keyword"&gt;operator&lt;/span&gt;&lt;span class="special"&gt;[]&lt;/span&gt;&lt;/code&gt; now supports forwarding dereferencing
operators to the referenced value. This allows &lt;code&gt;&lt;span class="identifier"&gt;it&lt;/span&gt;&lt;span class="special"&gt;[&lt;/span&gt;&lt;span class="identifier"&gt;n&lt;/span&gt;&lt;span class="special"&gt;]-&amp;gt;&lt;/span&gt;&lt;span class="identifier"&gt;foo&lt;/span&gt;&lt;span class="special"&gt;()&lt;/span&gt;&lt;/code&gt; and &lt;code&gt;&lt;span class="special"&gt;(*&lt;/span&gt;&lt;span class="identifier"&gt;it&lt;/span&gt;&lt;span class="special"&gt;[&lt;/span&gt;&lt;span class="identifier"&gt;n&lt;/span&gt;&lt;span class="special"&gt;]).&lt;/span&gt;&lt;span class="identifier"&gt;foo&lt;/span&gt;&lt;span class="special"&gt;()&lt;/span&gt;&lt;/code&gt;
expressions to compile.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
The proxy returned by &lt;code&gt;&lt;span class="identifier"&gt;iterator_facade&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="keyword"&gt;operator&lt;/span&gt;&lt;span class="special"&gt;[]&lt;/span&gt;&lt;/code&gt; now implementes perfect forwarding
in its assignment operator.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/json/"&gt;JSON&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Revamped documentation.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Optionals that are ranges are categorised as optionals.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Described class support is enabled for types with bases.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/log/"&gt;Log&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Added support for &lt;code&gt;&lt;span class="identifier"&gt;BOOST_LOG_WITHOUT_ASIO&lt;/span&gt;&lt;/code&gt;
configuration macro, which can be used to remove the dependency on
Boost.Asio and disable the related functionality.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Use locale-independent formatting of the file counter in &lt;code&gt;&lt;span class="identifier"&gt;text_file_backend&lt;/span&gt;&lt;/code&gt; when composing
log file names. This fixes failures in the subsequent parsing of
the file names in &lt;code&gt;&lt;span class="identifier"&gt;file_collector&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;scan_for_files&lt;/span&gt;&lt;/code&gt;.
(&lt;a href="https://github.com/boostorg/log/pull/246"&gt;PR#246&lt;/a&gt;)
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added a new &lt;code&gt;&lt;span class="identifier"&gt;wrap_filter&lt;/span&gt;&lt;/code&gt;
utility that simplifies injecting user-defined function objects in
filtering expressions. (&lt;a href="https://github.com/boostorg/log/issues/195"&gt;#195&lt;/a&gt;)
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/math/"&gt;Math&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Add explicit C++14 &lt;code&gt;&lt;span class="special"&gt;&amp;lt;&lt;/span&gt;&lt;span class="identifier"&gt;type_traits&lt;/span&gt;&lt;span class="special"&gt;&amp;gt;&lt;/span&gt;&lt;/code&gt;
and &lt;code&gt;&lt;span class="keyword"&gt;constexpr&lt;/span&gt;&lt;/code&gt; requirement
to builds
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Collected fixes for GPU support on a variety of platforms
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fix lower incomplete gamma function with x = 0
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fix the external archive error in the jSO algorithm
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fix numeric underflow in ibeta
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fix inverse ibeta for large values of a and b
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fix variadic functions to make them safe with C++26
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/mqtt5/"&gt;MQTT5&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Fixed incorrect parsing of URI paths in the list of brokers (&lt;a href="https://github.com/boostorg/mqtt5/issues/31"&gt;#31&lt;/a&gt;).
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Default Maximum Packet Size now explicitly set in the &lt;code&gt;&lt;span class="identifier"&gt;CONNECT&lt;/span&gt;&lt;/code&gt; packet. (&lt;a href="https://github.com/boostorg/mqtt5/issues/33"&gt;#33&lt;/a&gt;).
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed high CPU usage with large Maximum Packet Size values (&lt;a href="https://github.com/boostorg/mqtt5/issues/33"&gt;#33&lt;/a&gt;).
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/multiprecision/"&gt;Multiprecision&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
&lt;strong&gt;Major update.&lt;/strong&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Adds a new backend type: &lt;code&gt;&lt;span class="identifier"&gt;cpp_double_fp_backend&lt;/span&gt;&lt;/code&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixes a namespace collision with Boost.Serialization
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/mysql/"&gt;MySQL&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
The &lt;code&gt;&lt;span class="identifier"&gt;caching_sha2_password&lt;/span&gt;&lt;/code&gt;
authentication plugin can now be used without TLS. This is the default
in MySQL 8 and above. Plaintext connections that attempt to use this
plugin no longer fail with &lt;code&gt;&lt;span class="identifier"&gt;client_errc&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;auth_plugin_requires_ssl&lt;/span&gt;&lt;/code&gt;
(&lt;a href="https://github.com/boostorg/mysql/issues/313"&gt;#313&lt;/a&gt;).
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed a problem causing &lt;code&gt;&lt;span class="identifier"&gt;client_errc&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;incomplete_message&lt;/span&gt;&lt;/code&gt;
to be returned during connection establishment when the target database
does not exist and the &lt;code&gt;&lt;span class="identifier"&gt;caching_sha2_password&lt;/span&gt;&lt;/code&gt;
is used. The appropriate server-generated diagnostic is now returned.
See issues &lt;a href="https://github.com/boostorg/mysql/issues/468"&gt;#468&lt;/a&gt; and &lt;a href="https://github.com/boostorg/mysql/issues/488"&gt;#488&lt;/a&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
The handshake algorithm is now more resilient to protocol violations
(&lt;a href="https://github.com/boostorg/mysql/issues/469"&gt;#469&lt;/a&gt;).
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed a build failure with gcc-15 due to a missing include (&lt;a href="https://github.com/boostorg/mysql/pull/475"&gt;PR#475&lt;/a&gt;).
Thanks &lt;a href="https://github.com/hhoffstaette"&gt;hhoffstaette&lt;/a&gt;
for the PR.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added &lt;a href="https://www.boost.org/doc/libs/master/libs/mysql/doc/html/mysql/benchmarks.html"&gt;benchmarks
against the official drivers&lt;/a&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Optimized &lt;code&gt;&lt;span class="identifier"&gt;metadata&lt;/span&gt;&lt;/code&gt;
representation to be faster to construct and take less memory (&lt;a href="https://github.com/boostorg/mysql/issues/461"&gt;#461&lt;/a&gt;).
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/pfr/"&gt;PFR&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Rewrite C++20 module following the new recommended Boost practice.
See the docs for more info.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed C++26 compilation on modern clang compilers. Thanks to &lt;a href="https://github.com/MBkkt"&gt;Valery Mironov&lt;/a&gt; for the report!
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Support types that use 'Arrays of Length Zero' compiler extension.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed typos. Thanks to &lt;a href="https://github.com/TryKuhn"&gt;Egor&lt;/a&gt;
for highlighting the issues!
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Return &lt;code&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;array&lt;/span&gt;&lt;span class="special"&gt;&amp;lt;&lt;/span&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;string_view&lt;/span&gt;&lt;span class="special"&gt;,&lt;/span&gt;
&lt;span class="number"&gt;0&lt;/span&gt;&lt;span class="special"&gt;&amp;gt;&lt;/span&gt;&lt;/code&gt;
type for &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;pfr&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;names_as_array&lt;/span&gt;&lt;span class="special"&gt;(&lt;/span&gt;&lt;span class="identifier"&gt;empty_struct&lt;/span&gt;&lt;span class="special"&gt;{})&lt;/span&gt;&lt;/code&gt;
to allow compilation of &lt;code&gt;&lt;span class="keyword"&gt;for&lt;/span&gt;
&lt;span class="special"&gt;(&lt;/span&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;string_view&lt;/span&gt;
&lt;span class="identifier"&gt;name&lt;/span&gt; &lt;span class="special"&gt;:&lt;/span&gt;
&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;pfr&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;names_as_array&lt;/span&gt;&lt;span class="special"&gt;(&lt;/span&gt;&lt;span class="identifier"&gt;empty_struct&lt;/span&gt;&lt;span class="special"&gt;{}))&lt;/span&gt;&lt;/code&gt;.
Many thanks to &lt;a href="https://github.com/sabudilovskiy"&gt;sabudilovskiy&lt;/a&gt;
for the bug report!
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/process/"&gt;process&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Added &lt;code&gt;&lt;span class="identifier"&gt;v1&lt;/span&gt;&lt;span class="special"&gt;.&lt;/span&gt;&lt;span class="identifier"&gt;hpp&lt;/span&gt;&lt;/code&gt; to emulate v1 &lt;code&gt;&lt;span class="identifier"&gt;process&lt;/span&gt;&lt;span class="special"&gt;.&lt;/span&gt;&lt;span class="identifier"&gt;hpp&lt;/span&gt;&lt;/code&gt; include.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fix to windows path escaping
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed exit-code issue wehre terminate &amp;amp; async_wait lead to a
loss of the exit-code value.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/random/"&gt;Random&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Fix NAN being generated by &lt;code&gt;&lt;span class="identifier"&gt;beta_distribution&lt;/span&gt;&lt;/code&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Improve the performance of &lt;code&gt;&lt;span class="identifier"&gt;beta_distribution&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="keyword"&gt;operator&lt;/span&gt;&lt;span class="special"&gt;()&lt;/span&gt;&lt;/code&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/type_index/"&gt;TypeIndex&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
&lt;strong&gt;Initial support for C++20 Modules&lt;/strong&gt;.
See the docs for more info.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/unordered/"&gt;Unordered&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Deprecated &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;unordered&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;hash_is_avalanching&lt;/span&gt;&lt;/code&gt;
is now a using-declaration of &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;hash_is_avalanching&lt;/span&gt;&lt;/code&gt;
in &lt;code&gt;&lt;span class="special"&gt;&amp;lt;&lt;/span&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;/&lt;/span&gt;&lt;span class="identifier"&gt;container_hash&lt;/span&gt;&lt;span class="special"&gt;/&lt;/span&gt;&lt;span class="identifier"&gt;hash_is_avalanching&lt;/span&gt;&lt;span class="special"&gt;.&lt;/span&gt;&lt;span class="identifier"&gt;hpp&lt;/span&gt;&lt;span class="special"&gt;&amp;gt;&lt;/span&gt;&lt;/code&gt;. Use that header directly instead.
&lt;code&gt;&lt;span class="special"&gt;&amp;lt;&lt;/span&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;/&lt;/span&gt;&lt;span class="identifier"&gt;unordered&lt;/span&gt;&lt;span class="special"&gt;/&lt;/span&gt;&lt;span class="identifier"&gt;hash_traits&lt;/span&gt;&lt;span class="special"&gt;.&lt;/span&gt;&lt;span class="identifier"&gt;hpp&lt;/span&gt;&lt;span class="special"&gt;&amp;gt;&lt;/span&gt;&lt;/code&gt; will be removed in the future.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added &lt;code&gt;&lt;span class="identifier"&gt;pull&lt;/span&gt;&lt;span class="special"&gt;(&lt;/span&gt;&lt;span class="identifier"&gt;const_iterator&lt;/span&gt;&lt;span class="special"&gt;)&lt;/span&gt;&lt;/code&gt;
to open-addressing containers. This operation allows for efficient
removal and retrieval of an element via move construction.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/histogram/"&gt;Histogram&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Update CMake minimum version and Python detection in CMake
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Improve documentation
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Add example on how to make an axis which accepts multiple value
types that are not implicitly convertible
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Show how to use &lt;code&gt;&lt;span class="identifier"&gt;histogram&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;fill&lt;/span&gt;&lt;/code&gt;
with a multidimensional histogram efficiently when data per
dimension is already available as contiguous data
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Don't use deprecated form of user-defined literal operator
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Add support for modular build structure with b2
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed warnings in MSVC about narrowed types
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added collector accumulator, which stores all values in a bin
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Internal changes to tests and classes in detail namespace
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id="version_1_89_0.updated_tools"&gt;
&lt;h3&gt;&lt;span class="link"&gt;Updated Tools&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/tools/build/"&gt;Build&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Includes release of &lt;a href="https://www.boost.org/tools/build/doc/html/#_version_5_3_2"&gt;B2
version 5.3.2&lt;/a&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id="version_1_89_0.compilers_tested"&gt;
&lt;h3&gt;&lt;span class="link"&gt;Compilers Tested&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;
Boost's primary test compilers are:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Linux:
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Clang, C++03: 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 12.0.0, 13.0.0, 14.0.0,
15.0.0
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Clang, C++11: 3.4, 11.0.0, 13.0.0, 14.0.0, 15.0.0
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Clang, C++14: 3.5, 3.6, 3.7, 3.8, 3.9, 4.0, 5.0, 12.0.0, 13.0.0,
14.0.0, 15.0.0
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Clang, C++17: 6.0.1, 7.0.0, 8.0.0, 9.0.0, 10.0.0, 11.0.0, 12.0.0,
13.0.0, 14.0.0, 15.0.0
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Clang, C++20: 11.0.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
GCC, C++03: 4.6.3, 11, 12
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
GCC, C++11: 4.7.3, 4.8.5, 11, 12
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
GCC, C++14: 5.4.0, 6.4.0, 7.3.0, 8.0.1, 9.1.0, 11, 12
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
GCC, C++17: 7.3.0, 8.0.1, 9.1.0, 11, 12
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
GCC, C++20: 8.0.1, 9.1.0, 10, 11, 12
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
OS X:
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Apple Clang, C++03: 11.0.3
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Apple Clang, C++11: 11.0.3
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Apple Clang, C++14: 11.0.3
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Apple Clang, C++17: 11.0.3
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Apple Clang, C++20: 11.0.3
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Windows:
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Visual C++: 10.0, 11.0, 12.0, 14.0, 14.1, 14.2, 14.3
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id="version_1_89_0.acknowledgements"&gt;
&lt;h3&gt;&lt;span class="link"&gt;Acknowledgements&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;
Marshall Clow, Glen Fernandes and Ion Gaztañaga managed this release.
&lt;/p&gt;
&lt;/div&gt;
</description></item><item><title>Version 1.88.0</title><link>https://www.boost.org/users/history/version_1_88_0.html</link><guid>https://www.boost.org/users/history/version_1_88_0.html</guid><pubDate>Thu, 10 Apr 2025 20:39:01 +0000</pubDate><description>
&lt;div id="version_1_88_0.new_libraries"&gt;
&lt;h3&gt;&lt;span class="link"&gt;New Libraries&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/hash2/"&gt;Hash2&lt;/a&gt;:&lt;/span&gt; An extensible hashing framework,
from Peter Dimov and Christian Mazakas.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/mqtt5/"&gt;MQTT5&lt;/a&gt;:&lt;/span&gt; MQTT5 client library built
on top of Boost.Asio, from Ivica Siladić, Bruno Iljazović, and Korina
Šimičević.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id="version_1_88_0.updated_libraries"&gt;
&lt;h3&gt;&lt;span class="link"&gt;Updated Libraries&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/array/"&gt;Array&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Converted documentation to AsciiDoc (Christian Mazakas).
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added &lt;code&gt;&lt;span class="keyword"&gt;noexcept&lt;/span&gt;&lt;/code&gt; and
&lt;code&gt;&lt;span class="keyword"&gt;constexpr&lt;/span&gt;&lt;/code&gt; as appropriate.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Marked obsolete functions as deprecated.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Removed obsolete compiler workarounds.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Changed &lt;code&gt;&lt;span class="identifier"&gt;array&lt;/span&gt;&lt;span class="special"&gt;&amp;lt;&lt;/span&gt;&lt;span class="identifier"&gt;T&lt;/span&gt;&lt;span class="special"&gt;,&lt;/span&gt; &lt;span class="number"&gt;0&lt;/span&gt;&lt;span class="special"&gt;&amp;gt;::&lt;/span&gt;&lt;span class="identifier"&gt;begin&lt;/span&gt;&lt;span class="special"&gt;()&lt;/span&gt;&lt;/code&gt;,
&lt;code&gt;&lt;span class="identifier"&gt;cbegin&lt;/span&gt;&lt;span class="special"&gt;()&lt;/span&gt;&lt;/code&gt;,
&lt;code&gt;&lt;span class="identifier"&gt;end&lt;/span&gt;&lt;span class="special"&gt;()&lt;/span&gt;&lt;/code&gt;,
&lt;code&gt;&lt;span class="identifier"&gt;cend&lt;/span&gt;&lt;span class="special"&gt;()&lt;/span&gt;&lt;/code&gt;
to return &lt;code&gt;&lt;span class="keyword"&gt;nullptr&lt;/span&gt;&lt;/code&gt;, enabling
&lt;code&gt;&lt;span class="keyword"&gt;constexpr&lt;/span&gt;&lt;/code&gt;. This matches
the behavior of &lt;code&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;array&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Removed local &lt;code&gt;&lt;span class="identifier"&gt;hash_value&lt;/span&gt;&lt;/code&gt;
overload; &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;hash&lt;/span&gt;&lt;/code&gt; supports array-like types
natively.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;code&gt;&lt;span class="identifier"&gt;array&lt;/span&gt;&lt;span class="special"&gt;&amp;lt;&lt;/span&gt;&lt;span class="identifier"&gt;T&lt;/span&gt;&lt;span class="special"&gt;,&lt;/span&gt; &lt;span class="number"&gt;0&lt;/span&gt;&lt;span class="special"&gt;&amp;gt;&lt;/span&gt;&lt;/code&gt;
can now be initialized with &lt;code&gt;&lt;span class="special"&gt;=&lt;/span&gt;
&lt;span class="special"&gt;{{}}&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added &lt;code&gt;&lt;span class="keyword"&gt;operator&lt;/span&gt;&lt;span class="special"&gt;&amp;lt;=&amp;gt;&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added &lt;code&gt;&lt;span class="identifier"&gt;to_array&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/asio/"&gt;Asio&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Added &lt;code&gt;&lt;span class="keyword"&gt;noexcept&lt;/span&gt;&lt;/code&gt; qualifiers
to various &lt;code&gt;&lt;span class="identifier"&gt;local&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;basic_endpoint&lt;/span&gt;&lt;/code&gt;
member functions, to make it consistent with &lt;code&gt;&lt;span class="identifier"&gt;ip&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;basic_endpoint&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed the &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;asio&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;config&lt;/span&gt;&lt;/code&gt; class's handling of integer
values.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed a use-after-move error in &lt;code&gt;&lt;span class="identifier"&gt;experimental&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;ranged_parallel_group&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed an incorrect default template argument in the implementation
of &lt;code&gt;&lt;span class="identifier"&gt;experimental&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;promise&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed the &lt;code&gt;&lt;span class="identifier"&gt;io_uring&lt;/span&gt;&lt;/code&gt;
implementation so that it does not attempt to re-register internal
descriptors with the reactor after a fork, if they were not previously
registered.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed an uninitialised member in the &lt;code&gt;&lt;span class="identifier"&gt;thread_pool&lt;/span&gt;&lt;/code&gt;
default constructor.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed an ambiguous overload issue that occurred when passing a &lt;code&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;span&lt;/span&gt;&lt;/code&gt; to the &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;asio&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;buffer&lt;/span&gt;&lt;/code&gt;
function.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Removed some spurious macro definitions that were left after the
removal of deprecated buffer functionality.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added documentation to clarify the use of &lt;code&gt;&lt;span class="identifier"&gt;file_base&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;flags&lt;/span&gt;&lt;/code&gt;
when opening a file.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added overview documentation on the available runtime configuration
options.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Updated the overview documentation to reflect the use of &lt;code&gt;&lt;span class="identifier"&gt;deferred&lt;/span&gt;&lt;/code&gt; as the default completion
token.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Updated the &lt;code&gt;&lt;span class="identifier"&gt;async_result&lt;/span&gt;&lt;/code&gt;
documentation to reflect the current type requirements placed on
specialisations of the trait.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/assert/"&gt;Assert&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
When &lt;code&gt;&lt;span class="identifier"&gt;BOOST_ASSERT_HANDLER_IS_NORETURN&lt;/span&gt;&lt;/code&gt;
is defined, &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;assertion_failed&lt;/span&gt;&lt;/code&gt;
and &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;assertion_failed_msg&lt;/span&gt;&lt;/code&gt; are declared
as &lt;code&gt;&lt;span class="identifier"&gt;BOOST_NORETURN&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/beast/"&gt;Beast&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Fixes
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Fixed out-of-bounds access in &lt;code&gt;&lt;span class="identifier"&gt;iequals&lt;/span&gt;&lt;/code&gt;
function.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Improvements
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Updated SSL examples to verify peer certificate hostname.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Refactored CMakeLists.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Removed Boost.Scope dependency from examples.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Peer pings in WebSocket now count as activity.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Documentation
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Added new examples for Unix domain sockets.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added SSL/TLS Certificate section to documentation.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Improved documentation of &lt;code&gt;&lt;span class="identifier"&gt;websocket&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;stream&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;async_close&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Acknowledgements
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Morten M. Neergaard
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/conversion/"&gt;Conversion&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Use modern C++ in the samples and in the library code.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/dll/"&gt;DLL&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Added constructor from &lt;code&gt;&lt;span class="identifier"&gt;native_handle_t&lt;/span&gt;&lt;/code&gt;
to the &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;dll&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;shared_library&lt;/span&gt;&lt;/code&gt;. Many thanks to
&lt;a href="https://github.com/tgmatos"&gt;Tiago Matos&lt;/a&gt; for the
&lt;a href="https://github.com/boostorg/dll/pull/82"&gt;PR#82&lt;/a&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Dropped multiple dependencies on other Boost libraries including
Spirit, SmartPtr, Move, TypeTraits, and Function. DLL became more
lightweight for compilation.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;code&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;error_code&lt;/span&gt;&lt;span class="special"&gt;&amp;amp;&lt;/span&gt;&lt;/code&gt;
in API is used instead of the &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;system&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;error_code&lt;/span&gt;&lt;span class="special"&gt;&amp;amp;&lt;/span&gt;&lt;/code&gt;. This is not a breaking change
as &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;system&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;error_code&lt;/span&gt;&lt;/code&gt; is convertible to &lt;code&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;error_code&lt;/span&gt;&lt;span class="special"&gt;&amp;amp;&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;dll&lt;/span&gt;&lt;span class="special"&gt;:&lt;/span&gt;&lt;span class="identifier"&gt;import_&lt;/span&gt;&lt;span class="special"&gt;*&lt;/span&gt;&lt;/code&gt;
functions now return &lt;code&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;shared_ptr&lt;/span&gt;&lt;/code&gt;
rather than &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;shared_ptr&lt;/span&gt;&lt;/code&gt;.
Define &lt;code&gt;&lt;span class="identifier"&gt;BOOST_DLL_USE_BOOST_SHARED_PTR&lt;/span&gt;&lt;/code&gt;
to restore the old behavior, however note that the macro will be
removed in one of the upcomming Boost releases.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Use modern C++ in the samples and in the library code.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;dll&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;library_info&lt;/span&gt;&lt;/code&gt; now always throws
in case of a broken binary. Updated the docs and added some tests.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Documented in FAQ why &lt;code&gt;&lt;span class="identifier"&gt;RTLD_NODELETE&lt;/span&gt;&lt;/code&gt;
is missing and why there is no &lt;code&gt;&lt;span class="special"&gt;.&lt;/span&gt;&lt;span class="identifier"&gt;release&lt;/span&gt;&lt;span class="special"&gt;()&lt;/span&gt;&lt;/code&gt;
method. Provided suggestions on possible workarounds.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Updated the information on building and using the library. CMake
targets now link with &lt;code&gt;&lt;span class="special"&gt;-&lt;/span&gt;&lt;span class="identifier"&gt;ldl&lt;/span&gt;&lt;/code&gt; if it is required by the platform.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed &lt;code&gt;&lt;span class="identifier"&gt;detail&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;path_from_handle&lt;/span&gt;&lt;/code&gt; implementation
for long paths on Windows OS.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Highlighted in the docs that &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;/&lt;/span&gt;&lt;span class="identifier"&gt;dll&lt;/span&gt;&lt;span class="special"&gt;/&lt;/span&gt;&lt;span class="identifier"&gt;smart_&lt;/span&gt;&lt;span class="special"&gt;*&lt;/span&gt;&lt;/code&gt; parts of the library are experimental
and incomplete.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed multiple mangling issues in &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;/&lt;/span&gt;&lt;span class="identifier"&gt;dll&lt;/span&gt;&lt;span class="special"&gt;/&lt;/span&gt;&lt;span class="identifier"&gt;smart_&lt;/span&gt;&lt;span class="special"&gt;*&lt;/span&gt;&lt;/code&gt; parts of the library.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/geometry/"&gt;Geometry&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Improvements
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/geometry/pull/1370"&gt;PR#1370&lt;/a&gt; Relax half period check in spheroidal normalization
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/geometry/pull/1368"&gt;PR#1368&lt;/a&gt; Pass umbrella strategies in rtree spatial
predicates
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/geometry/pull/1367"&gt;PR#1367&lt;/a&gt; Improvements in traversal
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/geometry/pull/1361"&gt;PR#1361&lt;/a&gt; Test set operations on random grids with
integer coordinates
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Several test cases has been added
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Use using instead of typedef in part of the code
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Solved issues
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/geometry/pull/1364"&gt;PR#1364&lt;/a&gt; Fix several strategies (add getters, fix
compilation error and warning)
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/geometry/issues/629"&gt;#629&lt;/a&gt; Avoid warnings for coordinate conversions and
unused parameters
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Various fixes of errors and warnings
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/geometry/"&gt;Graph&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Bug fixes
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Replace implementation of &lt;code&gt;&lt;span class="identifier"&gt;maximum_weighted_matching&lt;/span&gt;&lt;/code&gt;,
resolves multiple issues.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Ensure &lt;code&gt;&lt;span class="identifier"&gt;named_graph&lt;/span&gt;&lt;/code&gt;
is initialized before use.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Replace custom geometry code in &lt;code&gt;&lt;span class="identifier"&gt;is_straight_line_drawing&lt;/span&gt;&lt;/code&gt;
with Boost.Geometry, fixes incorrect results for very small
angles.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fix incorrect callbacks to &lt;code&gt;&lt;span class="identifier"&gt;finish_edge&lt;/span&gt;&lt;/code&gt;
in &lt;code&gt;&lt;span class="identifier"&gt;undirected_dfs&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Performance improvements
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
&lt;code&gt;&lt;span class="identifier"&gt;adjacency_list&lt;/span&gt;&lt;/code&gt;:
Remove unnecessary calls to &lt;code&gt;&lt;span class="identifier"&gt;resize&lt;/span&gt;&lt;/code&gt;/&lt;code&gt;&lt;span class="identifier"&gt;reserve&lt;/span&gt;&lt;/code&gt; from within &lt;code&gt;&lt;span class="identifier"&gt;add_vertex&lt;/span&gt;&lt;/code&gt; for &lt;code&gt;&lt;span class="identifier"&gt;vector&lt;/span&gt;&lt;/code&gt;-based storage! A quick
benchmark indicates a 10% improvement to graph construction
time.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;code&gt;&lt;span class="identifier"&gt;lengauer_tarjan_dominator_tree&lt;/span&gt;&lt;/code&gt;:
Replace &lt;code&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;deque&lt;/span&gt;&lt;/code&gt;
with &lt;code&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;vector&lt;/span&gt;&lt;/code&gt;, obtaining a ~40%
improvement for large graphs.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
General Improvements
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Replace the use of several Boost utilities with C++14 language
features.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Modernize examples with C++14 language features.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Various fixes to documentation and build system.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;code&gt;&lt;span class="identifier"&gt;vertex_by_property&lt;/span&gt;&lt;/code&gt;
no longer requires a mutable graph.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fix compilation issue with &lt;code&gt;&lt;span class="identifier"&gt;cycle_canceling&lt;/span&gt;&lt;/code&gt;
and Clang 19.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/iterator/"&gt;Iterator&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Dropped support for C++03 and ancient compilers, updated code base
to use C++11 and MP11, reduced usage of MPL. (&lt;a href="https://github.com/boostorg/iterator/pull/82"&gt;PR#82&lt;/a&gt;)
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added &lt;code&gt;&lt;span class="identifier"&gt;min_category&lt;/span&gt;&lt;/code&gt;
trait, which is a variadic equivalent of &lt;code&gt;&lt;span class="identifier"&gt;minimum_category&lt;/span&gt;&lt;/code&gt;
that doesn't depend on MPL. &lt;code&gt;&lt;span class="identifier"&gt;minimum_category&lt;/span&gt;&lt;/code&gt;
is deprecated and will be removed in a future release.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Extracted &lt;code&gt;&lt;span class="identifier"&gt;enable_if_convertible&lt;/span&gt;&lt;/code&gt;
trait to a separate header &lt;code&gt;&lt;span class="identifier"&gt;enable_if_convertible&lt;/span&gt;&lt;span class="special"&gt;.&lt;/span&gt;&lt;span class="identifier"&gt;hpp&lt;/span&gt;&lt;/code&gt;.
The trait was previously defined in &lt;code&gt;&lt;span class="identifier"&gt;iterator_adaptor&lt;/span&gt;&lt;span class="special"&gt;.&lt;/span&gt;&lt;span class="identifier"&gt;hpp&lt;/span&gt;&lt;/code&gt;,
and the header still provides &lt;code&gt;&lt;span class="identifier"&gt;enable_if_convertible&lt;/span&gt;&lt;/code&gt;
when included. This dependency is provided for backward compatibility
and will be removed in a future release. Users are advised to add
includes of &lt;code&gt;&lt;span class="identifier"&gt;enable_if_convertible&lt;/span&gt;&lt;span class="special"&gt;.&lt;/span&gt;&lt;span class="identifier"&gt;hpp&lt;/span&gt;&lt;/code&gt;,
as needed.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added &lt;code&gt;&lt;span class="special"&gt;*&lt;/span&gt;&lt;span class="identifier"&gt;_t&lt;/span&gt;&lt;/code&gt;
variants of various iterator traits that produce types.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;code&gt;&lt;span class="identifier"&gt;filter_iterator&lt;/span&gt;&lt;/code&gt; and
&lt;code&gt;&lt;span class="identifier"&gt;transform_iterator&lt;/span&gt;&lt;/code&gt;
now use empty base optimization (EBO) to reduce size of the iterator
when the adopted function object is stateless.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;code&gt;&lt;span class="identifier"&gt;zip_iterator&lt;/span&gt;&lt;/code&gt; now
natively supports &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;tuple&lt;/span&gt;&lt;/code&gt;,
&lt;code&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;tuple&lt;/span&gt;&lt;/code&gt; and &lt;code&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;pair&lt;/span&gt;&lt;/code&gt;
for iterator tuples and doesn't need including Fusion support headers.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;code&gt;&lt;span class="identifier"&gt;function_output_iterator&lt;/span&gt;&lt;/code&gt;
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.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;code&gt;&lt;span class="identifier"&gt;generator_iterator&lt;/span&gt;&lt;span class="special"&gt;.&lt;/span&gt;&lt;span class="identifier"&gt;hpp&lt;/span&gt;&lt;/code&gt;
and &lt;code&gt;&lt;span class="identifier"&gt;shared_container_iterator&lt;/span&gt;&lt;span class="special"&gt;.&lt;/span&gt;&lt;span class="identifier"&gt;hpp&lt;/span&gt;&lt;/code&gt;
headers were moved under the &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;/&lt;/span&gt;&lt;span class="identifier"&gt;iterator&lt;/span&gt;&lt;/code&gt;
directory. The previous headers in &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;/code&gt;
are still retained for backward compatibility, but will be removed
in a future release. Users are advised to update their includes.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;code&gt;&lt;span class="identifier"&gt;shared_container_iterator&lt;/span&gt;&lt;/code&gt;
now uses &lt;code&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;shared_ptr&lt;/span&gt;&lt;/code&gt; to reference the container
internally. The support for &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;shared_ptr&lt;/span&gt;&lt;/code&gt;
is still retained, but it will incur performance overhead on the
iterator construction, as &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;shared_ptr&lt;/span&gt;&lt;/code&gt;
is now wrapped in a &lt;code&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;shared_ptr&lt;/span&gt;&lt;/code&gt;
internally. It is recommended to use &lt;code&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;shared_ptr&lt;/span&gt;&lt;/code&gt;
to reference the container.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/locale/"&gt;Locale&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Raised required ICU version to at least 4.8.1
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Dropped support for ICU 50.1
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed parsing of integers with input strings in floating point format
(&lt;a href="https://github.com/boostorg/locale/pull/241"&gt;PR#241&lt;/a&gt;)
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Support parsing and formatting of &lt;code&gt;&lt;span class="identifier"&gt;uint64_t&lt;/span&gt;&lt;/code&gt;
values with the ICU backend (&lt;a href="https://github.com/boostorg/locale/pull/246"&gt;PR#246&lt;/a&gt;)
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Support &lt;code&gt;&lt;span class="identifier"&gt;char8_t&lt;/span&gt;&lt;/code&gt; on
more platforms
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/lockfree/"&gt;Lockfree&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Added new spsc_value, a lockfree single-producer single-consumer
value based on a triple-buffer
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/log/"&gt;Log&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Disabled usage of &lt;code&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;codecvt&lt;/span&gt;&lt;span class="special"&gt;&amp;lt;&lt;/span&gt;&lt;span class="keyword"&gt;char16_t&lt;/span&gt;&lt;span class="special"&gt;&amp;gt;&lt;/span&gt;&lt;/code&gt; and &lt;code&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;codecvt&lt;/span&gt;&lt;span class="special"&gt;&amp;lt;&lt;/span&gt;&lt;span class="keyword"&gt;char32_t&lt;/span&gt;&lt;span class="special"&gt;&amp;gt;&lt;/span&gt;&lt;/code&gt; locale facets in C++20 and later
modes as they were deprecated in C++20. This means character code
conversions to/from &lt;code&gt;&lt;span class="keyword"&gt;char16_t&lt;/span&gt;&lt;/code&gt;
and &lt;code&gt;&lt;span class="keyword"&gt;char32_t&lt;/span&gt;&lt;/code&gt; is no longer
available in C++20 and later.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed building issues when using CMake and MinGW-w64. (&lt;a href="https://github.com/boostorg/log/pull/241"&gt;PR#241&lt;/a&gt;)
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed incorrect file counter used by &lt;code&gt;&lt;span class="identifier"&gt;text_file_backend&lt;/span&gt;&lt;/code&gt;
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. (&lt;a href="https://github.com/boostorg/log/issues/245"&gt;#245&lt;/a&gt;)
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/mp11/"&gt;Mp11&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Fixed &lt;code&gt;&lt;span class="identifier"&gt;mp_from_sequence&lt;/span&gt;&lt;/code&gt;
for non-integral values (accidentally broken in 1.83.0 due to offset
support)
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/mysql/"&gt;MySQL&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
&lt;code&gt;&lt;span class="identifier"&gt;connection_pool&lt;/span&gt;&lt;/code&gt; 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 (&lt;a href="https://github.com/boostorg/mysql/issues/395"&gt;#395&lt;/a&gt;).
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added &lt;code&gt;&lt;span class="identifier"&gt;any_connection&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;connection_id&lt;/span&gt;&lt;/code&gt;.
This function retrieves the connection's ID, which can subsequently
be used in &lt;code&gt;&lt;span class="identifier"&gt;KILL&lt;/span&gt;&lt;/code&gt; SQL
statements to cancel queries. This function is equivalent to &lt;code&gt;&lt;span class="identifier"&gt;mysql_thread_id&lt;/span&gt;&lt;/code&gt; in the official
C API (&lt;a href="https://github.com/boostorg/mysql/issues/408"&gt;#408&lt;/a&gt;)
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Attempting to start an async operation on a &lt;code&gt;&lt;span class="identifier"&gt;connection&lt;/span&gt;&lt;/code&gt;
or &lt;code&gt;&lt;span class="identifier"&gt;any_connection&lt;/span&gt;&lt;/code&gt;
while another operation is in-progress no longer triggers undefined
behavior. It now fails with &lt;code&gt;&lt;span class="identifier"&gt;client_errc&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;operation_in_progress&lt;/span&gt;&lt;/code&gt;
(&lt;a href="https://github.com/boostorg/mysql/issues/405"&gt;#405&lt;/a&gt;).
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Attempting to start an operation while a &lt;code&gt;&lt;span class="identifier"&gt;connection&lt;/span&gt;&lt;/code&gt;
or &lt;code&gt;&lt;span class="identifier"&gt;any_connection&lt;/span&gt;&lt;/code&gt;
are engaged in a multi-function operation no longer yields potentially
dangerous packet mismatches. It instead fails with &lt;code&gt;&lt;span class="identifier"&gt;client_errc&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;engaged_in_multi_function&lt;/span&gt;&lt;/code&gt; (&lt;a href="https://github.com/boostorg/mysql/issues/448"&gt;#448&lt;/a&gt;).
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Improved diagnostics when attempting to use a connection without
a established session. Operations now fail with &lt;code&gt;&lt;span class="identifier"&gt;client_errc&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;not_connected&lt;/span&gt;&lt;/code&gt;
(&lt;a href="https://github.com/boostorg/mysql/issues/450"&gt;#450&lt;/a&gt;).
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed a race condition in &lt;code&gt;&lt;span class="identifier"&gt;connection&lt;/span&gt;&lt;/code&gt;
and &lt;code&gt;&lt;span class="identifier"&gt;any_connection&lt;/span&gt;&lt;/code&gt;
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 (&lt;a href="https://github.com/boostorg/mysql/issues/199"&gt;#199&lt;/a&gt;).
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;code&gt;&lt;span class="identifier"&gt;field&lt;/span&gt;&lt;/code&gt;'s constructor
and assignment from &lt;code&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;string_view&lt;/span&gt;&lt;/code&gt;
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.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added an HTTP server example that uses C++20 coroutines.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added a doc page on interfacing sync and async code. This replaces
the synchronous connection pool snippet, which contained a race condition.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Improved some of the other examples and doc pages.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/nowide/"&gt;Nowide&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Make &lt;code&gt;&lt;span class="identifier"&gt;getenv&lt;/span&gt;&lt;/code&gt; thread-safe
(&lt;a href="https://github.com/boostorg/nowide/pull/191"&gt;PR#191&lt;/a&gt;)
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/poly_collection/"&gt;PolyCollection&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Added &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;variant_collection&lt;/span&gt;&lt;/code&gt;, a closed polymorphic
collection similar in behavior to &lt;code&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;vector&lt;/span&gt;&lt;span class="special"&gt;&amp;lt;&lt;/span&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;variant&lt;/span&gt;&lt;span class="special"&gt;&amp;lt;...&amp;gt;&amp;gt;&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/smart_ptr/"&gt;SmartPtr&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Fix &lt;code&gt;&lt;span class="keyword"&gt;operator&lt;/span&gt;&lt;span class="special"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;/code&gt;
for wide streams (accidentally broken in 1.87.0)
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/stacktrace/"&gt;Stacktrace&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Use &lt;code&gt;&lt;span class="identifier"&gt;GetModuleNames&lt;/span&gt;&lt;/code&gt;
to determine the full module path for MSVC implementation. Many thanks
to &lt;a href="https://github.com/Dani-Hub"&gt;Daniel Krügler&lt;/a&gt;
for the &lt;a href="https://github.com/boostorg/stacktrace/pull/198"&gt;PR#198&lt;/a&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Print relative addresses to allow their decoding later without knowing
the base address. The logic could be disabled by defining &lt;code&gt;&lt;span class="identifier"&gt;BOOST_STACKTRACE_DISABLE_OFFSET_ADDR_BASE&lt;/span&gt;&lt;/code&gt;.
Many thanks to &lt;a href="https://github.com/McCzarny"&gt;Maciej Czarnecki&lt;/a&gt;
for the &lt;a href="https://github.com/boostorg/stacktrace/pull/200"&gt;PR#200&lt;/a&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Expose all the stacktrace libraries as b2 features for better control
over the build and explicit information on what libraries are built.
See "Configuration and Build" section for more info. Many
thanks to &lt;a href="https://github.com/uilianries"&gt;Uilian Ries&lt;/a&gt;
for initial implementation of the feature in &lt;a href="https://github.com/boostorg/stacktrace/pull/202"&gt;PR#202&lt;/a&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed &lt;code&gt;&lt;span class="identifier"&gt;stacktrace_from_exception&lt;/span&gt;&lt;/code&gt;
builds with MinGW. Thanks to &lt;a href="https://github.com/crhilton"&gt;crhilton&lt;/a&gt;
for the fix.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/type_index/"&gt;TypeIndex&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Fixed an UB that was introduced in Boost.TypeIndex 1.84 and prevented
the library from building on clang-20.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/unordered/"&gt;Unordered&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Migrated the documentation to a multipage format using Antora.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/variant2/"&gt;Variant2&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Use the smallest appropriate unsigned type for the index.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id="version_1_88_0.compilers_tested"&gt;
&lt;h3&gt;&lt;span class="link"&gt;Compilers Tested&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;
Boost's primary test compilers are:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Linux:
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Clang, C++03: 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 12.0.0, 13.0.0, 14.0.0,
15.0.0
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Clang, C++11: 3.4, 11.0.0, 13.0.0, 14.0.0, 15.0.0
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Clang, C++14: 3.5, 3.6, 3.7, 3.8, 3.9, 4.0, 5.0, 12.0.0, 13.0.0,
14.0.0, 15.0.0
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Clang, C++17: 6.0.1, 7.0.0, 8.0.0, 9.0.0, 10.0.0, 11.0.0, 12.0.0,
13.0.0, 14.0.0, 15.0.0
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Clang, C++20: 11.0.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
GCC, C++03: 4.6.3, 11, 12
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
GCC, C++11: 4.7.3, 4.8.5, 11, 12
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
GCC, C++14: 5.4.0, 6.4.0, 7.3.0, 8.0.1, 9.1.0, 11, 12
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
GCC, C++17: 7.3.0, 8.0.1, 9.1.0, 11, 12
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
GCC, C++20: 8.0.1, 9.1.0, 10, 11, 12
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
OS X:
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Apple Clang, C++03: 11.0.3
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Apple Clang, C++11: 11.0.3
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Apple Clang, C++14: 11.0.3
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Apple Clang, C++17: 11.0.3
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Apple Clang, C++20: 11.0.3
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Windows:
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Visual C++: 10.0, 11.0, 12.0, 14.0, 14.1, 14.2, 14.3
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id="version_1_88_0.acknowledgements"&gt;
&lt;h3&gt;&lt;span class="link"&gt;Acknowledgements&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;
Marshall Clow, Glen Fernandes and Ion Gaztañaga managed this release.
&lt;/p&gt;
&lt;/div&gt;
</description></item><item><title>Version 1.87.0</title><link>https://www.boost.org/users/history/version_1_87_0.html</link><guid>https://www.boost.org/users/history/version_1_87_0.html</guid><pubDate>Thu, 12 Dec 2024 00:52:33 +0000</pubDate><description>
&lt;div id="version_1_87_0.new_libraries"&gt;
&lt;h3&gt;&lt;span class="link"&gt;New Libraries&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/parser/"&gt;Parser&lt;/a&gt;:&lt;/span&gt; Framework for building
parsers, from Zach Laine.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id="version_1_87_0.updated_libraries"&gt;
&lt;h3&gt;&lt;span class="link"&gt;Updated Libraries&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/asio/"&gt;Asio&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Added support for using byte spans and sequences of byte spans as
buffer sequences. This means that they can be passed directly to
I/O operations such as &lt;code&gt;&lt;span class="identifier"&gt;async_read&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added support for generic dispositions, which are types that can
be used to test whether an asynchronous operation completed without
error. This includes &lt;code&gt;&lt;span class="identifier"&gt;error_code&lt;/span&gt;&lt;/code&gt;
and &lt;code&gt;&lt;span class="identifier"&gt;exception_ptr&lt;/span&gt;&lt;/code&gt;,
but can be extended to user types via specialisation of the &lt;code&gt;&lt;span class="identifier"&gt;disposition_traits&lt;/span&gt;&lt;/code&gt; class template.
The standard types &lt;code&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;error_code&lt;/span&gt;&lt;/code&gt;
and &lt;code&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;exception_ptr&lt;/span&gt;&lt;/code&gt; are recognised as
dispositions.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added disposition support to the &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;asio&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;use_future&lt;/span&gt;&lt;/code&gt;
completion token, &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;asio&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;awaitable&lt;/span&gt;&lt;span class="special"&gt;&amp;lt;&amp;gt;&lt;/span&gt;&lt;/code&gt;-based coroutines, &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;asio&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;spawn&lt;/span&gt;&lt;span class="special"&gt;()&lt;/span&gt;&lt;/code&gt;,
and &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;asio&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;experimental&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;cancellation_condition&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added the &lt;code&gt;&lt;span class="identifier"&gt;execution_context&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;service_maker&lt;/span&gt;&lt;/code&gt;
abstract base class. A &lt;code&gt;&lt;span class="identifier"&gt;service_maker&lt;/span&gt;&lt;/code&gt;
is an object that is passed to an execution context's constructor,
and allows services to be added at context construction time.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;asio&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;config&lt;/span&gt;&lt;/code&gt;, which provides access to
configuration parameters that are associated with an execution context.
The class is intended for use by asio internals, or by libraries
or user-provided abstractions that build on top of asio, and will
typically be used to fine tune behaviour, such as enabling or disabling
certain optimisations. A concrete configuration source, such as
&lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;asio&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;config_from_env&lt;/span&gt;&lt;/code&gt;, &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;asio&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;config_from_concurrency_hint&lt;/span&gt;&lt;/code&gt; and
&lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;asio&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;config_from_string&lt;/span&gt;&lt;/code&gt;, may be passed
to the &lt;code&gt;&lt;span class="identifier"&gt;io_context&lt;/span&gt;&lt;/code&gt;
or &lt;code&gt;&lt;span class="identifier"&gt;thread_pool&lt;/span&gt;&lt;/code&gt; constructor.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added an initial set of configuration parameters recognised by Asio's
&lt;code&gt;&lt;span class="identifier"&gt;io_context&lt;/span&gt;&lt;/code&gt; and &lt;code&gt;&lt;span class="identifier"&gt;thread_pool&lt;/span&gt;&lt;/code&gt; implementations.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Removed some previously deprecated facilities.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Deprecated &lt;code&gt;&lt;span class="identifier"&gt;basic_io_object&lt;/span&gt;&lt;/code&gt;
and &lt;code&gt;&lt;span class="identifier"&gt;deadline_timer&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added rvalue-qualified &lt;code&gt;&lt;span class="keyword"&gt;operator&lt;/span&gt;&lt;span class="special"&gt;()&lt;/span&gt;&lt;/code&gt; overloads to associating binders.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added support for modular build structure.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed &lt;code&gt;&lt;span class="identifier"&gt;spawn&lt;/span&gt;&lt;span class="special"&gt;()&lt;/span&gt;&lt;/code&gt;
of functions that return move-only types.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed &lt;code&gt;&lt;span class="identifier"&gt;co_composed&lt;/span&gt;&lt;/code&gt;
to not require concepts support.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed the epoll reactor to not try to re-register regular file descriptors
after fork.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed a leak in &lt;code&gt;&lt;span class="identifier"&gt;ssl&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;detail&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;engine&lt;/span&gt;&lt;/code&gt;
move assignment.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed compile error when &lt;code&gt;&lt;span class="identifier"&gt;BOOST_ASIO_DISABLE_SMALL_BLOCK_RECYCLING&lt;/span&gt;&lt;/code&gt;
is defined.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed compile error when using Clang 19.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Changed &lt;code&gt;&lt;span class="identifier"&gt;thread_pool&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;join&lt;/span&gt;&lt;span class="special"&gt;()&lt;/span&gt;&lt;/code&gt; to ensure that it stops threads
that are subsequently added to the pool using &lt;code&gt;&lt;span class="identifier"&gt;thread_pool&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;attach&lt;/span&gt;&lt;span class="special"&gt;()&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed the offsets passed to &lt;code&gt;&lt;span class="identifier"&gt;io_uring_prep_write_fixed&lt;/span&gt;&lt;/code&gt;
and &lt;code&gt;&lt;span class="identifier"&gt;io_uring_prep_read_fixed&lt;/span&gt;&lt;/code&gt;,
when they are used for stream-oriented operations.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Consult the &lt;a href="https://www.boost.org/doc/libs/1_87_0/doc/html/boost_asio/history.html"&gt;Revision
History&lt;/a&gt; for further details.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/atomic/"&gt;Atomic&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Fixed initialization of atomic wait state list on memory reallocation.
(&lt;a href="https://github.com/boostorg/atomic/issues/72"&gt;#72&lt;/a&gt;)
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/beast/"&gt;Beast&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
API Changes
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Added &lt;code&gt;&lt;span class="identifier"&gt;error_code&lt;/span&gt;&lt;/code&gt;
overload for &lt;code&gt;&lt;span class="identifier"&gt;basic_fields&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;insert&lt;/span&gt;&lt;span class="special"&gt;()&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added overload for &lt;code&gt;&lt;span class="identifier"&gt;websocket&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;stream&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;get_status&lt;/span&gt;&lt;/code&gt;
to query permessage-deflate status.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixes
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Fixed use-after-move in calls to &lt;code&gt;&lt;span class="identifier"&gt;net&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;dispatch&lt;/span&gt;&lt;/code&gt;
within &lt;code&gt;&lt;span class="identifier"&gt;http&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;basic_stream&lt;/span&gt;&lt;/code&gt;,
which caused &lt;code&gt;&lt;span class="identifier"&gt;bad_executor&lt;/span&gt;&lt;/code&gt;
exceptions on timeouts.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Removed mutating operations in initiating functions.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed cancellation handling in &lt;code&gt;&lt;span class="identifier"&gt;teardown_tcp_op&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Set &lt;code&gt;&lt;span class="identifier"&gt;state_&lt;/span&gt;&lt;/code&gt;
in &lt;code&gt;&lt;span class="identifier"&gt;basic_parser&lt;/span&gt;&lt;/code&gt;
before calling &lt;code&gt;&lt;span class="identifier"&gt;on_finish_impl&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Removed static specifier from &lt;code&gt;&lt;span class="identifier"&gt;clamp&lt;/span&gt;&lt;/code&gt;
functions.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Addressed &lt;code&gt;&lt;span class="special"&gt;-&lt;/span&gt;&lt;span class="identifier"&gt;Wattributes&lt;/span&gt;&lt;/code&gt;
warnings in tests.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Addressed unreachable code warning in tests.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Improvements
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Added forward declaration headers for types in &lt;code&gt;&lt;span class="identifier"&gt;beast&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;http&lt;/span&gt;&lt;/code&gt; namespace
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Enabled &lt;code&gt;&lt;span class="identifier"&gt;http&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;parser&lt;/span&gt;&lt;/code&gt;
to use &lt;code&gt;&lt;span class="identifier"&gt;basic_fields&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;insert&lt;/span&gt;&lt;span class="special"&gt;()&lt;/span&gt;&lt;/code&gt; with &lt;code&gt;&lt;span class="identifier"&gt;error_code&lt;/span&gt;&lt;/code&gt;
overload
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Applied &lt;code&gt;&lt;span class="identifier"&gt;header_limit_&lt;/span&gt;&lt;/code&gt;
in &lt;code&gt;&lt;span class="identifier"&gt;http&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;basic_parser&lt;/span&gt;&lt;/code&gt; to trailer headers
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Improved &lt;code&gt;&lt;span class="identifier"&gt;http&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;basic_parser&lt;/span&gt;&lt;/code&gt;
to return &lt;code&gt;&lt;span class="identifier"&gt;http&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;error&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;header_limit&lt;/span&gt;&lt;/code&gt;
earlier
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added support for modular boost build structure
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Acknowledgements
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Jackarain, Saleh Hatefinya, René Ferdinand Rivera Morell
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/charconv"&gt;Charconv&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Fixed support for PPC64LE architecture using &lt;code&gt;&lt;span class="identifier"&gt;__ibm128&lt;/span&gt;&lt;/code&gt;
as long double format
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed intrinsic usage with Windows ARM64 platform
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed formatting of fixed with specified precision using &lt;code&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;float128_t&lt;/span&gt;&lt;/code&gt; or &lt;code&gt;&lt;span class="identifier"&gt;__float128&lt;/span&gt;&lt;/code&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/cobalt"&gt;Cobalt&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Removed requirement for get_executor to return a const ref
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added experimental/composition.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/compat/"&gt;Compat&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Added &lt;code&gt;&lt;span class="identifier"&gt;to_array&lt;/span&gt;&lt;span class="special"&gt;.&lt;/span&gt;&lt;span class="identifier"&gt;hpp&lt;/span&gt;&lt;/code&gt; (contributed by Ruben Perez
Hidalgo.)
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/container/"&gt;Container&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Added &lt;code&gt;stored_size&lt;/code&gt;
option to &lt;code&gt;&lt;span class="identifier"&gt;static_vector&lt;/span&gt;&lt;/code&gt;
and &lt;code&gt;&lt;span class="identifier"&gt;small_vector&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed bugs/issues:
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/container/issues/261"&gt;GitHub
#261: &lt;em&gt;"End iterators are not dereferencable"&lt;/em&gt;&lt;/a&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/container/issues/288"&gt;GitHub
#288: &lt;em&gt;"Compile error when using flat_map::extract_sequence
with small_vector"&lt;/em&gt;&lt;/a&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/filesystem/"&gt;Filesystem&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
As was announced in 1.84.0, Windows versions prior to 10 are no longer
supported.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
On Windows, &lt;code&gt;&lt;span class="identifier"&gt;canonical&lt;/span&gt;&lt;/code&gt;
is now based on the &lt;code&gt;&lt;span class="identifier"&gt;GetFinalPathNameByHandleW&lt;/span&gt;&lt;/code&gt;
WinAPI function. As a side effect, drive letters are converted to
upper case, which makes the resulting paths more interoperable. (&lt;a href="https://github.com/boostorg/filesystem/issues/325"&gt;#325&lt;/a&gt;)
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;strong&gt;v4:&lt;/strong&gt; &lt;code&gt;&lt;span class="identifier"&gt;canonical&lt;/span&gt;&lt;/code&gt;
no longer produces a trailing directory separator in the resulting
path, if the input path has one.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
If a &lt;code&gt;&lt;span class="identifier"&gt;path&lt;/span&gt;&lt;/code&gt; constructor
or member function is called with an argument of a user-defined type
that is convertible to &lt;code&gt;&lt;span class="identifier"&gt;path&lt;/span&gt;&lt;/code&gt;
and one or more &lt;code&gt;&lt;span class="identifier"&gt;Source&lt;/span&gt;&lt;/code&gt;
types, the conversion to &lt;code&gt;&lt;span class="identifier"&gt;path&lt;/span&gt;&lt;/code&gt;
is now chosen by default. This may resolve argument conversion ambiguities
in some cases, but may also result in a less optimal conversion path.
If a different conversion path is desired, users are recommended
to use explicit type casts. (&lt;a href="https://github.com/boostorg/filesystem/issues/326"&gt;#326&lt;/a&gt;)
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added a workaround for &lt;code&gt;&lt;span class="identifier"&gt;dirfd&lt;/span&gt;&lt;/code&gt;
being a macro on FreeBSD 9 and older. (&lt;a href="https://github.com/boostorg/filesystem/issues/328"&gt;#328&lt;/a&gt;)
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/flyweight/index.html"&gt;Flyweight&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Added &lt;a href="https://www.boost.org/libs/flyweight/doc/tutorial/configuration.html#concurrent_factory"&gt;&lt;code&gt;&lt;span class="identifier"&gt;concurrent_factory&lt;/span&gt;&lt;/code&gt;&lt;/a&gt;, a factory
based on a concurrent container from &lt;a href="https://www.boost.org/libs/unordered/"&gt;Boost.Unordered&lt;/a&gt;
that provides excellent performance in multithreaded scenarios.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Marked as &lt;code&gt;&lt;span class="keyword"&gt;noexcept&lt;/span&gt;&lt;/code&gt; those
&lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;flyweight&lt;/span&gt;&lt;/code&gt; operations previously
documented as not throwing (issue &lt;a href="https://github.com/boostorg/flyweight/issues/15"&gt;#15&lt;/a&gt;).
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/geometry/"&gt;Geometry&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Improvements
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Use using instead of typedef in part of the code
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Modernize meta function with alias in part of the code
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Add support for modular build structure
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Complete CMake coverage (added github actions cmake tests)
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Improve documentation workflow
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Update Qt end WxWidgets examples
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Add enumerate to prepare for 17 and 23
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Breaking changes
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Remove deprecated rescaling code
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Solved issues
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/geometry/issues/1309"&gt;#1309&lt;/a&gt; Fix some missing qbk includes
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/geometry/issues/1226"&gt;#1226&lt;/a&gt; &lt;a href="https://github.com/boostorg/geometry/issues/1326"&gt;#1326&lt;/a&gt; Fix extra round on ring
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/geometry/issues/1293"&gt;#1293&lt;/a&gt; &lt;a href="https://github.com/boostorg/geometry/issues/1294"&gt;#1294&lt;/a&gt; &lt;a href="https://github.com/boostorg/geometry/issues/1295"&gt;#1295&lt;/a&gt; Fix traversal
through non clustered rings
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/geometry/issues/893"&gt;#893&lt;/a&gt; &lt;a href="https://github.com/boostorg/geometry/issues/1299"&gt;#1299&lt;/a&gt; Fix blocking rings for non
union conditions
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/geometry/issues/1342"&gt;#1342&lt;/a&gt; Fix discarding a start turn for combination
with touch
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/geometry/issues/1288"&gt;#1288&lt;/a&gt; &lt;a href="https://github.com/boostorg/geometry/issues/1345"&gt;#1345&lt;/a&gt; Fixes in handling (imperfect)
touch
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/geometry/issues/1279"&gt;#1279&lt;/a&gt; Fix covered_by incorrect results
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Various fixes of errors and warnings
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/iterator/"&gt;Iterator&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
&lt;code&gt;&lt;span class="identifier"&gt;function_output_iterator&lt;/span&gt;&lt;/code&gt;
is now compliant with &lt;code&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;output_iterator&lt;/span&gt;&lt;/code&gt;
concept. (&lt;a href="https://github.com/boostorg/iterator/issues/85"&gt;#85&lt;/a&gt;)
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/interprocess/"&gt;Interprocess&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Decreased number of Boost dependencies from 11 (in total) to 7.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Deprecated &lt;code&gt;&lt;span class="special"&gt;&amp;lt;&lt;/span&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;/&lt;/span&gt;&lt;span class="identifier"&gt;interprocess&lt;/span&gt;&lt;span class="special"&gt;/&lt;/span&gt;&lt;span class="identifier"&gt;containers&lt;/span&gt;&lt;span class="comment"&gt;/*.hpp&amp;gt;&lt;/span&gt;&lt;/code&gt; headers. They were the
original source of &lt;strong&gt;Boost.Container&lt;/strong&gt;
in 2011, but no longer maintained. As a long transition, Boost.Interprocess
has maintained those headers for compatibility. They will be removed
in a future Boost release.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Some workarounds for Cygwin were added. Regression tests now work
on Cygwin64.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;strong&gt;ABI breaking&lt;/strong&gt;: &lt;code&gt;&lt;span class="identifier"&gt;segment_manager&lt;/span&gt;&lt;/code&gt;
nows uses a new implementation that supports overaligned types and
fixes some existing bugs. You can obtain the pre-Boost 1.87 ABI #defining
&lt;code&gt;&lt;span class="identifier"&gt;BOOST_INTERPROCESS_SEGMENT_MANAGER_ABI&lt;/span&gt;&lt;/code&gt;
to &lt;code&gt;&lt;span class="number"&gt;1&lt;/span&gt;&lt;/code&gt; before including
Boost.Interprocess headers.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed bugs:
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/interprocess/issues/152"&gt;GitHub
#152 (&lt;em&gt;"Handle EINTR in shared_memory_object"&lt;/em&gt;)&lt;/a&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/interprocess/issues/173"&gt;GitHub
#173 (&lt;em&gt;"Managed shared memory segment value not
aligned"&lt;/em&gt;)&lt;/a&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/interprocess/issues/192"&gt;GitHub
#192 (&lt;em&gt;"managed_windows_shared_memory crash on
destruction"&lt;/em&gt;)&lt;/a&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/interprocess/issues/199"&gt;GitHub
#199 (&lt;em&gt;"missing/misused m_is_wide in char_wchar_holder
assignment operators"&lt;/em&gt;)&lt;/a&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/interprocess/issues/210"&gt;GitHub
#210 (&lt;em&gt;"Bug in boost::interprocess::ipcdetail::sync_handles::obtain_mutex"&lt;/em&gt;)&lt;/a&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/interprocess/issues/215"&gt;GitHub
#215 (&lt;em&gt;"Alignment problem with boost/interprocess/segment_manager
on SPARC 32Bit"&lt;/em&gt;)&lt;/a&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/interprocess/issues/217"&gt;GitHub
#217 (&lt;em&gt;"managed_map_file find_or_construct does
not return Cache aligned memory"&lt;/em&gt;)&lt;/a&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/interprocess/issues/230"&gt;GitHub
#230 (&lt;em&gt;"&lt;code&gt;&lt;span class="identifier"&gt;interprocess&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;ipcdetail&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;intermodule_singleton&lt;/span&gt;&lt;/code&gt;
not working on MinGW"&lt;/em&gt;)&lt;/a&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/interprocess/issues/236"&gt;GitHub
#236 (&lt;em&gt;"&lt;code&gt; &lt;span class="identifier"&gt;Floating&lt;/span&gt;
&lt;span class="identifier"&gt;point&lt;/span&gt; &lt;span class="identifier"&gt;inaccuracies&lt;/span&gt;
&lt;span class="identifier"&gt;in&lt;/span&gt; &lt;/code&gt;get_current_process_creation_time&lt;code&gt;
&lt;span class="identifier"&gt;lead&lt;/span&gt; &lt;span class="identifier"&gt;to&lt;/span&gt;
&lt;/code&gt;intermodule_singleton` failures"&lt;/em&gt;)&lt;/a&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/json/"&gt;JSON&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Direct serialization.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Add GDB pretty printers for Boost.JSON types.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Conversion into structs ignores unknown keys.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Exception wrapping behaviour for &lt;code&gt;&lt;span class="identifier"&gt;value_to&lt;/span&gt;&lt;/code&gt;
is simplified.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Deprecated initilaizer list behavior was removed.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Deprecated type aliases were removed.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Use correct 64bit full multiplication for MinGW on ARM64.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fix parse_into handling of tuple of the wrong size.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Check for input size larger than allowed size of sequence.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fix &lt;code&gt;&lt;span class="identifier"&gt;value_ref&lt;/span&gt;&lt;/code&gt; segfaulting
on GCC 14.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/lexical_cast/"&gt;LexicalCast&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Dropped dependency on Boost.Integer, leading to better compile times.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/log/"&gt;Log&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Replaced Boost.Thread synchronization primitives with equivalents
from the C++ standard library. This may improve multithreaded performance,
but also has user-facing consequences:
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Boost.Thread thread interruption is no longer supported. Boost.Log
no longer has special treatment for the &lt;code&gt;&lt;span class="identifier"&gt;thread_interrupted&lt;/span&gt;&lt;/code&gt;
exception that is used by Boost.Thread to implement thread
interruption. This exception will be handled like any other
exception. In particular, user-specified exception handlers
may now be invoked with the &lt;code&gt;&lt;span class="identifier"&gt;thread_interrupted&lt;/span&gt;&lt;/code&gt;
pending exception.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
For timed waiting operations, timeouts are now using std::chrono
time units. This means that the &lt;code&gt;&lt;span class="identifier"&gt;ordering_window&lt;/span&gt;&lt;/code&gt;
named parameter that is supported by the &lt;code&gt;&lt;span class="identifier"&gt;bounded_ordering_queue&lt;/span&gt;&lt;/code&gt;
and &lt;code&gt;&lt;span class="identifier"&gt;unbounded_ordering_queue&lt;/span&gt;&lt;/code&gt;
classes now expects an &lt;code&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;chrono&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;duration&lt;/span&gt;&lt;/code&gt;
value instead of &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;posix_time&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;time_duration&lt;/span&gt;&lt;/code&gt;
from Boost.DateTime.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
In case of errors indicated by thread synchronization primitives,
&lt;code&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;system_error&lt;/span&gt;&lt;/code&gt; exception is
thrown instead of Boost.Thread exception types.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added support for C++ standard library lock types to &lt;code&gt;&lt;span class="identifier"&gt;strictest_lock&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/math/"&gt;Math&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
&lt;strong&gt;Major update.&lt;/strong&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Many special functions, and distribuitions now support CUDA (NVCC
and NVRTC) and SYCL
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added mapairy, holtsmark, and saspoint5 distibutions, see &lt;a href="https://github.com/boostorg/math/pull/1163"&gt;1163&lt;/a&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added landau distibution, see &lt;a href="https://github.com/boostorg/math/pull/1159"&gt;1159&lt;/a&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed unexpected exception in beta quantile, see &lt;a href="https://github.com/boostorg/math/issues/1169"&gt;1169&lt;/a&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/move/index.html"&gt;Move&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Fixed bugs:
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/move/issues/56"&gt;Git
Issue #56: &lt;em&gt;"Forward declarations of std types
cause compilation errors on some platforms"&lt;/em&gt;&lt;/a&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/mp11/"&gt;Mp11&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Added &lt;code&gt;&lt;span class="identifier"&gt;mp_lambda&lt;/span&gt;&lt;/code&gt; (contributed
by Joaquin M Lopez Munoz)
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/multiprecision/"&gt;Multiprecision&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Make &lt;code&gt;&lt;span class="identifier"&gt;float128&lt;/span&gt;&lt;/code&gt; trivially
copyable
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Make &lt;code&gt;&lt;span class="identifier"&gt;__float128&lt;/span&gt;&lt;/code&gt; a
floating point type even in non-GNU modes
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/mysql/"&gt;MySQL&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
&lt;strong&gt;Breaking changes to experimental APIs&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
The thread-safety feature in &lt;code&gt;&lt;span class="identifier"&gt;connection_pool&lt;/span&gt;&lt;/code&gt;
has been redesigned to overcome some design flaws found by
user experience. The boolean option &lt;code&gt;&lt;span class="identifier"&gt;thread_safe&lt;/span&gt;&lt;/code&gt;
has been added to &lt;code&gt;&lt;span class="identifier"&gt;pool_params&lt;/span&gt;&lt;/code&gt;
(set to &lt;code&gt;&lt;span class="keyword"&gt;false&lt;/span&gt;&lt;/code&gt;
by default). When set, some pool functions change behavior
so they can be safely used concurrently. This works by internally
creating a strand, dispatching to it when required, and re-wiring
cancellation signals. When &lt;code&gt;&lt;span class="identifier"&gt;pool_params&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;thread_safe&lt;/span&gt;&lt;/code&gt;
is &lt;code&gt;&lt;span class="keyword"&gt;false&lt;/span&gt;&lt;/code&gt;, the
usual Asio executor semantics apply, with no overhead.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;code&gt;&lt;span class="identifier"&gt;pool_executor_params&lt;/span&gt;&lt;/code&gt;
has been removed, replaced by &lt;code&gt;&lt;span class="identifier"&gt;pool_params&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;connection_executor&lt;/span&gt;&lt;/code&gt;
and &lt;code&gt;&lt;span class="identifier"&gt;pool_params&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;thread_safe&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
The built-in timeout functionality in &lt;code&gt;&lt;span class="identifier"&gt;connection_pool&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;async_get_connection&lt;/span&gt;&lt;/code&gt;
has been completely removed. This function now supports per-operation
cancellation, so the same functionality can be achieved by
using &lt;code&gt;&lt;span class="identifier"&gt;asio&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;cancel_after&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Destroying a &lt;code&gt;&lt;span class="identifier"&gt;connection_pool&lt;/span&gt;&lt;/code&gt;
now cancels outstanding async operations, as other Asio I/O
objects do. This prevents resource leaks: an outstanding &lt;code&gt;&lt;span class="identifier"&gt;async_run&lt;/span&gt;&lt;/code&gt; operation extends
the pool's lifetime until the operation completes, which could
cause the pool object to never get destroyed.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
When an &lt;code&gt;&lt;span class="identifier"&gt;async_get_connection&lt;/span&gt;&lt;/code&gt;
operation is cancelled before a connection is available, the
operation now consistently fails with &lt;code&gt;&lt;span class="identifier"&gt;client_errc&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;pool_not_running&lt;/span&gt;&lt;/code&gt;,
&lt;code&gt;&lt;span class="identifier"&gt;client_errc&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;no_connection_available&lt;/span&gt;&lt;/code&gt;
or &lt;code&gt;&lt;span class="identifier"&gt;client_errc&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;pool_cancelled&lt;/span&gt;&lt;/code&gt;,
depending on the pool state (previously, it would fail with
either &lt;code&gt;&lt;span class="identifier"&gt;client_errc&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;timeout&lt;/span&gt;&lt;/code&gt;
or the last error code encountered by the internal &lt;code&gt;&lt;span class="identifier"&gt;async_connect&lt;/span&gt;&lt;/code&gt; operations
performed by the pool). This information is now included in
the output diagnostics object.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;code&gt;&lt;span class="identifier"&gt;client_errc&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;timeout&lt;/span&gt;&lt;/code&gt;
and &lt;code&gt;&lt;span class="identifier"&gt;client_errc&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;cancelled&lt;/span&gt;&lt;/code&gt;
have been removed.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Calling &lt;code&gt;&lt;span class="identifier"&gt;async_get_connection&lt;/span&gt;&lt;/code&gt;
on a pool that is not running no longer fails immediately,
but waits for &lt;code&gt;&lt;span class="identifier"&gt;async_run&lt;/span&gt;&lt;/code&gt;
to be called.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;code&gt;&lt;span class="identifier"&gt;sequence&lt;/span&gt;&lt;/code&gt; now
returns an owning type. This makes it safe use with &lt;code&gt;&lt;span class="identifier"&gt;with_params&lt;/span&gt;&lt;/code&gt; in deferred async
operations. &lt;code&gt;&lt;span class="identifier"&gt;format_sequence_view&lt;/span&gt;&lt;/code&gt;
has been renamed to &lt;code&gt;&lt;span class="identifier"&gt;format_sequence&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;code&gt;&lt;span class="identifier"&gt;sequence&lt;/span&gt;&lt;/code&gt; has
been moved to a separate header, &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;/&lt;/span&gt;&lt;span class="identifier"&gt;mysql&lt;/span&gt;&lt;span class="special"&gt;/&lt;/span&gt;&lt;span class="identifier"&gt;sequence&lt;/span&gt;&lt;span class="special"&gt;.&lt;/span&gt;&lt;span class="identifier"&gt;hpp&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;code&gt;&lt;span class="identifier"&gt;any_connection&lt;/span&gt;&lt;/code&gt;, client-side
SQL formatting (including &lt;code&gt;&lt;span class="identifier"&gt;format_sql&lt;/span&gt;&lt;/code&gt;
and &lt;code&gt;&lt;span class="identifier"&gt;with_params&lt;/span&gt;&lt;/code&gt;)
and &lt;code&gt;&lt;span class="identifier"&gt;connection_pool&lt;/span&gt;&lt;/code&gt;
have been promoted to stable APIs.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;code&gt;&lt;span class="identifier"&gt;any_connection&lt;/span&gt;&lt;/code&gt; is
now recommended for new code, instead of &lt;code&gt;&lt;span class="identifier"&gt;connection&lt;/span&gt;&lt;/code&gt;
and its aliases &lt;code&gt;&lt;span class="identifier"&gt;tcp_connection&lt;/span&gt;&lt;/code&gt;,
&lt;code&gt;&lt;span class="identifier"&gt;tcp_ssl_connection&lt;/span&gt;&lt;/code&gt;
and &lt;code&gt;&lt;span class="identifier"&gt;unix_connection&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added &lt;code&gt;&lt;span class="identifier"&gt;with_params&lt;/span&gt;&lt;/code&gt;,
a new &lt;code&gt;&lt;span class="identifier"&gt;ExecutionRequest&lt;/span&gt;&lt;/code&gt;
encapsulating a query template string and parameters to expand the
query. When executed, it expands the query using client-side SQL
formatting and sends it to the server for execution. This is the
new recommended way to run simple queries with parameters.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added &lt;code&gt;&lt;span class="identifier"&gt;with_diagnostics&lt;/span&gt;&lt;/code&gt;,
an adapter completion token that transforms exceptions thrown by
async functions to include &lt;code&gt;&lt;span class="identifier"&gt;diagnostics&lt;/span&gt;&lt;/code&gt;
objects, matching how sync throwing functions work.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;code&gt;&lt;span class="identifier"&gt;with_diagnostics&lt;/span&gt;&lt;span class="special"&gt;(&lt;/span&gt;&lt;span class="identifier"&gt;asio&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;deferred&lt;/span&gt;&lt;span class="special"&gt;)&lt;/span&gt;&lt;/code&gt; is now the default completion token
for all operations in &lt;code&gt;&lt;span class="identifier"&gt;any_connection&lt;/span&gt;&lt;/code&gt;
and &lt;code&gt;&lt;span class="identifier"&gt;connection_pool&lt;/span&gt;&lt;/code&gt;.
This causes expressions like &lt;code&gt;&lt;span class="identifier"&gt;co_await&lt;/span&gt;
&lt;span class="identifier"&gt;conn&lt;/span&gt;&lt;span class="special"&gt;.&lt;/span&gt;&lt;span class="identifier"&gt;async_connect&lt;/span&gt;&lt;span class="special"&gt;(&lt;/span&gt;&lt;span class="identifier"&gt;params&lt;/span&gt;&lt;span class="special"&gt;)&lt;/span&gt;&lt;/code&gt;
to behave identically to &lt;code&gt;&lt;span class="identifier"&gt;conn&lt;/span&gt;&lt;span class="special"&gt;.&lt;/span&gt;&lt;span class="identifier"&gt;connect&lt;/span&gt;&lt;span class="special"&gt;(&lt;/span&gt;&lt;span class="identifier"&gt;params&lt;/span&gt;&lt;span class="special"&gt;)&lt;/span&gt;&lt;/code&gt;. Note that &lt;code&gt;&lt;span class="identifier"&gt;connection&lt;/span&gt;&lt;/code&gt;
and its type aliases haven't been updated to match this behavior.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Async functions in &lt;code&gt;&lt;span class="identifier"&gt;connection_pool&lt;/span&gt;&lt;/code&gt;
now support per-operation cancellation.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
All async operations now support &lt;code&gt;&lt;span class="identifier"&gt;asio&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;cancel_after&lt;/span&gt;&lt;/code&gt;,
&lt;code&gt;&lt;span class="identifier"&gt;asio&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;cancel_at&lt;/span&gt;&lt;/code&gt; and similar completion
tokens that require a bound executor to initiations passed to &lt;code&gt;&lt;span class="identifier"&gt;asio&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;async_initiate&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;code&gt;&lt;span class="identifier"&gt;connection&lt;/span&gt;&lt;/code&gt; and &lt;code&gt;&lt;span class="identifier"&gt;any_connection&lt;/span&gt;&lt;/code&gt; now dispatch immediate
completions through the token's immediate executor.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed an issue that caused a crash when trying to use an &lt;code&gt;&lt;span class="identifier"&gt;any_connection&lt;/span&gt;&lt;/code&gt; that hasn't been
previously connected.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Removed an incorrect &lt;code&gt;&lt;span class="keyword"&gt;noexcept&lt;/span&gt;&lt;/code&gt;
specifier from a potentially throwing constructor in &lt;code&gt;&lt;span class="identifier"&gt;field&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed an issue that could cause the write buffer size to exceed the
configured buffer size limit.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Heavily updated the documentation and examples to be more relevant
and reflect the new recommended best practices.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/optional/"&gt;Optional&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
&lt;strong&gt;Breaking change.&lt;/strong&gt; Dropped support
for C++03. C++11 is now the required minimum; at least some C++11
features.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Dropped dependency on Boost.Utility.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Dropped dependency on Boost.Predef.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Dropped dependency on Boost.StaticAssert.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Dropped dependency on Boost.Move.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
A bit faster implementation of some relational operations.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;strong&gt;Warning.&lt;/strong&gt; In the future releases
we intend to introduce the range interface into &lt;code&gt;&lt;span class="identifier"&gt;optional&lt;/span&gt;&lt;/code&gt;,
so that &lt;code&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;ranges&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;range&lt;/span&gt;&lt;span class="special"&gt;&amp;lt;&lt;/span&gt;&lt;span class="identifier"&gt;optional&lt;/span&gt;&lt;span class="special"&gt;&amp;lt;&lt;/span&gt;&lt;span class="identifier"&gt;T&lt;/span&gt;&lt;span class="special"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;/code&gt;
will be &lt;code&gt;&lt;span class="keyword"&gt;true&lt;/span&gt;&lt;/code&gt;. This may
affect the overload resolution in programs that make decisions based
on predicates such as &lt;code&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;ranges&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;range&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Tags &lt;code&gt;&lt;span class="identifier"&gt;in_place_init&lt;/span&gt;&lt;/code&gt;
and &lt;code&gt;&lt;span class="identifier"&gt;in_place_init_if&lt;/span&gt;&lt;/code&gt;
become &lt;code&gt;&lt;span class="keyword"&gt;inline&lt;/span&gt; &lt;span class="keyword"&gt;constexpr&lt;/span&gt;&lt;/code&gt;
and therewith leave smaller footprint in the executable. This addresses
&lt;a href="https://github.com/boostorg/optional/issues/103"&gt;issue
#103&lt;/a&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/pfr/"&gt;PFR&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
&lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;pfr&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;for_each_field_with_name&lt;/span&gt;&lt;/code&gt; function
was added. Many thanks to &lt;a href="https://github.com/Baduit"&gt;Lena&lt;/a&gt;
for the &lt;a href="https://github.com/boostorg/pfr/pull/171"&gt;PR#171&lt;/a&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;strong&gt;Significant&lt;/strong&gt; compilation time improvement
for structures with big size and small fields count. Many thanks
to &lt;a href="https://github.com/runer112"&gt;Zachary Wassall&lt;/a&gt;
for the &lt;a href="https://github.com/boostorg/pfr/pull/120"&gt;PR#120&lt;/a&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed &lt;code&gt;&lt;span class="identifier"&gt;pragma&lt;/span&gt;&lt;/code&gt; directives.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;strong&gt;Initial support for C++20 Modules&lt;/strong&gt;.
See the docs for more info.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fix unused variable warnings in core_name14_disabled.hpp. Thanks
to &lt;a href="https://github.com/anarthal"&gt;Anarthal (Rubén Pérez)&lt;/a&gt;
for the &lt;a href="https://github.com/boostorg/pfr/pull/183"&gt;PR#183&lt;/a&gt; and &lt;a href="https://github.com/boostorg/pfr/pull/187"&gt;PR#187&lt;/a&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Default limit for fields count in aggregate in C++17 was raised from
100 to 200.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed warning about GCC not being aware of the -Wundefined-var-template.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Multiple minor improvement for compilation time.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/process"&gt;Process&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
(v2) Implemented cancellation of async_wait on windows.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
(v2) Added FORCE_DISABLE_CLOSE_RANGE
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
(v2) ext: Multiple ext fixes for BSD &amp;amp; Solaris.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
(v2) unavailable &lt;code&gt;&lt;span class="identifier"&gt;ext&lt;/span&gt;&lt;/code&gt;
functions now compile and give an &lt;code&gt;&lt;span class="identifier"&gt;operation_not_supported&lt;/span&gt;&lt;/code&gt;
error (includes IOS)
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
(v2) multiple link fixes
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
(v2) removed filesystem from the linked library - which filsystem
library is used only affects header files now
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
(v1) Added deprecation notice for 1.88.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/smart_ptr/"&gt;SmartPtr&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
C++03 is no longer supported, a C++11 compiler is required. This
includes GCC 4.8 or later, and MSVC 14.0 or later.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
The functionality enabled by the macros &lt;code&gt;&lt;span class="identifier"&gt;BOOST_SP_ENABLE_DEBUG_HOOKS&lt;/span&gt;&lt;/code&gt;,
&lt;code&gt;&lt;span class="identifier"&gt;BOOST_SP_USE_STD_ALLOCATOR&lt;/span&gt;&lt;/code&gt;,
&lt;code&gt;&lt;span class="identifier"&gt;BOOST_SP_USE_QUICK_ALLOCATOR&lt;/span&gt;&lt;/code&gt;,
&lt;code&gt;&lt;span class="identifier"&gt;BOOST_AC_USE_SPINLOCK&lt;/span&gt;&lt;/code&gt;,
&lt;code&gt;&lt;span class="identifier"&gt;BOOST_AC_USE_PTHREADS&lt;/span&gt;&lt;/code&gt;,
&lt;code&gt;&lt;span class="identifier"&gt;BOOST_SP_USE_SPINLOCK&lt;/span&gt;&lt;/code&gt;,
and &lt;code&gt;&lt;span class="identifier"&gt;BOOST_SP_USE_PTHREADS&lt;/span&gt;&lt;/code&gt;
has been deprecated and support for it will be removed in a future
release.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/stacktrace/"&gt;Stacktrace&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
&lt;code&gt;&lt;span class="identifier"&gt;Boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;stacktrace_from_exception&lt;/span&gt;&lt;/code&gt; CMake
target was added. Many thanks to &lt;a href="https://github.com/void-mian"&gt;int
mian&lt;/a&gt; for the &lt;a href="https://github.com/boostorg/stacktrace/pull/189"&gt;PR#189&lt;/a&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Don't export &lt;code&gt;&lt;span class="identifier"&gt;boost_stacktrace_impl_return_nullptr&lt;/span&gt;&lt;/code&gt;
for static build on MSVC. Many thanks to &lt;a href="https://github.com/huangqinjin"&gt;huangqinjin&lt;/a&gt;
for the &lt;a href="https://github.com/boostorg/stacktrace/pull/186"&gt;PR#186&lt;/a&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed autolinking with &lt;code&gt;&lt;span class="identifier"&gt;ole32&lt;/span&gt;&lt;span class="special"&gt;.&lt;/span&gt;&lt;span class="identifier"&gt;lib&lt;/span&gt;&lt;/code&gt;
and &lt;code&gt;&lt;span class="identifier"&gt;Dbgeng&lt;/span&gt;&lt;span class="special"&gt;.&lt;/span&gt;&lt;span class="identifier"&gt;lib&lt;/span&gt;&lt;/code&gt; while using clang under Windows
OS.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed missing namespace in docs. Thanks to &lt;a href="https://github.com/meastp"&gt;Mats
Taraldsvik&lt;/a&gt; for the &lt;a href="https://github.com/boostorg/stacktrace/pull/181"&gt;PR#181&lt;/a&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed missing include for &lt;code&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;exception&lt;/span&gt;&lt;/code&gt;.
Thanks to &lt;a href="https://github.com/jschueller"&gt;Julien Schueller&lt;/a&gt;
for the &lt;a href="https://github.com/boostorg/stacktrace/pull/178"&gt;PR#178&lt;/a&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed type conversions errors reported by GCC. Thanks to &lt;a href="https://github.com/jplcz"&gt;agent_J&lt;/a&gt;
for the &lt;a href="https://github.com/boostorg/stacktrace/pull/175"&gt;PR#175&lt;/a&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed setting B2 &lt;code&gt;&lt;span class="identifier"&gt;from_exception&lt;/span&gt;&lt;/code&gt;
feature from CLI. Thanks to &lt;a href="https://github.com/grisumbras"&gt;Dmitry
Arkhipov&lt;/a&gt; for the &lt;a href="https://github.com/boostorg/stacktrace/pull/194"&gt;PR#194&lt;/a&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/stl_interfaces/"&gt;STLInterfaces&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Correct misdocumented requirements for sequence container &lt;code&gt;&lt;span class="identifier"&gt;swap&lt;/span&gt;&lt;/code&gt;; the expected return type
is &lt;code&gt;&lt;span class="keyword"&gt;void&lt;/span&gt;&lt;/code&gt;, not &lt;code&gt;&lt;span class="keyword"&gt;bool&lt;/span&gt;&lt;/code&gt;. (&lt;a href="https://github.com/boostorg/stl_interfaces/issues/71"&gt;#71&lt;/a&gt;)
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Add &lt;code&gt;&lt;span class="special"&gt;[[&lt;/span&gt;&lt;span class="identifier"&gt;no_unique_address&lt;/span&gt;&lt;span class="special"&gt;]]&lt;/span&gt;&lt;/code&gt; to the data members of the adaptors
in &lt;code&gt;&lt;span class="identifier"&gt;view_adaptor&lt;/span&gt;&lt;span class="special"&gt;.&lt;/span&gt;&lt;span class="identifier"&gt;hpp&lt;/span&gt;&lt;/code&gt;. (&lt;a href="https://github.com/boostorg/stl_interfaces/issues/65"&gt;#65&lt;/a&gt;)
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Enable deducing &lt;code&gt;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;/code&gt;
for recent versions of Clang and MSVC that support it, but do not
advertise that support via &lt;code&gt;&lt;span class="identifier"&gt;__cpp_explicit_this_parameter&lt;/span&gt;&lt;/code&gt;.
(&lt;a href="https://github.com/boostorg/stl_interfaces/pull/68"&gt;PR#68&lt;/a&gt;)
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/test/"&gt;Test&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Fixed support for clang tidy with dummy conditions &lt;a href="https://github.com/boostorg/test/pull/348"&gt;PR#348&lt;/a&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed dynamic linking with clang &lt;a href="https://github.com/boostorg/test/pull/431"&gt;PR#431&lt;/a&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/unordered/"&gt;Unordered&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
&lt;strong&gt;Major update.&lt;/strong&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added concurrent, node-based containers &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;concurrent_node_map&lt;/span&gt;&lt;/code&gt;
and &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;concurrent_node_set&lt;/span&gt;&lt;/code&gt;.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added &lt;code&gt;&lt;span class="identifier"&gt;insert_and_visit&lt;/span&gt;&lt;span class="special"&gt;(&lt;/span&gt;&lt;span class="identifier"&gt;x&lt;/span&gt;&lt;span class="special"&gt;,&lt;/span&gt; &lt;span class="identifier"&gt;f1&lt;/span&gt;&lt;span class="special"&gt;,&lt;/span&gt; &lt;span class="identifier"&gt;f2&lt;/span&gt;&lt;span class="special"&gt;)&lt;/span&gt;&lt;/code&gt; and similar operations to concurrent
containers, which allow for visitation of an element right after
insertion (by contrast, &lt;code&gt;&lt;span class="identifier"&gt;insert_or_visit&lt;/span&gt;&lt;span class="special"&gt;(&lt;/span&gt;&lt;span class="identifier"&gt;x&lt;/span&gt;&lt;span class="special"&gt;,&lt;/span&gt; &lt;span class="identifier"&gt;f&lt;/span&gt;&lt;span class="special"&gt;)&lt;/span&gt;&lt;/code&gt; only visits the element if insertion
did &lt;em&gt;not&lt;/em&gt; take place).
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Made visitation exclusive-locked within certain &lt;code&gt;&lt;span class="identifier"&gt;boost&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;concurrent_flat_set&lt;/span&gt;&lt;/code&gt;
operations to allow for safe mutable modification of elements (&lt;a href="https://github.com/boostorg/unordered/pull/265"&gt;PR#265&lt;/a&gt;).
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
In Visual Studio Natvis, supported any container with an allocator
that uses fancy pointers. This applies to any fancy pointer type,
as long as the proper Natvis customization point "Intrinsic"
functions are written for the fancy pointer type.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Added GDB pretty-printers for all containers and iterators. For a
container with an allocator that uses fancy pointers, these only
work if the proper pretty-printer is written for the fancy pointer
type itself.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Fixed &lt;code&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;initializer_list&lt;/span&gt;&lt;/code&gt; assignment issues
for open-addressing containers (&lt;a href="https://github.com/boostorg/unordered/pull/277"&gt;PR#277&lt;/a&gt;).
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Allowed non-copyable callables to be passed to the &lt;code&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;initializer_list&lt;/span&gt;&lt;/code&gt; overloads of
&lt;code&gt;&lt;span class="identifier"&gt;insert_&lt;/span&gt;&lt;span class="special"&gt;{&lt;/span&gt;&lt;span class="keyword"&gt;and&lt;/span&gt;&lt;span class="special"&gt;|&lt;/span&gt;&lt;span class="keyword"&gt;or&lt;/span&gt;&lt;span class="special"&gt;}&lt;/span&gt;&lt;span class="identifier"&gt;_&lt;/span&gt;&lt;span class="special"&gt;[&lt;/span&gt;&lt;span class="identifier"&gt;c&lt;/span&gt;&lt;span class="special"&gt;]&lt;/span&gt;&lt;span class="identifier"&gt;visit&lt;/span&gt;&lt;/code&gt; for concurrent containers,
by internally passing a &lt;code&gt;&lt;span class="identifier"&gt;std&lt;/span&gt;&lt;span class="special"&gt;::&lt;/span&gt;&lt;span class="identifier"&gt;reference_wrapper&lt;/span&gt;&lt;/code&gt;
of the callable to the iterator-pair overloads.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/url/"&gt;URL&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
feat: set_params supports encoding_opts. (&lt;a href="https://github.com/boostorg/url/issues/856"&gt;#856&lt;/a&gt;)
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
refactor: no deprecated variant2 alias from API. (&lt;a href="https://github.com/boostorg/url/issues/857"&gt;#857&lt;/a&gt;)
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
refactor: query_rule consistent interpretation. (&lt;a href="https://github.com/boostorg/url/issues/864"&gt;#864&lt;/a&gt;)
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/uuid/"&gt;UUID&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Restored the ability to construct a &lt;code&gt;&lt;span class="keyword"&gt;constexpr&lt;/span&gt;
&lt;span class="identifier"&gt;uuid&lt;/span&gt;&lt;/code&gt; that was inadvertently
lost in 1.86.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;span class="library"&gt;&lt;a href="https://www.boost.org/libs/wave/"&gt;Wave&lt;/a&gt;:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Fixed bugs:
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/wave/issues/220"&gt;GitHub
#220: &lt;em&gt;"Seg fault under C++20 and empty stringify
parameter"&lt;/em&gt;&lt;/a&gt;. Thanks &lt;a href="https://github.com/jwnhy/"&gt;Lu
HongYi&lt;/a&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;a href="https://github.com/boostorg/wave/issues/222"&gt;GitHub
#222: &lt;em&gt;"No line directive if first line of included
file is blank"&lt;/em&gt;&lt;/a&gt;. Thanks &lt;a href="https://github.com/njnobles"&gt;Nick
Nobles&lt;/a&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Build improvements including modular build support, thanks &lt;a href="https://github.com/grafikrobot"&gt;René Rivera&lt;/a&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id="version_1_87_0.compilers_tested"&gt;
&lt;h3&gt;&lt;span class="link"&gt;Compilers Tested&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;
Boost's primary test compilers are:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Linux:
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Clang, C++03: 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 12.0.0, 13.0.0, 14.0.0,
15.0.0
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Clang, C++11: 3.4, 11.0.0, 13.0.0, 14.0.0, 15.0.0
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Clang, C++14: 3.5, 3.6, 3.7, 3.8, 3.9, 4.0, 5.0, 12.0.0, 13.0.0,
14.0.0, 15.0.0
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Clang, C++17: 6.0.1, 7.0.0, 8.0.0, 9.0.0, 10.0.0, 11.0.0, 12.0.0,
13.0.0, 14.0.0, 15.0.0
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Clang, C++20: 11.0.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
GCC, C++03: 4.6.3, 11, 12
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
GCC, C++11: 4.7.3, 4.8.5, 11, 12
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
GCC, C++14: 5.4.0, 6.4.0, 7.3.0, 8.0.1, 9.1.0, 11, 12
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
GCC, C++17: 7.3.0, 8.0.1, 9.1.0, 11, 12
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
GCC, C++20: 8.0.1, 9.1.0, 10, 11, 12
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
OS X:
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Apple Clang, C++03: 11.0.3
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Apple Clang, C++11: 11.0.3
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Apple Clang, C++14: 11.0.3
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Apple Clang, C++17: 11.0.3
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Apple Clang, C++20: 11.0.3
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
Windows:
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
Visual C++: 10.0, 11.0, 12.0, 14.0, 14.1, 14.2, 14.3
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id="version_1_87_0.acknowledgements"&gt;
&lt;h3&gt;&lt;span class="link"&gt;Acknowledgements&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;
Marshall Clow, Glen Fernandes and Ion Gaztañaga managed this release.
&lt;/p&gt;
&lt;/div&gt;
</description></item>
</channel>
</rss>