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()
-
System:
-
The stub compiled library has been removed; System has been header-only since release 1.69.
-
This may affect
CMakeLists.txt files containing find_package(Boost COMPONENTS system ...).
The easiest fix is to just remove system from the list of components as it's no longer required.
If compatibility with Boost releases earlier than 1.69 is to be preserved, one can use
find_package(Boost COMPONENTS ... OPTIONAL_COMPONENTS system).
-
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.