Version 1.89.0
August 14th, 2025 02:16 GMT
Documentation
New Libraries
- Bloom:
-
filters, from Joaquín
M López Muñoz.
Updated Libraries
-
Any:
-
Initial support for C++20 Modules.
See the docs for more info.
-
Asio:
-
Added allocator constructors to
execution_context
,
io_context
and thread_pool
, with the supplied
allocator being used for allocating objects associated with the execution
context.
-
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.
-
Added a new configuration parameter "resolver" / "threads"
that specifies the number of internal threads used by
async_resolve
to emulate asynchronous
address resolution.
-
Removed
deadline_timer
,
basic_deadline_timer
and time_traits
from
the convenience header boost/asio.hpp.
-
Ensured that the Windows named pipes created by
connect_pipe
use unique names that do not conflict if Asio is used in multiple,
independent plug-in DLLs.
-
Changed
BOOST_ASIO_CONCURRENCY_HINT_SAFE
to be consistent with the io_context
default constructor.
-
Fixed the documentation for
BOOST_ASIO_CONCURRENCY_HINT_UNSAFE_IO
to reflect that registration locking is still enabled.
-
Added separate b2 and cmake
build targets for optional dependencies.
-
Added the
[[noreturn]]
attribute to boost::asio::detail::throw_exception
.
-
Fixed
co_spawn
to
adhere to the asynchronous operation requirement for non-reentrant
invocation of the completion handler.
-
Added a documentation note on
basic_signal_set
async signal safety.
-
Fixed various minor compilation errors on different platforms.
-
Consult the Revision
History for further details.
-
Atomic:
-
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.
-
Following the announcement in Boost 1.84, removed support for Windows
versions older than Windows 10.
-
A note to MinGW-w64 users. Since Windows SDK headers on MinGW-w64
define
_WIN32_WINNT
to an older Windows version by default, you may need to define
_WIN32_WINNT=0x0A00
or BOOST_USE_WINAPI_VERSION=0x0A00
when compiling Boost.Atomic and the code that uses Boost.Atomic.
-
Support for Windows CE is deprecated and will be removed in a future
release.
-
Added support for timed waiting operations.
-
Exposed
thread_pause
operation, which can be used as a backoff measure in spin loops.
Added support for PowerPC and improved support for AArch64 in thread_pause
.
-
Removed
BOOST_ATOMIC_NO_ATOMIC_FLAG_INIT
macro definition. Since the library now requires C++11, BOOST_ATOMIC_FLAG_INIT
is always
supported.
-
Enabled bitwise operations for atomic enumerations. This can be useful
when enumerations are used to implement bit masks.
-
Beast:
-
Fixes
-
Conditionally defined
immediate_executor_type
in async_base
.
-
Added missing
cstdint
header to detail/cpu_info.hpp
.
-
Fixed
std::is_trivial
deprecation warnings.
-
handshake_timeout
now applies to closing handshakes during reads.
-
Improvements
-
Replaced
detail/work_guard.hpp
with net::executor_work_guard
.
-
Fixed portability issues for building tests in MinGW.
-
Documentation
-
Removed moved sections from documentation.
-
Removed superfluous log messages from tests.
-
Acknowledgements
-
Charconv:
-
Fixed a performance degradation with
from_chars
for integer types
-
Fixed rounding and trailing decimal place bugs with
to_chars
for specified precisions
with floating point types
-
Cobalt:
-
Move assign fixed for generator & promise.
-
Fixed internal exceptions
-
Added IO library. Cobalt.io provides a large subset of asio as a
compiled library.
-
Compat:
-
Added
move_only_function.hpp
.
-
ContainerHash:
-
Added the
hash_is_avalanching
trait class.
-
Conversion:
-
Added an ability to use
polymorphic_downcast
and polymorphic_cast
in constexpr (requires C++20).
-
Core:
-
Fixed
bit_ceil
to
return 1 for input 0 as per specification. (PR#199)
-
Added support for
std::format
to boost::core::string_view
. (#190)
-
Detail:
-
Operators generated by
BOOST_BITMASK
now use underlying type of the enum to implement bitwise operators.
The operators are marked noexcept
and constexpr
, when
possible.
-
The function
bitmask_set
generated by BOOST_BITMASK
is marked deprecated. In a future release, BOOST_BITMASK
will stop producing this function. Users are recommended to use double
negation (!!mask
)
to test if the value is zero. This affects e.g. enums defined in
Boost.Filesystem.
-
DLL:
-
Fixed compiling and exporting on Cygwin. Many thanks to Luohao
Wang for the PR!
-
Fixed building on FreeBSD. Thanks to ash
for the bug report!
-
Added
BOOST_DLL_USE_STD_FS
CMake option to match the preprocessor option. Thanks to Yury
Bura for the PR!
-
Filesystem:
-
Corrected ASAN warnings about comparing pointers to potentially unrelated
objects in
path::append
. (#335)
-
Geometry:
-
Major improvements
-
Improvements
-
PR#1404 Performance improvements in buffer
-
PR#1405 Avoid static variables and functions in
header files
-
Breaking changes
-
Solved issues
-
#1221 Difference with rectilinear multipolygon with
integer coordinates produces invalid polygon with disconnected
interior
-
#1295 Wrong result in intersection (result polygon
is equal to the biggest of the input polygons)
-
#1349 Difference of polygons giving wrong result
-
#1382 Buffer operation creates self-intersection
-
Various fixes of errors and warnings
-
Hash2:
-
Added Blake2 algorithm (
blake2s_256
,
blake2b_512
).
-
Added XXH3 algorithm (
xxh3_128
).
-
Iterator:
-
Fixed
filter_iterator
copy/converting constructor, which could previously produce an invalid
iterator. (#92)
-
Removed usage of
is_trivial
in iterator_facade
as it is deprecated in C++26. (#93)
-
iterator_facade::operator[]
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.
(#61)
-
The proxy returned by
iterator_facade::operator[]
now supports forwarding dereferencing
operators to the referenced value. This allows it[n]->foo()
and (*it[n]).foo()
expressions to compile.
-
The proxy returned by
iterator_facade::operator[]
now implementes perfect forwarding
in its assignment operator.
-
JSON:
-
Revamped documentation.
-
Optionals that are ranges are categorised as optionals.
-
Described class support is enabled for types with bases.
-
Log:
-
Added support for
BOOST_LOG_WITHOUT_ASIO
configuration macro, which can be used to remove the dependency on
Boost.Asio and disable the related functionality.
-
Use locale-independent formatting of the file counter in
text_file_backend
when composing
log file names. This fixes failures in the subsequent parsing of
the file names in file_collector::scan_for_files
.
(PR#246)
-
Added a new
wrap_filter
utility that simplifies injecting user-defined function objects in
filtering expressions. (#195)
-
Math:
-
Add explicit C++14
<type_traits>
and constexpr
requirement
to builds
-
Collected fixes for GPU support on a variety of platforms
-
Fix lower incomplete gamma function with x = 0
-
Fix the external archive error in the jSO algorithm
-
Fix numeric underflow in ibeta
-
Fix inverse ibeta for large values of a and b
-
Fix variadic functions to make them safe with C++26
-
MQTT5:
-
Fixed incorrect parsing of URI paths in the list of brokers (#31).
-
Default Maximum Packet Size now explicitly set in the
CONNECT
packet. (#33).
-
Fixed high CPU usage with large Maximum Packet Size values (#33).
-
Multiprecision:
-
Major update.
-
Adds a new backend type:
cpp_double_fp_backend
-
Fixes a namespace collision with Boost.Serialization
-
MySQL:
-
The
caching_sha2_password
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 client_errc::auth_plugin_requires_ssl
(#313).
-
Fixed a problem causing
client_errc::incomplete_message
to be returned during connection establishment when the target database
does not exist and the caching_sha2_password
is used. The appropriate server-generated diagnostic is now returned.
See issues #468 and #488.
-
The handshake algorithm is now more resilient to protocol violations
(#469).
-
Fixed a build failure with gcc-15 due to a missing include (PR#475).
Thanks hhoffstaette
for the PR.
-
Added benchmarks
against the official drivers.
-
Optimized
metadata
representation to be faster to construct and take less memory (#461).
-
PFR:
-
Rewrite C++20 module following the new recommended Boost practice.
See the docs for more info.
-
Fixed C++26 compilation on modern clang compilers. Thanks to Valery Mironov for the report!
-
Support types that use 'Arrays of Length Zero' compiler extension.
-
Fixed typos. Thanks to Egor
for highlighting the issues!
-
Return
std::array<std::string_view,
0>
type for boost::pfr::names_as_array(empty_struct{})
to allow compilation of for
(std::string_view
name :
boost::pfr::names_as_array(empty_struct{}))
.
Many thanks to sabudilovskiy
for the bug report!
-
process:
-
Added
v1.hpp
to emulate v1 process.hpp
include.
-
Fix to windows path escaping
-
Fixed exit-code issue wehre terminate & async_wait lead to a
loss of the exit-code value.
-
Random:
-
Fix NAN being generated by
beta_distribution
-
Improve the performance of
beta_distribution::operator()
-
TypeIndex:
-
Initial support for C++20 Modules.
See the docs for more info.
-
Unordered:
-
Deprecated
boost::unordered::hash_is_avalanching
is now a using-declaration of boost::hash_is_avalanching
in <boost/container_hash/hash_is_avalanching.hpp>
. Use that header directly instead.
<boost/unordered/hash_traits.hpp>
will be removed in the future.
-
Added
pull(const_iterator)
to open-addressing containers. This operation allows for efficient
removal and retrieval of an element via move construction.
-
Histogram:
-
Update CMake minimum version and Python detection in CMake
-
Improve documentation
-
Add example on how to make an axis which accepts multiple value
types that are not implicitly convertible
-
Show how to use
histogram::fill
with a multidimensional histogram efficiently when data per
dimension is already available as contiguous data
-
Don't use deprecated form of user-defined literal operator
-
Add support for modular build structure with b2
-
Fixed warnings in MSVC about narrowed types
-
Added collector accumulator, which stores all values in a bin
-
Internal changes to tests and classes in detail namespace
Updated Tools
Compilers Tested
Boost's primary test compilers are:
-
Linux:
-
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
-
Clang, C++11: 3.4, 11.0.0, 13.0.0, 14.0.0, 15.0.0
-
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
-
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
-
Clang, C++20: 11.0.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0
-
GCC, C++03: 4.6.3, 11, 12
-
GCC, C++11: 4.7.3, 4.8.5, 11, 12
-
GCC, C++14: 5.4.0, 6.4.0, 7.3.0, 8.0.1, 9.1.0, 11, 12
-
GCC, C++17: 7.3.0, 8.0.1, 9.1.0, 11, 12
-
GCC, C++20: 8.0.1, 9.1.0, 10, 11, 12
-
OS X:
-
Apple Clang, C++03: 11.0.3
-
Apple Clang, C++11: 11.0.3
-
Apple Clang, C++14: 11.0.3
-
Apple Clang, C++17: 11.0.3
-
Apple Clang, C++20: 11.0.3
-
Windows:
-
Visual C++: 10.0, 11.0, 12.0, 14.0, 14.1, 14.2, 14.3
Acknowledgements
Marshall Clow, Glen Fernandes and Ion Gaztañaga managed this release.