Boost
Releases
arrow_drop_down
Newest Release (1.88.0)
Platform File SHA256 Hash
Unix boost_1_88_0.tar.bz2 46d9d....12f7b
boost_1_88_0.tar.gz 36215....f9cb4
Windows boost_1_88_0.7z e84a3....f4726
boost_1_88_0.zip 8ee21....e91b7

Version 1.88.0

April 10th, 2025 20:39 GMT

Documentation

New Libraries

  • Hash2:
    • An extensible hashing framework, from Peter Dimov and Christian Mazakas.
  • MQTT5:
    • client library built on top of Boost.Asio, from Ivica Siladić, Bruno Iljazović, and Korina Šimičević.

Updated Libraries

  • Array:
    • Converted documentation to AsciiDoc (Christian Mazakas).
    • Added noexcept and constexpr as appropriate.
    • Marked obsolete functions as deprecated.
    • Removed obsolete compiler workarounds.
    • Changed array<T, 0>::begin(), cbegin(), end(), cend() to return nullptr, enabling constexpr. This matches the behavior of std::array.
    • Removed local hash_value overload; boost::hash supports array-like types natively.
    • array<T, 0> can now be initialized with = {{}}.
    • Added operator<=>.
    • Added to_array.
  • Asio:
    • Added noexcept qualifiers to various local::basic_endpoint member functions, to make it consistent with ip::basic_endpoint.
    • Fixed the boost::asio::config class's handling of integer values.
    • Fixed a use-after-move error in experimental::ranged_parallel_group.
    • Fixed an incorrect default template argument in the implementation of experimental::promise.
    • Fixed the io_uring implementation so that it does not attempt to re-register internal descriptors with the reactor after a fork, if they were not previously registered.
    • Fixed an uninitialised member in the thread_pool default constructor.
    • Fixed an ambiguous overload issue that occurred when passing a std::span to the boost::asio::buffer function.
    • Removed some spurious macro definitions that were left after the removal of deprecated buffer functionality.
    • Added documentation to clarify the use of file_base::flags when opening a file.
    • Added overview documentation on the available runtime configuration options.
    • Updated the overview documentation to reflect the use of deferred as the default completion token.
    • Updated the async_result documentation to reflect the current type requirements placed on specialisations of the trait.
  • Assert:
    • When BOOST_ASSERT_HANDLER_IS_NORETURN is defined, boost::assertion_failed and boost::assertion_failed_msg are declared as BOOST_NORETURN.
  • Beast:
    • Fixes
      • Fixed out-of-bounds access in iequals function.
    • Improvements
      • Updated SSL examples to verify peer certificate hostname.
      • Refactored CMakeLists.
      • Removed Boost.Scope dependency from examples.
      • Peer pings in WebSocket now count as activity.
    • Documentation
      • Added new examples for Unix domain sockets.
      • Added SSL/TLS Certificate section to documentation.
      • Improved documentation of websocket::stream::async_close.
    • Acknowledgements
      • Morten M. Neergaard
  • Conversion:
    • Use modern C++ in the samples and in the library code.
  • DLL:
    • Added constructor from native_handle_t to the boost::dll::shared_library. Many thanks to Tiago Matos for the PR#82.
    • Dropped multiple dependencies on other Boost libraries including Spirit, SmartPtr, Move, TypeTraits, and Function. DLL became more lightweight for compilation.
    • std::error_code& in API is used instead of the boost::system::error_code&. This is not a breaking change as boost::system::error_code is convertible to std::error_code&.
    • boost::dll:import_* functions now return std::shared_ptr rather than boost::shared_ptr. Define BOOST_DLL_USE_BOOST_SHARED_PTR to restore the old behavior, however note that the macro will be removed in one of the upcomming Boost releases.
    • Use modern C++ in the samples and in the library code.
    • boost::dll::library_info now always throws in case of a broken binary. Updated the docs and added some tests.
    • Documented in FAQ why RTLD_NODELETE is missing and why there is no .release() method. Provided suggestions on possible workarounds.
    • Updated the information on building and using the library. CMake targets now link with -ldl if it is required by the platform.
    • Fixed detail::path_from_handle implementation for long paths on Windows OS.
    • Highlighted in the docs that boost/dll/smart_* parts of the library are experimental and incomplete.
    • Fixed multiple mangling issues in boost/dll/smart_* parts of the library.
  • Geometry:
    • Improvements
      • PR#1370 Relax half period check in spheroidal normalization
      • PR#1368 Pass umbrella strategies in rtree spatial predicates
      • PR#1367 Improvements in traversal
      • PR#1361 Test set operations on random grids with integer coordinates
      • Several test cases has been added
      • Use using instead of typedef in part of the code
    • Solved issues
      • PR#1364 Fix several strategies (add getters, fix compilation error and warning)
      • #629 Avoid warnings for coordinate conversions and unused parameters
      • Various fixes of errors and warnings
  • Graph:
    • Bug fixes
      • Replace implementation of maximum_weighted_matching, resolves multiple issues.
      • Ensure named_graph is initialized before use.
      • Replace custom geometry code in is_straight_line_drawing with Boost.Geometry, fixes incorrect results for very small angles.
      • Fix incorrect callbacks to finish_edge in undirected_dfs.
    • Performance improvements
      • adjacency_list: Remove unnecessary calls to resize/reserve from within add_vertex for vector-based storage! A quick benchmark indicates a 10% improvement to graph construction time.
      • lengauer_tarjan_dominator_tree: Replace std::deque with std::vector, obtaining a ~40% improvement for large graphs.
    • General Improvements
      • Replace the use of several Boost utilities with C++14 language features.
      • Modernize examples with C++14 language features.
      • Various fixes to documentation and build system.
      • vertex_by_property no longer requires a mutable graph.
      • Fix compilation issue with cycle_canceling and Clang 19.
  • Iterator:
    • Dropped support for C++03 and ancient compilers, updated code base to use C++11 and MP11, reduced usage of MPL. (PR#82)
    • Added min_category trait, which is a variadic equivalent of minimum_category that doesn't depend on MPL. minimum_category is deprecated and will be removed in a future release.
    • Extracted enable_if_convertible trait to a separate header enable_if_convertible.hpp. The trait was previously defined in iterator_adaptor.hpp, and the header still provides enable_if_convertible when included. This dependency is provided for backward compatibility and will be removed in a future release. Users are advised to add includes of enable_if_convertible.hpp, as needed.
    • Added *_t variants of various iterator traits that produce types.
    • filter_iterator and transform_iterator now use empty base optimization (EBO) to reduce size of the iterator when the adopted function object is stateless.
    • zip_iterator now natively supports boost::tuple, std::tuple and std::pair for iterator tuples and doesn't need including Fusion support headers.
    • function_output_iterator 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.
    • generator_iterator.hpp and shared_container_iterator.hpp headers were moved under the boost/iterator directory. The previous headers in boost are still retained for backward compatibility, but will be removed in a future release. Users are advised to update their includes.
    • shared_container_iterator now uses std::shared_ptr to reference the container internally. The support for boost::shared_ptr is still retained, but it will incur performance overhead on the iterator construction, as boost::shared_ptr is now wrapped in a std::shared_ptr internally. It is recommended to use std::shared_ptr to reference the container.
  • Locale:
    • Raised required ICU version to at least 4.8.1
    • Dropped support for ICU 50.1
    • Fixed parsing of integers with input strings in floating point format (PR#241)
    • Support parsing and formatting of uint64_t values with the ICU backend (PR#246)
    • Support char8_t on more platforms
  • Lockfree:
    • Added new spsc_value, a lockfree single-producer single-consumer value based on a triple-buffer
  • Log:
    • Disabled usage of std::codecvt<char16_t> and std::codecvt<char32_t> locale facets in C++20 and later modes as they were deprecated in C++20. This means character code conversions to/from char16_t and char32_t is no longer available in C++20 and later.
    • Fixed building issues when using CMake and MinGW-w64. (PR#241)
    • Fixed incorrect file counter used by text_file_backend 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. (#245)
  • Mp11:
    • Fixed mp_from_sequence for non-integral values (accidentally broken in 1.83.0 due to offset support)
  • MySQL:
    • connection_pool 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 (#395).
    • Added any_connection::connection_id. This function retrieves the connection's ID, which can subsequently be used in KILL SQL statements to cancel queries. This function is equivalent to mysql_thread_id in the official C API (#408)
    • Attempting to start an async operation on a connection or any_connection while another operation is in-progress no longer triggers undefined behavior. It now fails with client_errc::operation_in_progress (#405).
    • Attempting to start an operation while a connection or any_connection are engaged in a multi-function operation no longer yields potentially dangerous packet mismatches. It instead fails with client_errc::engaged_in_multi_function (#448).
    • Improved diagnostics when attempting to use a connection without a established session. Operations now fail with client_errc::not_connected (#450).
    • Fixed a race condition in connection and any_connection 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 (#199).
    • field's constructor and assignment from std::string_view 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.
    • Added an HTTP server example that uses C++20 coroutines.
    • Added a doc page on interfacing sync and async code. This replaces the synchronous connection pool snippet, which contained a race condition.
    • Improved some of the other examples and doc pages.
  • Nowide:
    • Make getenv thread-safe (PR#191)
  • PolyCollection:
    • Added boost::variant_collection, a closed polymorphic collection similar in behavior to std::vector<std::variant<...>>.
  • SmartPtr:
    • Fix operator<< for wide streams (accidentally broken in 1.87.0)
  • Stacktrace:
    • Use GetModuleNames to determine the full module path for MSVC implementation. Many thanks to Daniel Krügler for the PR#198.
    • Print relative addresses to allow their decoding later without knowing the base address. The logic could be disabled by defining BOOST_STACKTRACE_DISABLE_OFFSET_ADDR_BASE. Many thanks to Maciej Czarnecki for the PR#200.
    • 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 Uilian Ries for initial implementation of the feature in PR#202.
    • Fixed stacktrace_from_exception builds with MinGW. Thanks to crhilton for the fix.
  • TypeIndex:
    • Fixed an UB that was introduced in Boost.TypeIndex 1.84 and prevented the library from building on clang-20.
  • Unordered:
    • Migrated the documentation to a multipage format using Antora.
  • Variant2:
    • Use the smallest appropriate unsigned type for the index.

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.

Dependencies

There were 4 dependencies added (in 3 libraries) and 15 dependencies removed (in 7 libraries) this release.

Contributors

Peter Dimov
Peter Dimov
Contributor
Alexander Grund
Alexander Grund
Contributor
Rene Rivera
Rene Rivera
Contributor
Matt Borland
Matt Borland
Contributor
Andrey Semashev
Andrey Semashev
Contributor
Anarthal (Rubén Pérez)
Anarthal (Rubén Pérez)
Contributor
Antony Polukhin
Antony Polukhin
Contributor
James E. King III
James E. King III
Contributor
klemens-morgenstern
klemens-morgenstern
Contributor
Mohammad Nejati
Mohammad Nejati
Contributor
Jeremy W. Murphy
Jeremy W. Murphy
Contributor
Barend Gehrels
Barend Gehrels
Contributor
JOAQUIN M. LOPEZ MUÑOZ
JOAQUIN M. LOPEZ MUÑOZ
Contributor
Christopher Kohlhoff
Christopher Kohlhoff
Contributor
Vissarion Fisikopoulos
Vissarion Fisikopoulos
Contributor
Christian Mazakas
Christian Mazakas
Contributor
Joris van Rantwijk
Contributor
Glen Fernandes
Glen Fernandes
Contributor
Alan de Freitas
Alan de Freitas
Contributor
Tim Blechmann
Tim Blechmann
Contributor
Zach Laine
Zach Laine
Contributor
Adam Wulkiewicz
Adam Wulkiewicz
Contributor
Oliver Kowalke
Oliver Kowalke
Contributor
Christopher Kormanyos
Christopher Kormanyos
Contributor
Marcelo Zimbres
Marcelo Zimbres
Contributor
Dmitry
Dmitry
Contributor
Niall Douglas
Niall Douglas
Contributor
Dirk Stolle
Dirk Stolle
Contributor
John Maddock
John Maddock
Contributor
Young Geun Kim
Contributor
Joel de Guzman
Joel de Guzman
Contributor
Emil Dotchevski
Emil Dotchevski
Contributor
warren
warren
Contributor
Ion Gaztañaga
Ion Gaztañaga
Contributor
Neil Groves
Neil Groves
Contributor
Jonas Greitemann
Contributor
Alain Miniussi
Alain Miniussi
Contributor
sdarwin
sdarwin
Contributor
Qijia Liu
Qijia Liu
Contributor
Murray Cumming
Contributor
Daniel Yang
Contributor
Nana Sakisaka
Nana Sakisaka
Contributor
Jim King
Contributor
Martin Vejbora
Contributor
Anthony Van Herrewege
Contributor
Vadim Zavalishin
Contributor
Stefan Seefeld
Stefan Seefeld
Contributor
مهدي شينون (Mehdi Chinoune)
Contributor
Harish Subramanian
Contributor
Nigel Stewart
Nigel Stewart
Contributor
Tinko Sebastian Bartels
Contributor
SimonMaracine
Contributor
Aditya Pillai
Contributor
Amber Ehrlich
Contributor
hermann@stamm-wilbrandt.de
Contributor
spreadsort
spreadsort
Contributor
Georgy Guminov
Contributor
Pavel P
Contributor
Francisco Tapia
Francisco Tapia
Contributor
Georg Gast
Georg Gast
Contributor
Georgiy Guminov
Contributor
Bruno Martinez
Bruno Martinez
Contributor
stanislav.mikov
Contributor
CBBBrother
Contributor
ibis-hdl
Contributor
Klemens
Klemens
Contributor
js-nano
Contributor
Konstantin Khlebnikov
Contributor
Danil Sidoruk
Danil Sidoruk
Contributor
Jan Niklas Hasse
Jan Niklas Hasse
Contributor
Nat Goodspeed
Nat Goodspeed
Contributor
Edward Nolan
Edward Nolan
Contributor
Phillip Keldenich
Contributor
T.Yamada
Contributor
necessarily-equal
Contributor
Vinícius dos Santos Oliveira
Contributor
twomice
Contributor
Frank Mori Hess
Frank Mori Hess
Contributor
Thomas Barbier
Thomas Barbier
Contributor
BrianWeed
BrianWeed
Contributor
Daniel Hannon
Contributor
Daniel Krügler
Daniel Krügler
Contributor
aihao1007
Contributor
Youssef LAKHAL
Contributor
Jenkins nedprod CI
Contributor
Sergey Fedorov
Contributor
Ivan Komissarov
Contributor
Marshall Clow
Marshall Clow
Contributor
Ivan A. Melnikov
Ivan A. Melnikov
Contributor
tomy2105
tomy2105
Contributor
cvspvr
Contributor
Pavel Samolysov
Contributor
Alejandro Baranek
Alejandro Baranek
Contributor
Arvid Norlander
Contributor
Richard Thomson
Richard Thomson
Contributor
Ryan Zoeller
Contributor
Laurent Rineau
Laurent Rineau
Contributor
Unix&Me
Contributor
Jens Diewald
Contributor
Lars Kanis
Contributor
braden
braden
Contributor
Morten Minde Neergaard
Contributor
Tuukka Norri
Tuukka Norri
Contributor
Stephan Bergmann
Contributor
Daniil
Contributor
Marco Ribeiro
Contributor
Roy Bellingan
Contributor
Julien DELACROIX
Contributor
Peter Kokot
Contributor
Uilian Ries
Contributor
Romain Geissler
Romain Geissler
Contributor
Samuel Debione
Samuel Debione
Contributor
r.nowak
Contributor
Anthony Eden
Anthony Eden
Contributor
Maciej Czarnecki
Contributor
Yuriy Chernyshov
Yuriy Chernyshov
Contributor