Version 1.82.0
Version 1.82.0 beta 1
March 15th, 2023 15:05 GMT
Platform | File | SHA256 Hash |
---|---|---|
unix | boost_1_82_0_b1.tar.bz2 | edf4cb9e8e5a14412b91311438478ef6ce12afe2a54714eb2f0632a454c3d8d5 |
boost_1_82_0_b1.tar.gz | 0af2a60f76abb4f411b1bd9c1a553f64454d9414990e8cc12f02f3b431e2ac45 | |
windows | boost_1_82_0_b1.7z | efe17bea3f0b2c11f34828f37d5777f30eb6fef57af355c6a6664b08a4339999 |
boost_1_82_0_b1.zip | 495b2ae2f6970ea1e635f80222d9f6978148496cdd163e87c37cdd6de3b5ccfc |
Notice of Dropping C++03 Support
The following libraries will be dropping C++03 support in release 1.84, two releases from now:
-
Align
-
Any
-
Bind
-
Chrono
-
ContainerHash
-
Conversion
-
DLL
-
Endian
-
Function
-
Functional
-
Io
-
LexicalCast
-
Random
-
Ratio
-
SmartPtr
-
System
-
Stacktrace
-
Thread
-
Timer
-
TypeIndex
-
Typeof
-
Unordered
-
Variant
This release (1.82) and the next (1.83) will be the last releases offering C++03 support for the above libraries and most of their dependencies.
The new baseline requirement for the above libraries, and for most of Boost, will be C++11. Since old compiler versions often implement C++11 only partially, due to missing support or bugs, what compilers are considered to meet the C++11 requirement may vary by library.
However, a general rule is that if a compiler does not recognize a C++11 keyword
or syntax at all (e.g. use of noexcept
,
use of constexpr
, or defining
a =delete
d
function results in an immediate compile error), or if a compiler does not
provide a required C++11 header at all (e.g. trying to include <atomic>
or <chrono>
fails), or the compiler provides a C++11 feature or a header that is completely
unusable, this compiler is not considered a C++11 compiler.
This rules out, for instance, Microsoft Visual C++ before 14.0, or GCC before 4.8.
New Libraries
-
Mysql: a C++11 client for the MySQL database server, based on Boost.Asio, from Reuben Perez.
Updated Libraries
-
ContainerHash:
-
Added an overload of
hash_value
forstd::nullptr_t
. -
Added
is_tuple_like
and an overload ofhash_value
for tuple-like types. -
Changed string hashing to use
mulxp1_hash
. This improves both quality and speed.
-
-
Math:
-
Deprecated C++11 support: We now require C++14 as a minimum standard. Our minimum tested compiler versions are now Clang-5, GCC-5 or MSVC-14.1.
-
Added Estrin's method for polynomial evaluation.
-
Fix various issues in non-central distributions to allow for larger non-centralities see 939.
-
Added CMake install target.
-
Fix special_functions.hpp to disable anything which can't be used in an exception-free environment.
-
Get condition number calculation working in C++14.
-
Fix
constexpr
table driven functions to avoid massive slowdown when the code is not actuallyconstexpr
, see 923. -
Improve tanh_sinh boundary handling, see 894.
-
Add Linux arm64, s390x and Apple M1 testing, fix up test cases to handle 128-bit long doubles.
-
Improve
constexpr
math functions to better handle infinities and NaN's. -
Make the integrators const-correct.
-
Fix tanh_sinh integrator in case the function underflows, see 898.
-
Don't use
std::cbrt
as some platforms still don't support it. -
Stop non-central T from raising spurious FE_INVALID exceptions, see 892.
-
Fix binomial distribution edge case.
-
Improve ibeta handling of very small arguments, see 884.
-
Improve ibeta handling of infinities and NaN's, see 878.
-
Improve error handling in powm1, see 781.
-
Improve root-finder bracketing to bracket faster when the exponent is super-large or small.
-
Fix root finding edge cases, see 873.
-
Lots of miscellaneous warning fixes.
-
Add assertions when using features which require C++17 for better error messages when invoking the compiler in a lower std version.
-
-
Multi-index Containers:
-
Serialization now uses
unsigned long
instead ofcollection_size_type
, andmulti_index_container
serialization class version has been bumped from 2 to 3 to reflect this change. Reading old archives may fail for custom archive types giving special treatment tocollection_size_type
values: if this is the case, globally define the macroBOOST_MULTI_INDEX_ENABLE_SERIALIZATION_COMPATIBILITY_V2
to ensure backwards compatibility in reading operations. -
Maintenance work.
-
-
Multiprecision:
-
Deprecated C++11 support: We now require C++14 as a minimum standard. Our minimum tested compiler versions are now Clang-5, GCC-5 or MSVC-14.1.
-
Added a new forward declaration header.
-
Update Eigen interoperability so we no longer rely on Eigen's details, see 479.
-
Add Cmake install target.
-
Fix cpp_dec_float construction from string in standalone case for better error handling, see 499.
-
Remove redundent definitions when in C++17 mode, see 530.
-
Fix the error handling in standalone itrunc and ltrunc.
-
Fix potentially uninitialized storage when parsing octal strings.
-
Add arm64 and s390x CI testing.
-
Add some missing expression template unpacking code for
powm
, see 506.
-
-
PFR:
-
Implemented the
boost::pfr::is_implicitly_reflectable
and the machinery for specializing aggregates as reflectable or not, thanks to Denis Mikhailov for the PR PR#111. -
Implemented the
BOOST_PFR_ENABLED
to macro to detect library support, thanks to Denis Mikhailov for the PR PR#86. -
Fixed missing terminating character, thanks to Denis Mikhailov for the PR PR#114.
-
Fixed for the
boost/pfr/config.hpp
on older compilers, thanks to Denis Mikhailov for the PR PR#118. -
Workaround for broken C++17 stuctured binding in old compilers, thanks to Denis Mikhailov for the PR PR#119.
-
Avoid -Wzero-as-null-pointer-constant warnings, thanks to Markus F.X.J. Oberhumer for the PR PR#117.
-
Fixed multiple typos, thanks to Denis Mikhailov for the fixes.
-
Implemented
boost::pfr::get
by type of an element in the aggregate. -
Multiple fixes and improvements for the docs.
-
-
StaticString:
-
Boost.Core
string_view
andstd::string_view
interoperability
-
-
Test:
-
Fixed several unused variable warnings
-
Fixed sprintf deprecation warnings
-
Fixed undefined behavior in
basic_cstring::rfind
-
Added CI through Github Actions
-
-
Unordered:
-
Major update.
-
Added node-based, open-addressing containers
boost::unordered_node_map
andboost::unordered_node_set
. -
Extended heterogeneous lookup to more member functions as specified in P2363.
-
Replaced the previous post-mixing process for open-addressing containers with a new algorithm based on extended multiplication by a constant.
-
Fixed bug in internal
emplace
impl where stack-local types were not properly constructed using the allocator of the container which breaks uses-allocator construction.
-
-
URL:
-
Add
url::format
with automatic percent-encoding -
URL router example
-
set_params
convenience function -
Support implicit conversions to
string_view
-
Parsing constructors are implicit
-
string_token::arg
has virtual destructor and slice protection -
Support
BOOST_URL_DISABLE_THREADS
-
Improvements and Bug fixes:
-
WIN32_LEAN_AND_MEAN macro redefinition warning
-
Comparison differentiates absent and empty components
-
Detect
hier_part_rule
with empty-port-like segments -
Segments comparison as if normalized works above root
-
hier-part path-rootless considers invalid segments
-
port as number is set to 0 when it overflows
-
ipv4 to string overflow detection algorithm
-
-
Updated Tools
-
Build:
-
Includes release of B2 version 4.9.4.
-
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.