Prior Release
(1.88.0)
This is an older version of Boost and was released in 2025. The current version is 1.90.0.
April 3, 2025
Dependencies
There were
4 dependencies added
(in 3 libraries)
and
15 dependencies removed
(in 7 libraries)
this release.
| Platform | File | SHA256 Hash | |
|---|---|---|---|
| Unix | boost_1_88_0.tar.bz2 | 46d9d2c06637b219270877c9e16155cbd015b6dc84349af064c088e9b5b12f7b 46d9d2c066....e9b5b12f7b 46d9d....12f7b | |
| boost_1_88_0.tar.gz | 3621533e820dcab1e8012afd583c0c73cf0f77694952b81352bf38c1488f9cb4 3621533e82....c1488f9cb4 36215....f9cb4 | ||
| Windows | boost_1_88_0.7z | e84a33716a31c1c8cb00783a411630d41c008e9364002dc0fe55aea4f54f4726 e84a33716a....a4f54f4726 e84a3....f4726 | |
| boost_1_88_0.zip | 8ee21476f1aca1978339f0f4a218b9b8a6746eec83070f32630f97b09c7e91b7 8ee21476f1....b09c7e91b7 8ee21....e91b7 | ||
| Windows (Binary) | boost_1_88_0-bin-msvc-all-32-64.7z | 71ea5a6f6ca98e01aadcbec21fcf6481239ddfbf6652238448e53110f9f0687a 71ea5a6f6c....10f9f0687a 71ea5....0687a | |
| boost_1_88_0-msvc-14.1-32.exe | 4bc477c0c36464f4c10cffc0b6271a6c586caa096cc2290794f8c3e7ab3c6c06 4bc477c0c3....e7ab3c6c06 4bc47....c6c06 | ||
| boost_1_88_0-msvc-14.1-64.exe | ae6ade62886fd9a6930c95f116a33e940224f0cb7f791b01afd7dd1ceca360fe ae6ade6288....1ceca360fe ae6ad....360fe | ||
| boost_1_88_0-msvc-14.2-32.exe | 753c7a5227fe4b67d69767288a39291bd8a1aae3d2b42517b7bf09d2c1ca1653 753c7a5227....d2c1ca1653 753c7....a1653 | ||
| boost_1_88_0-msvc-14.2-64.exe | 9b15605f6b9b14024b87626d5e84aab009d26483baef665727f44bc162da19ec 9b15605f6b....c162da19ec 9b156....a19ec | ||
| boost_1_88_0-msvc-14.3-32.exe | 7d00418e8092c2ee6527c79e9af6968d959b31191a40d31be58a940e149eb3f9 7d00418e80....0e149eb3f9 7d004....eb3f9 | ||
| boost_1_88_0-msvc-14.3-64.exe | bff575f21343f602c7b6c3ad3883a28053a1a50cde2153102d30479f85911738 bff575f213....9f85911738 bff57....11738 | ||
Version 1.88.0
April 10th, 2025 20:39 GMT
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
noexceptandconstexpras appropriate. - Marked obsolete functions as deprecated.
- Removed obsolete compiler workarounds.
-
Changed
array<T, 0>::begin(),cbegin(),end(),cend()to returnnullptr, enablingconstexpr. This matches the behavior ofstd::array. -
Removed local
hash_valueoverload;boost::hashsupports array-like types natively. -
array<T, 0>can now be initialized with= {{}}. -
Added
operator<=>. -
Added
to_array.
-
Asio:
-
Added
noexceptqualifiers to variouslocal::basic_endpointmember functions, to make it consistent withip::basic_endpoint. -
Fixed the
boost::asio::configclass'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_uringimplementation 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_pooldefault constructor. -
Fixed an ambiguous overload issue that occurred when passing a
std::spanto theboost::asio::bufferfunction. - Removed some spurious macro definitions that were left after the removal of deprecated buffer functionality.
-
Added documentation to clarify the use of
file_base::flagswhen opening a file. - Added overview documentation on the available runtime configuration options.
-
Updated the overview documentation to reflect the use of
deferredas the default completion token. -
Updated the
async_resultdocumentation to reflect the current type requirements placed on specialisations of the trait.
-
Added
-
Assert:
-
When
BOOST_ASSERT_HANDLER_IS_NORETURNis defined,boost::assertion_failedandboost::assertion_failed_msgare declared asBOOST_NORETURN.
-
When
-
Beast:
-
Fixes
-
Fixed out-of-bounds access in
iequalsfunction.
-
Fixed out-of-bounds access in
-
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
-
Fixes
-
Conversion:
- Use modern C++ in the samples and in the library code.
-
DLL:
-
Added constructor from
native_handle_tto theboost::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 theboost::system::error_code&. This is not a breaking change asboost::system::error_codeis convertible tostd::error_code&. -
boost::dll:import_*functions now returnstd::shared_ptrrather thanboost::shared_ptr. DefineBOOST_DLL_USE_BOOST_SHARED_PTRto 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_infonow always throws in case of a broken binary. Updated the docs and added some tests. -
Documented in FAQ why
RTLD_NODELETEis 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
-ldlif it is required by the platform. -
Fixed
detail::path_from_handleimplementation 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.
-
Added constructor from
-
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
-
Improvements
-
Graph:
-
Bug fixes
-
Replace implementation of
maximum_weighted_matching, resolves multiple issues. -
Ensure
named_graphis initialized before use. -
Replace custom geometry code in
is_straight_line_drawingwith Boost.Geometry, fixes incorrect results for very small angles. -
Fix incorrect callbacks to
finish_edgeinundirected_dfs.
-
Replace implementation of
-
Performance improvements
-
adjacency_list: Remove unnecessary calls toresize/reservefrom withinadd_vertexforvector-based storage! A quick benchmark indicates a 10% improvement to graph construction time. -
lengauer_tarjan_dominator_tree: Replacestd::dequewithstd::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_propertyno longer requires a mutable graph. -
Fix compilation issue with
cycle_cancelingand Clang 19.
-
Bug fixes
-
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_categorytrait, which is a variadic equivalent ofminimum_categorythat doesn't depend on MPL.minimum_categoryis deprecated and will be removed in a future release. -
Extracted
enable_if_convertibletrait to a separate headerenable_if_convertible.hpp. The trait was previously defined initerator_adaptor.hpp, and the header still providesenable_if_convertiblewhen included. This dependency is provided for backward compatibility and will be removed in a future release. Users are advised to add includes ofenable_if_convertible.hpp, as needed. -
Added
*_tvariants of various iterator traits that produce types. -
filter_iteratorandtransform_iteratornow use empty base optimization (EBO) to reduce size of the iterator when the adopted function object is stateless. -
zip_iteratornow natively supportsboost::tuple,std::tupleandstd::pairfor iterator tuples and doesn't need including Fusion support headers. -
function_output_iteratorno 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.hppandshared_container_iterator.hppheaders were moved under theboost/iteratordirectory. The previous headers inboostare still retained for backward compatibility, but will be removed in a future release. Users are advised to update their includes. -
shared_container_iteratornow usesstd::shared_ptrto reference the container internally. The support forboost::shared_ptris still retained, but it will incur performance overhead on the iterator construction, asboost::shared_ptris now wrapped in astd::shared_ptrinternally. It is recommended to usestd::shared_ptrto reference the container.
- Locale:
-
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>andstd::codecvt<char32_t>locale facets in C++20 and later modes as they were deprecated in C++20. This means character code conversions to/fromchar16_tandchar32_tis 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_backendwhen 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)
-
Disabled usage of
-
Mp11:
-
Fixed
mp_from_sequencefor non-integral values (accidentally broken in 1.83.0 due to offset support)
-
Fixed
-
MySQL:
-
connection_poolnow 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 inKILLSQL statements to cancel queries. This function is equivalent tomysql_thread_idin the official C API (#408) -
Attempting to start an async operation on a
connectionorany_connectionwhile another operation is in-progress no longer triggers undefined behavior. It now fails withclient_errc::operation_in_progress(#405). -
Attempting to start an operation while a
connectionorany_connectionare engaged in a multi-function operation no longer yields potentially dangerous packet mismatches. It instead fails withclient_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
connectionandany_connectionregarding 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 fromstd::string_vieware 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
getenvthread-safe (PR#191)
-
Make
-
PolyCollection:
-
Added
boost::variant_collection, a closed polymorphic collection similar in behavior tostd::vector<std::variant<...>>.
-
Added
-
SmartPtr:
-
Fix
operator<<for wide streams (accidentally broken in 1.87.0)
-
Fix
-
Stacktrace:
-
Use
GetModuleNamesto 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_exceptionbuilds with MinGW. Thanks to crhilton for the fix.
-
Use
-
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.
Contributors
Joris van Rantwijk
Contributor
Young Geun Kim
Contributor
Jonas Greitemann
Contributor
Murray Cumming
Contributor
Martin Vejbora
Contributor
Vadim Zavalishin
Contributor
Jim King
Contributor
Anthony Van Herrewege
Contributor
Daniel Yang
Contributor
Harish Subramanian
Contributor
Pavel P
Contributor
Georgy Guminov
Contributor
SimonMaracine
Contributor
ู
ูุฏู ุดูููู (Mehdi Chinoune)
Contributor
Tinko Sebastian Bartels
Contributor
Amber Ehrlich
Contributor
hermann@stamm-wilbrandt.de
Contributor
Aditya Pillai
Contributor
CBBBrother
Contributor
Maciej Czarnecki
Contributor
Ryan Zoeller
Contributor
Youssef LAKHAL
Contributor
necessarily-equal
Contributor
Arvid Norlander
Contributor
Jens Diewald
Contributor
Pavel Samolysov
Contributor
twomice
Contributor
Julien DELACROIX
Contributor
Georgiy Guminov
Contributor
stanislav.mikov
Contributor
Uilian Ries
Contributor
ibis-hdl
Contributor
Ivan Komissarov
Contributor
Phillip Keldenich
Contributor
Marco Ribeiro
Contributor
Peter Kokot
Contributor
Daniel Hannon
Contributor
Lars Kanis
Contributor
T.Yamada
Contributor
cvspvr
Contributor
Daniil
Contributor
Unix&Me
Contributor
r.nowak
Contributor
Stephan Bergmann
Contributor
Konstantin Khlebnikov
Contributor
Roy Bellingan
Contributor
Sergey Fedorov
Contributor
Morten Minde Neergaard
Contributor
js-nano
Contributor
Jenkins nedprod CI
Contributor
Vinรญcius dos Santos Oliveira
Contributor
aihao1007
Contributor
