| Platform | File | SHA256 Hash | |
|---|---|---|---|
| Unix | boost_1_92_0.tar.bz2 | 5c1d40cb8e19adbf740a4ec2da35b3e58f3f5804b1dce44deb53df72193cbc6c 5c1d40cb8e....72193cbc6c 5c1d4....cbc6c | |
| boost_1_92_0.tar.gz | c4a3b310ddd2472416e091067166b0713be97c63f38c212c484ada022fd296ce c4a3b310dd....022fd296ce c4a3b....296ce | ||
| Windows | boost_1_92_0.7z | 57f2ded2390068a44d88748425067e01a8c285257a4d9611d04ade9d8ec68615 57f2ded239....9d8ec68615 57f2d....68615 | |
| boost_1_92_0.zip | c46baee75ed4b558cf6553630d0615a147ed582812917b57e6f0839d1954549f c46baee75e....9d1954549f c46ba....4549f | ||
| Windows (Binary) | boost_1_92_0-bin-msvc-all-32-64.7z | ec51e552952a065c3069d1dc5617646ca2463df239616bba385aed159220929e ec51e55295....159220929e ec51e....0929e | |
| boost_1_92_0-msvc-14.1-32.exe | ff785dd71a9a1d7108a333b0ec28350ea0ddde15cb3522d19d4507a9414626c6 ff785dd71a....a9414626c6 ff785....626c6 | ||
| boost_1_92_0-msvc-14.1-64.exe | 7860a712a28732bdcea15d7e503cadea65126c18836ce6654ffe49bac85b16c7 7860a712a2....bac85b16c7 7860a....b16c7 | ||
| boost_1_92_0-msvc-14.2-32.exe | 97d8355258ff36cce8b8bab9626f1ffae452c06e8d4be8f5ced8c6c53bb37e1a 97d8355258....c53bb37e1a 97d83....37e1a | ||
| boost_1_92_0-msvc-14.2-64.exe | 1409a4e6c2ee885b7db6eb1f9280d89c57ea002875d454c116c8a8d1156dc1a8 1409a4e6c2....d1156dc1a8 1409a....dc1a8 | ||
| boost_1_92_0-msvc-14.3-32.exe | f15c271d39cdb09ef41e5414425c7d991f3e9fdf88f26bb01e735c6c351cf9cd f15c271d39....6c351cf9cd f15c2....cf9cd | ||
| boost_1_92_0-msvc-14.3-64.exe | 90db7bdf26ad34a670fcf5b43c95c5253252098de01402cd758df8e801c383b3 90db7bdf26....e801c383b3 90db7....383b3 | ||
| boost_1_92_0-msvc-14.5-32.exe | d9e55746d61f1ccf08ea1d753dd5159bac17710eefd709d96131d7c87a6a9219 d9e55746d6....c87a6a9219 d9e55....a9219 | ||
| boost_1_92_0-msvc-14.5-64.exe | 07e494e8a0da9eb6a055174a3eb68892365e6e102df0283a6c6605f731a9b6f7 07e494e8a0....f731a9b6f7 07e49....9b6f7 | ||
Version 1.92.0
General Notes
-
In previous releases, Windows
.dllfiles were installed byb2 installinto the library directory (<PREFIX>/libby default), except on Cygwin, where they were installed into the binary directory (<PREFIX>/binby default.)This has been changed to consistently install
.dllfiles into the binary directory, which is the behavior most users want.For compatibility, a new command line option,
--dlldir, has been added tob2 installso that the directory can be overridden, and if needed, pointed to<PREFIX>/lib. -
The CMake configuration file installed by
b2 installhas been updated to support requesting header-only libraries asfind_packagecomponents.That is, something like
find_package(Boost REQUIRED COMPONENTS mp11)works now (and defines the targetBoost::mp11), whereas previously it did not (only compiled libraries were considered components).This matches the behavior of the CMake configuration files installed by building Boost with CMake, making it possible to consume Boost in the same way regardless of how it was built and installed.
As part of this regularization, the little used feature of requesting
COMPONENTS ALLhas been removed. It’s not supported by the CMake Boost build, and was never supported byFindBoost.
New Libraries
Updated Libraries
-
-
Added a
"scheduler"/"assume_continuation"configuration parameter, which allows posted handlers to be added to a fast thread-local queue. -
Added
"reactor"configuration parameters for tuning the io_uring backend:io_uring_ring_count,io_uring_ring_size,io_uring_submit_batch_sizeandio_uring_iowait. -
Added the ability to configure
ssl::stream<>'s internal buffer sizes. -
Added a forward declarations header
boost/asio/fwd.hppto safely forward declare Asio class names when using the versioned namespace. -
Added an example for using
cancel_afterwith coroutines. -
Added support for
co_composedunderBOOST_ASIO_NO_EXCEPTIONS. -
Added a missing optimisation for
concurrency_hint == 1inio_context::poll_one(). -
Changed all exception classes to use inline implementations, to fix an undefined symbol error on some platforms when using separate compilation.
-
Changed constants and CPOs to use external linkage for C++17 and later.
-
Changed "slim" mutexes to use futexes on Linux.
-
Changed the reactor to use
MSG_DONTWAIT, if supported, rather than setting the socket to be non-blocking. -
Fixed two
co_composedcrashes on MSVC, one when using multiple completion signatures, and one due to insufficient alignment. -
Fixed the return type on one
cancel_afteroverload. -
Fixed an integer truncation issue in
basic_streambuf::commit/consume. -
Fixed a buffer invalidation error triggered when SSL streams are moved, and clarified the buffer invalidation semantics.
-
Fixed a compilation error, seen on some compilers, that occurs when using
post,dispatchordeferwith a completion handler. -
Fixed
parallel_grouphandling of non-terminal cancellation requests. -
Fixed some thread sanitizer warnings due to atomic thread fences, and added extra thread sanitizer instrumentation.
-
Fixed a signed/unsigned warning in
basic_resolver_results, and suppressed some case fall-through warnings. -
Fixed
experimental::channelcompilation with older versions of MSVC. -
Fixed the
multicast::enable_loopbacksocket option size on NetBSD and OpenBSD. -
Fixed standard library coroutine detection when using
clang-cl. -
Improved cross-referencing within the documentation.
-
Consult the Revision History for further details.
-
-
-
Fix
BOOST_VERIFYin the rare case of bothBOOST_ENABLE_ASSERT_HANDLERandBOOST_ENABLE_ASSERT_DEBUG_HANDLERbeing defined.
-
-
-
websocket::streamaccepts close code 1014 (bad gateway). -
http::basic_parserignores connection and framing fields in trailers. -
http::parserdrops framing and connection-control fields carried in trailers. -
http::basic_parserrejects chunked transfer-encoding in HTTP/1.0 requests. -
http::basic_parserrejectsContent-LengthwithTransfer-Encodingregardless of field order. -
http::basic_parserrejects requests with aTransfer-Encodingthat does not end in chunked. -
http::basic_parservalidates quoted-strings in chunk extensions. -
http::message::prepare_payloadrejects 1xx responses with a body. -
websocket::streamrejects 64-bit frame lengths with the high bit set. -
File operations clear the
error_codeon success. -
The
server-flex-awaitableexample dispatches cancellation to the task’s strand. -
Removed dependency on Boost.Functional.
-
-
-
Added CUDA support allowing both
to_charsandfrom_charsfor integers to be used in CUDA kernels -
Fixed support for Clang on PPC64LE as it keeps
long doubleand__float128as distinct types which was previously considered invalid viastatic_assert
-
-
-
Hashing a valueless
std::variantinstance no longer throws.
-
-
-
Added new
boost::container::hubcontainer designed by JoaquÃn M. López Muñoz.See the Hub Container chapter in the Container documentation for more information.
-
Fixed bugs/issues:
-
Added
unchecked_emplace_backandunchecked_push_backtoboost::container::vector,boost::container::static_vector, andboost::container::small_vector. -
Implemented C++23 P1518 change: modified allocator-extended constructors for all containers so that the deduction guides for containers are not overconstrained.
-
-
-
C++20 Module
boost.conversionwas implemented. Many thanks to Fedor Osetrov for the PR (PR#43)!
-
-
-
Added initial CUDA support allowing
decimal32_t,decimal64_t, anddecimal128_tto be used in CUDA kernels -
Added
decomposefunction which returns the significand, exponent, and sign without normalization (i.e. in their current cohort)
-
-
DLL:
-
Fixed
smart_libraryconstructors fromshared_library(PR#114). Many thanks to R. Savchenko for the PR! -
C++20 Module
boost.dllwas implemented. Many thanks to Fedor Osetrov for the PRs (PR#110, PR#111, PR#112)!
-
-
-
Marked templated versions of
initial_pathas deprecated and removed from v4. Use the non-templated versions instead. -
Use
readdirinstead ofreaddir_ron more POSIX platforms, specifically on Mac OS and other Apple operating systems, FreeBSD, OpenBSD, DragonFly BSD, NetBSD, QNX 6.0 and later, Solaris 10 and later and Illumos-based systems. Solaris users with gcc are recommended to defineSunOS_5_xmacros according to their target Solaris version (e.g.SunOS_5_11) when building Boost. (#349) -
Support for platforms with non-thread-safe
readdiris deprecated and will be removed in a future release. Although not required until POSIX.1-2024, on modern systemsreaddiris thread-safe when used with separateDIRobjects in different threads and on some systemsreaddir_ris marked as deprecated. POSIX.1-2024 has been updated accordingly and also markedreaddir_ras obsolescent, with a planned removal in a future version of the specification. -
On POSIX platforms, handle
EINTRerror code returned fromopendir,readdirand equivalents. Although not documented, this error code, reportedly, may be returned on Apple operating systems and some BSD systems.
-
-
-
Improvements (
geometry): -
Solved issues (
geometry):
-
-
-
Added a Louvain community detection algorithm for modularity-based clustering (PR#453).
-
Removed the dependency on Boost.StaticAssert (PR#450).
-
Fixed bugs and correctness issues:
-
Modernized types and hygiene:
-
Added missing
constqualifiers and replacedtypedefwithusingin several headers (PR#508). -
Removed narrowing conversions in
random.hpp,bandwidth.hpp, andking_ordering.hpp(PR#497, PR#498, PR#499). -
Replaced deprecated
std::random_shufflewithstd::shuffle(PR#513). -
Silenced
-Wunused-*warnings and removed dead test variables (PR#510, PR#511, PR#512). -
Cleared GCC
-Wsign-comparewarnings (PR#514).
-
-
Documentation: updated the entire documentation and migrated to a new visual design (PR#469, PR#491, PR#509, PR#517, PR#519).
-
-
-
Added built-in support for
std::optional -
Added built-in support for
std::variant,std::monostate
-
-
Heap:
-
This release is the last to support C++14. Future releases will require C++17.
-
-
ICL:
-
Starting with version 22, libc++ has changed some lookup algorithms of its associative containers in a way that breaks ICL’s assumptions and behavior. The library internals have been refactored to solve the problem and make ICL robust against future decisions of the C++ committee regarding non-heterogeneous lookup for associative containers (PR#54, LWG4752).
-
Fixed C++20-related problems with
std::iter_value_t<element_iterator>and GCC 10-12’s handling of rewritten relational operators (PR#54). -
Fixed a GCC 10-11 codegen bug (PR#54).
-
-
-
Added
is_*_iterator_vvariable templates in C++14 and later, equivalent to the corresponding iterator traits. -
The
distanceandadvancealgorithms are now constrained by requiringis_iteratorto returntruefor the iterator arguments. (PR#96)
-
-
-
C++20 Module
boost.lexical_castwas implemented. Many thanks to Fedor Osetrov for the PR (PR#96)!
-
-
-
This release is the last to support C++14. Future releases will require C++17.
-
Added new
boost::lockfree::mpsc_weak_queue, a multi-producer, single-consumer queue. Whilepushandpopare individually wait-free, the queue is not linearizable and a producer that stalls between exchanging the tail and linking its node can permanently break the queue, so it is not strictly lock-free. -
Added new
boost::lockfree::bounded_ticket_queue, a ringbuffer-based bounded MPMC queue. The queue is linearizable and wait-free when configured with a single producer and single consumer. In multi-producer or multi-consumer configurations, a stalled thread that has claimed a slot can block progress, so the queue is not strictly lock-free.
-
-
Math:
-
Added a degree of freedom finder to the Student’s T and Non-centeral F disributions
-
Fixed CUDA compilation where host functions were invalidly being marked as device during compilation
-
Increased testing coverage of distributions leading to several overflow fixes
-
-
Mp11:
-
Improved the performance of a number of algorithms (contributed by Jonathan Poelen)
-
-
-
mqtt_client::async_runnow completes immediately withclient::error::already_runningwhen the client is already running (#54). -
Fixed several missing length checks when decoding packets received from the broker. Malformed packets could previously cause out-of-bounds reads or excessive memory allocation. Many thanks to Team-Atlanta for reporting these issues.
-
-
MSM:
-
New features (
backmp11):-
Provide an observer API for logging support (#220)
-
Forward Kleene events to actions and guards without conversion (#229)
-
Ensure basic exception guarantee and propagate exceptions to the caller (#221)
-
Provide a reflection API and serialization support for Boost.Serialization, Boost.JSON and nlohmann/json (#197)
-
Rework terminate and interrupt state handling and provide a
machine_stateenum (#244) -
Configurable event pool and inline storage (#239)
-
API reference and examples are now available
-
-
Bug fixes (
backmp11):-
State machine processes events although it is not running (#198)
-
-
Breaking changes (
backmp11):-
Events in
process_event(…)are not enqueued automatically anymore to reduce memory footprint, useenqueue_event(…)in actions (#178) -
The back-end does not forward constructor arguments to the front-end anymore, it must be default-constructible. To use custom constructors, define them in the back-end (#232)
-
The deprecated APIs
process_queued_events()andprocess_single_queued_event()are removed, useprocess_event_pool(…)instead -
The default active state switch policy is set to "after source exit" in compliance to the UML specification. The other options are not UML-compliant and will be removed (#222)
-
The back-end uses its own
process_resulttype with new enum values instead of aliasing the enum of thebacknamespace. The old enum values are deprecated (#242) and will be removed
-
-
fix(back, back11): Infinite recursion with event deferral in orthogonal regions (regression from 1.78) (#184)
-
-
-
Fancy pointer support has been extended so that
multi_index_containeriterators now store references to the elements through the allocator’s pointer type. In particular, this means that iterators can now be placed in shared memory using Boost.Interprocess allocators. -
Fixed a performance issue with hashed indices when rehashing at very large container sizes (PR#94). Contributed by Daniel Král.
-
-
-
Added
data()member function to float128 to match the rest of the library -
Fixed issue blocking compilation of constexpr expression templates with Clang
-
-
-
Added a way to configure which character set the server uses by default, to make tracking more intelligent. This can be used to avoid redundant
SET NAMESstatements. Seepool_params::charset_strategyandconnect_params::server_default_charset(PR#511). -
Reduces `pool_params::ping_interval’s default from 1h to 10s. This improves the detection of broken connections (PR#512).
-
The read buffer has been optimized by reducing the frequency of data rotations when incomplete messages are received (PR#501). Contributed by
@vsoulgard. -
TLS certificates for CI testing are now generated dynamically, rather than being committed into the repository. This cleans up reports raised by vulnerability scanners (PR#505).
-
-
PFR:
-
C++20 Module
boost.pfris now also tested with and withoutimport std. Many thanks to Fedor Osetrov for the PR (PR#233)!
-
-
-
Fixed a case of undefined behavior within
connectionwhen attempting to cancel a request that has completed, but whose handler hasn’t been called yet. This happened due to an incorrect erase-remove use with astd::deque(PR#428). Contributed by@L0rentz. -
Optimized buffer rotations to reduce CPU consumption when many small messages arrive in a single network packet (PR#415).
-
Added initializers to all members in the
configstruct. This allows using designated initializers to createconfigobjects (PR#424). -
Removed the standalone workflow from the CMake. This was an undocumented way of consuming Boost.Redis with CMake aimed to internal development (PR#409).
-
-
-
C++20 Modules were implemented:
-
boost.stacktrace_dumpmodule for safe_dump interface -
boost.stacktrace_<backend>module for each unwind/collect implementation method -
boost.stacktracemodule exposing best available backend implementation. Many thanks to Fedor Osetrov for the PRs (PR#230, PR#227)!
-
-
C++20 Module
boost.stacktraceis now also tested with and withoutimport std. Many thanks to Fedor Osetrov for the PR (PR#231)! -
Fixed
Boost::from_exceptionlink on MinGW. Many thanks to Orgad Shaneh for the PR (PR#225)!
-
-
-
Fix
unwrap_and_invokefor functions returningvoid.
-
-
-
C++20 Module
boost.type_indexis now also tested with and withoutimport std. Many thanks to Fedor Osetrov for the PR (PR#47)!
-
-
-
Added interoperability with C++20 ranges to all the containers in the library:
insert_range(plusinsert_range_(or|and)_[c]visitfor concurrent containers),std::from_rangeconstruction and associated CTAD deduction guides. Theboost::unordered::from_rangeconstruction tag is provided as an alternative to C++23std::from_rangeor when this is not available. -
Fixed a performance issue with closed-addressing containers when rehashing at very large container sizes (PR#348). Contributed by Daniel Král.
-
-
URL:
-
Fixed a heap buffer overflow in
normalize_pathfor authority-less URLs whose normalized path begins with//(PR#995). -
Fixed an uninitialized read in
ipv6_address_rulewhen an embedded IPv4 address has no precedingh16, e.g.https://[::.(PR#994). -
Fixed unsigned-integer-overflow sanitizer findings in case-insensitive comparisons, hashing, and
format(PR#994). -
Fixed decoded query-size tracking in
url_base::edit_params(PR#990). -
Third-round security review fixes:
url_viewcopy from a null source, two incorrectnoexceptspecifiers, and decoded-length tracking when iterating segments in reverse (PR#988).
-
-
Wave:
-
Introduce digit separators (C++14),
modulekeyword (C++20), andsize_tliterals (C++23). -
Fixed bugs.
-
Updated Tools
-
B2:
-
Includes release of B2 version 5.5.3.
-
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.