Version 1.89.0
Version 1.89.0
August 14th, 2025 02:16 GMT
Platform | File | SHA256 Hash |
---|---|---|
unix | boost_1_89_0.tar.bz2 | 85a33fa22621b4f314f8e85e1a5e2a9363d22e4f4992925d4bb3bc631b5a0c7a |
boost_1_89_0.tar.gz | 9de758db755e8330a01d995b0a24d09798048400ac25c03fc5ea9be364b13c93 | |
windows | boost_1_89_0.7z | d8b0c1d593d68fe359616aa2fae4b3e258ca1f90ed57eb46c5494c29cdd1d49d |
boost_1_89_0.zip | 77bee48e32cabab96a3fd2589ec3ab9a17798d330220fdd8bde6ff5611b4ccde |
New Libraries
-
Bloom: 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
andthread_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
andtime_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 theio_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 toboost::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
orBOOST_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 inthread_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
inasync_base
. -
Added missing
cstdint
header todetail/cpu_info.hpp
. -
Fixed
std::is_trivial
deprecation warnings. -
handshake_timeout
now applies to closing handshakes during reads.
-
-
Improvements
-
Replaced
detail/work_guard.hpp
withnet::executor_work_guard
. -
Fixed portability issues for building tests in MinGW.
-
-
Documentation
-
Removed moved sections from documentation.
-
Removed superfluous log messages from tests.
-
-
Acknowledgements
-
yliu1021
-
-
-
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
andpolymorphic_cast
in constexpr (requires C++20).
-
-
Detail:
-
Operators generated by
BOOST_BITMASK
now use underlying type of the enum to implement bitwise operators. The operators are markednoexcept
andconstexpr
, when possible. -
The function
bitmask_set
generated byBOOST_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:
-
Breaking changes
-
PR#1401 Remove deprecated headers
-
-
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) -
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 allowsit[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 infile_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>
andconstexpr
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
-
-
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 withclient_errc::auth_plugin_requires_ssl
(#313). -
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.
-
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 forboost::pfr::names_as_array(empty_struct{})
to allow compilation offor (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 v1process.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 ofboost::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
-
Build:
-
Includes release of B2 version 5.3.2.
-
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.