Version 1.84.0
Version 1.84.0
December 13th, 2023 23:54 GMT
Platform | File | SHA256 Hash |
---|---|---|
unix | boost_1_84_0.tar.bz2 | cc4b893acf645c9d4b698e9a0f08ca8846aa5d6c68275c14c3e7949c24109454 |
boost_1_84_0.tar.gz | a5800f405508f5df8114558ca9855d2640a2de8f0445f051fa1c7c3383045724 | |
windows | boost_1_84_0.7z | 81a4d10075731966477276c47324ecd9cac02da49899d36c48eba66e40014f25 |
boost_1_84_0.zip | cc77eb8ed25da4d596b25e77e4dbb6c5afaac9cddd00dc9ca947b6b268cc76a4 |
Updated default target Windows version
Boost.WinAPI, a library that is used internally by other Boost libraries for defining Windows SDK components, has been updated to target Windows 10 API by default, where possible. This means that Boost libraries will target Windows 10 by default and may not run on older Windows versions. This includes the pre-built binaries that are distributed by Boost.
The affected libraries include:
-
Boost.Atomic
-
Boost.Beast
-
Boost.Chrono
-
Boost.DateTime
-
Boost.DLL
-
Boost.Filesystem
-
Boost.Interprocess
-
Boost.Log
-
Boost.Pool
-
Boost.Process
-
Boost.System
-
Boost.Stacktrace
-
Boost.Thread
-
Boost.UUID
as well as libraries that depend on the above.
Users are able to change the default by defining BOOST_USE_WINAPI_VERSION
or _WIN32_WINNT
when building
and using Boost to the required version number. For example, to build Boost
targeting Windows 7 one could use a command line like this:
b2 variant=release define=BOOST_USE_WINAPI_VERSION=0x0601 stage
Note, however, that individual libraries may have their own requirements on the minimum supported Windows version.
The list of Windows API version numbers can be seen on this page.
New Libraries
Updated Libraries
-
Asio:
-
Changed to require C++11 as the minimum language standard. C++03 is no longer supported.
-
Removed deprecated functionality from the
boost::asio::execution
namespace. -
Removed deprecated invocation and allocation hooks.
-
Added
try_send_via_dispatch
andtry_send_n_via_dispatch
functions to channels. -
Added compatibility between Asio's placeholders and
std::bind
. -
Improved C++11 support for channels that have multiple completion signatures.
-
Fixed compatibility between channel asynchronous operations and
any_completion_handler
. -
Fixed compatibility between
any_completion_handler
and compilation usingBOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT
. -
Added missing equality operators for comparing mixed executor property types belonging to the same category.
-
Fixed an issue where
spawn
-based stackful coroutines would terminate the program when used with asynchronous operations that have a completion signature starting withstd::exception_ptr
. -
Fixed a crash that may occur when attempting to access a default-constructed
any_completion_handler
object's associators. -
Fixed
ssl::stream<>
class'sasync_handshake
operation so that it works with a defaulted completion token. -
Updated all examples to use C++11 as the minimum language standard.
-
-
Beast:
-
Support for
immediate_executor
. -
Remove deprecated allocation and invocation hooks.
-
Use the explicit type std::size_t when completing transfer_op.
-
Replaced
BOOST_ASIO_INITFN_RESULT_TYPE
withBOOST_ASIO_INITFN_AUTO_RES
. -
server-flex-awaitable
example resets parser. -
Corrected the
websocket::stream::async_ping/pong
handler requirement. -
Update documentation for
websocket::stream::async_write_some
.
-
-
Chrono:
-
C++03 is no longer supported.
-
-
ContainerHash:
-
C++03 is no longer supported.
-
-
Conversion:
-
C++03 is no longer supported PR#27.
-
-
Core:
-
boost::swap
utility function has been renamed toboost::core::invoke_swap
to avoid forming a potential infinite recursion when the arguments are not swappable. The new function is defined inboost/core/invoke_swap.hpp
and is functionally equivalent toboost::swap
. The oldboost::swap
name is preserved for backward compatibility but deprecated and will be removed in a future release. Itsnoexcept
specification has been removed to avoid compile errors caused by compile-time recursion.BOOST_ALLOW_DEPRECATED_SYMBOLS
orBOOST_ALLOW_DEPRECATED
can be defined to suppress deprecation warnings for the transition period. (#148) -
Headers
boost/swap.hpp
,boost/utility/swap.hpp
andboost/core/swap.hpp
are deprecated and will be removed. Please, switch toboost/core/invoke_swap.hpp
.BOOST_ALLOW_DEPRECATED_HEADERS
orBOOST_ALLOW_DEPRECATED
can be defined to suppress deprecation warnings.
-
-
CRC:
-
C++03 support is deprecated and will be removed in release 1.86.
-
-
Endian:
-
C++03 is no longer supported.
-
-
Filesystem:
-
As was announced in Boost 1.82.0, C++03 is no longer supported. A C++11 or later compiler is required.
-
Fixed that some
directory_entry
observers takingerror_code& ec
argument did not clear the error code on successful return. (#291) -
On Windows, improved robustness of date and time conversion and added support for dates before January 1, 1970. (#293)
-
Removed support for Windows CE that was deprecated since Boost.Filesystem 1.79.0.
-
Removed
boost/filesystem/string_file.hpp
header. The header was deprecated since Boost.Filesystem 1.79.0. -
Deprecated: Support for Windows versions older than Windows 10 is deprecated and will be removed in Boost 1.87.
-
-
Heap:
-
C++03 support is deprecated and will be removed in release 1.86. New requirement will be C++14.
-
-
JSON:
-
Implement parsing directly into user types.
-
Add conversion categories for optionals and variants.
-
Relax iterator requirements for constructors from iterator pairs.
-
Fix reading beyond input buffer.
-
Fix inconsistent choice of init list constructor.
-
-
LEAF:
-
class result<T> marked nodiscard.
-
Added member typedef result<T>::value_type.
-
verbose_diagnostic_info defers conversion to string until an error handling scope is reached.
-
Improved support for embedded development.
-
Improved Visual Studio 2015 compatibility (thanks godmaycrying).
-
Minor bug fixes an improvements.
-
Dropped support for GCC 4.8 and 4.9.
-
-
LexicalCast:
-
C++03 is no longer supported PR#62.
-
Fixed -Wdeprecated-copy-with-dtor warnings with clang. Thanks to Romain Geissler for the PR PR#59!
-
Dropped dependency on Boost.Range PR#63.
-
-
Locale:
-
to_title
for the WinAPI backend returns the string unchanged instead of an empty string -
Improved support for
char8_t
andstd::u8string
-
Fix off-by-one error when using negative times PR#198
-
Fix escape-handling of curly braces in format strings #194
-
Fix some build errors and warnings, notably one on MSVC, see #189
-
-
Lockfree:
-
C++03 support is deprecated and will be removed in release 1.86. New requirement will be C++14.
-
-
Log:
-
C++03 is no longer supported. A C++11 or later compiler is required.
-
When built with C++11 compilers that are conforming enough for Boost.Regex v5 to be used, Boost.Log no longer links with Boost.Regex prebuilt library, since Boost.Regex v5 is header-only.
-
Support for Windows versions older than Windows 10 is deprecated and will be removed in Boost 1.87.
-
-
Math:
-
Improve ccmath error detection.
-
Remove use of deprecated std::numeric_limits<>::has_denorm, see 1028.
-
Correct non-convergence bug in non-central-t distribution, see 1035.
-
Adjust Bessel function approximation to [sub 1]F[sub 1] to avoid taking tgamma at a negative integer, see 1034.
-
Avoid spurious overflow and divide by zero in ibeta, see 1006.
-
Improve accuracy when using Sterling's approximation to tgamma, completes work started in 1007.
-
Fix inverse_discrete_quantile for large initial guesses, see 1007.
-
Improve Newton root finding, see 1000.
-
Fix median_absolute_deviation for non-zero centre, see 997.
-
Fix up cstdfloat.hpp for gcc-14.
-
Update to work for the new types declared in <stdfloat>.
-
Change hypergeometric_distribution to use 64 rather than 32 bit integers to avoid unnecessary overflow and restrictions on use.
-
-
Multi-index Containers:
-
Fixed a serialization-related compile-time bug in old compilers without ADL support (issue #70).
-
-
MySQL:
-
Added
connection::reset_connection
andconnection::async_reset_connection
. These functions clean session state (including prepared statements, variables, locks and more) without closing and re-opening the connection. -
Added error codes introduced in MySQL server v8.1.0.
-
Added fuzz testing for the deserialization functions.
-
-
PFR:
-
Big new feature: field names reflection. Added new
constexpr
boost::pfr::get_name<N, T>()
function that returns astd::string_view
with a name of field at indexN
of an aggregateT
. Requires C++20.BOOST_PFR_CORE_NAME_ENABLED
is defined to 1 if the functionality is available. Many thanks to Denis Mikhailov, Bela Schaum and X-Ryl669 for the PR PR#129 and implementation ideas. -
for_each_field()
is nowconstexpr
for C++17. Many thanks to Alexander Karatarakis for the PR PR#134.
-
-
Predef:
-
Version 1.15.0
-
Add detection of Microsoft STL (from Henrik Gaßmann).
-
-
Random:
-
C++03 is no longer supported.
-
Fixed overflows in tests using Boost.Multiprecision
-
-
Ratio:
-
C++03 is no longer supported.
-
Support for
BOOST_RATIO_EXTENSIONS
has been removed. Ratio is now implemented in terms of the standard<ratio>
header.
-
-
Stacktrace:
-
Added missing include. Thanks to Francesco Ballarin for the PR PR#143!
-
System:
-
Added support for
result<U&, E>
. -
Added
operator|
forresult
. -
Added
operator&
forresult
. -
Added
operator&=
forresult
.
-
-
Thread:
-
C++03 is no longer supported.
-
-
TypeIndex:
-
C++03 is no longer supported.
-
BOOST_TYPE_INDEX_REGISTER_RUNTIME_CLASS((A)(B)(C)(D))
changed syntax toBOOST_TYPE_INDEX_REGISTER_RUNTIME_CLASS(A, B, C, D)
. -
Dropped Boost.PP dependency.
-
-
TypeOf:
-
C++03 is no longer supported.
-
-
Unordered:
-
Major update.
-
Added
boost::concurrent_flat_set
. -
Added
[c]visit_while
operations to concurrent containers, with serial and parallel variants. -
Added efficient move construction of
boost::unordered_flat_(map|set)
fromboost::concurrent_flat_(map|set)
and vice versa. -
Added bulk visitation to concurrent containers for increased lookup performance.
-
Added debug-mode mechanisms for detecting illegal reentrancies into a concurrent container from user code.
-
Added Boost.Serialization support to all containers and their (non-local) iterator types.
-
Added support for fancy pointers to open-addressing and concurrent containers. This enables scenarios like the use of Boost.Interprocess allocators to construct containers in shared memory.
-
Fixed bug in member of pointer operator for local iterators of closed-addressing containers (PR#221, credit goes to GitHub user vslashg for finding and fixing this issue).
-
Starting with this release,
boost::unordered_[multi]set
andboost::unordered_[multi]map
only work with C++11 onwards.
-
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 and Glen Fernandes managed this release.