Boost
Releases
arrow_drop_down
Newest Release (1.89.0)
August 6, 2025
Dependencies
There were 1372 dependencies removed (in 142 libraries) this release.
Platform File SHA256 Hash
Unix boost_1_89_0.tar.bz2 85a33....a0c7a
boost_1_89_0.tar.gz 9de75....13c93
Windows boost_1_89_0.7z d8b0c....1d49d
boost_1_89_0.zip 77bee....4ccde
Windows (Binary) boost_1_89_0-bin-msvc-all-32-64.7z 3af5e....943c7
boost_1_89_0-msvc-14.1-32.exe c56f0....6c6d7
boost_1_89_0-msvc-14.1-64.exe a15a6....fbe4e
boost_1_89_0-msvc-14.2-32.exe f4fb1....29156
boost_1_89_0-msvc-14.2-64.exe 1c6bb....26a42
boost_1_89_0-msvc-14.3-32.exe e5a3d....dc264
boost_1_89_0-msvc-14.3-64.exe 36dd9....a72a8

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
      • 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 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
      • PR#1369 Rewrite of traversal
      • PR#1402 Add geometry polyhedral surface
    • Improvements
      • PR#1404 Performance improvements in buffer
      • PR#1405 Avoid static variables and functions in header files
    • 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)
    • 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.