Version 1.76.0
Version 1.76.0
April 16th, 2021 21:05 GMT
Platform | File | SHA256 Hash |
---|---|---|
unix | boost_1_76_0.tar.bz2 | f0397ba6e982c4450f27bf32a2a83292aba035b827a5623a14636ea583318c41 |
boost_1_76_0.tar.gz | 7bd7ddceec1a1dfdcbdb3e609b60d01739c38390a5f956385a12f3122049f0ca | |
windows | boost_1_76_0.7z | 88782714f8701b6965f3fce087a66a1262601dd5ccd5b2e5305021beb53042a1 |
boost_1_76_0.zip | 0fd43bb53580ca54afc7221683dfe8c6e3855b351cd6dce53b1a24a7d7fbeedd |
New Libraries
-
No new libraries
Updated Libraries
-
Asio:
-
Added
ip::scope_id_type
type alias. -
Added
ip::port_type
type alias. -
Added
std::hash
specialisations for IP addresses. -
Added
std::hash
specialisations forip::basic_endpoint<>
. -
Refactored SFINAE usage to improve compile times.
-
Added friendship support to customisation points, and made most customisations private.
-
Changed
any_io_executor
to a "strong typedef"-style class. -
Fixed
experimental::as_single
to work with handler hook deprecation. -
Ensured pthread condition variable attributes are cleaned up on all platforms.
-
Clarified thread safety notes on sockets and descriptors.
-
Ensured
errno
is not overwritten ifsocket()
fails on macOS/FreeBSD. -
Fixed work tracking for
io_context
andthread_pool
executors when move-assigned. -
Ensured internal
call_stack
objects are accessed only from implementation files. -
Fixed I/O object move-assignment to ensure the executor is left in a valid state.
-
Fixed detection of compiler support for defaulted template argument on functions with MSVC.
-
Prevented the
blocking.always
property from being used withstrand<>
, as it did not produce the correct semantics. -
Removed deprecated file asio/impl/src.cpp.
-
-
Beast:
-
This update brings minor bug fixes and revamped CI reporting.
-
We'd love to know how you or your company use Beast, consider adding an entry to the Companies and Individuals Using Beast list.
-
See the full Release Notes for a complete list of changes.
-
-
Bind:
-
Add support for using the standard C++11 placeholders with
boost::bind
. -
Update
boost::apply
to use variadic templates and perfect forwarding.
-
-
Container:
-
Added [[no-discard]] attribute in all containers to catch bugs related to unused return values.
-
Replaced default standard exception classes with Boost.Container own classes, reducing considerably the included files overhead. Example: in MSVC 19
boost/container/vector.hpp
preprocessed file size reduces from 1,5MB to 930KB. If you still want to use standard exception classes, you can defineBOOST_CONTAINER_USE_STD_EXCEPTIONS
before using any Boost.Container class. -
Fixed bugs/issues:
-
-
Core:
-
Add implicit conversion between compatible reference wrappers.
-
Add
boost/core/cmath.hpp
, a portable implementation of the floating point classification functions from<cmath>
. -
Add
boost/core/bit.hpp
, a portable implementation of the C++20 standard header<bit>
. -
Fix
BOOST_TEST_EQ
,BOOST_TEST_NE
for character types under C++20. -
Revise allocator access utilities (now support VS2013, and no workarounds use
allocator_traits
.)
-
-
DLL:
-
BREAKING CHANGE:
boost::dll::import
was renamed toboost::dll::import_symbol
to avoid collision with C++20import
keyword. -
Updated docs, including FAQ section.
-
-
Filesystem:
-
Updated compatibility with WASI platform. (PR#169)
-
Fixed an exception being thrown by
path::remove_filename
if the path is "////". (#176) -
Fixed
create_directories
disregarding errors from file status query operations issued internally. This could result in incorrect error codes returned bycreate_directories
. (#182)
-
-
Geometry:
-
Improvements
-
PR#670 New IOs to_wkt() and from_wkt() (thanks to Baidyanath Kundu).
-
PR#756 Non cartesian and robust convex hulls.
-
PR#768 Umbrella strategies for relops, setops, index, buffer and more (undocumented for now).
-
PR#797 New azimuth() algorithm.
-
PR#801 Improved accuracy in geographic area computations.
-
PR#820 Parameter scale added to svg_mapper.
-
-
Breaking changes
-
Removed strategy convex_hull::graham_andrew.
-
-
-
GIL:
-
BREAKING: In next release, we are going to drop support for GCC 5. We will also change the required minimum C++ version from C++11 to C++14.
-
-
Histogram:
-
This release contains critical fixes, please check that your results are not affected.
-
See Release Notes for details.
-
-
Intrusive:
-
Reduced compile-time dependencies:
-
linear_slist_algorithms
use a simple node_ptr instead of std::pair on return. -
list
/slist
useoperator <
/operator ==
instead ofstd::equal_to
/std::less
.
-
-
-
Interprocess:
-
Added
wchar_t
API support for named resources in operating systems that offer native wide character API (e.g. Windows). The following classes were updated withwchar_t
name support:-
file_mapping
-
managed_mapped_file
-
managed_shared_memory
-
managed_windows_shared_memory
-
shared_memory_object
-
windows_shared_memory_object
-
file_lock
-
named_condition
-
named_condition_any
-
named_mutex
-
named_recursive_mutex
-
named_semaphore
-
named_sharable_mutex
-
named_upgradable_mutex
-
message_queue
-
-
Added
BOOST_INTERPROCESS_FORCE_NATIVE_EMULATION
macro option to disable the use of generic emulation code for process shared synchronization primitives instead of native POSIX or Winapi functions. -
Fixed bugs:
-
-
JSON:
-
Security Report from Bishop Fox.
-
(#481) Refactored
value_from
implementation; user customizations are now always preferred over library-provided overloads. -
(#484) Fix imprecise parsing for some floating point numbers.
-
(#485) Fix link errors in standalone mode, when used alongside Boost.
-
(#497) Fix Boost.Build builds on GCC 4.8.
-
-
Log:
-
Bug fixes:
-
Corrected a formal race condition in the thread-safe log record queue implementation used in the
unbounded_fifo_queue
policy of theasynchronous_sink
frontend. The race could be detected by TSAN, but it was not a real problem on most current CPU architectures and compilers. (#139) -
When copying a logger with a channel attribute (e.g.
channel_logger
), the channel attribute is now deep-copied from the original logger. This means that modifying the channel in the new logger will no longer affect the original logger. -
Replaced the use of
std::allocator<void>
in template parameters with a new tag typeboost::log::use_std_allocator
to silence libc++ warnings about the former being deprecated in C++17 and later. The tag indicates that the instantiated template should be using a specialization ofstd::allocator
internally to allocate dynamic memory, so the change has no functional effect. (#141) -
Boost.Log no longer defines
__MSVCRT_VERSION__
macro on MinGW and MinGW-w64. Defining this macro caused incompatibility with UCRT, which is available as an option in recent MinGW-w64. (PR#149)
-
-
See changelog for more details.
-
-
Math:
-
Breaking Change: C++03 support is now removed, a C++11 or later conformant compiler is now required to use this library.
-
Added Z-test.
-
Added execution policy support to univariate and bivariate statistics: enables parallel execution (requires C++17 and
<execution>
). -
Big update/improvement on CI testing.
-
Bivariate statistics now have integer support.
-
T-Test now has integer support.
-
Linear regression now has integer support.
-
Correct PDF of the beta distribution at the endpoints.
-
Correct use of Stirling's approximation in certain multiprecision cases, fixes #396.
-
Eliminate -Wimplicit-int-float-conversion on clang.
-
Fix some constexpr issues in quaternion/octonion.
-
Minor performance fix to tanh_sinh integration.
-
Update hypergeometric functions internal scaling to allow for 64-bit (long long) exponents with multiprecision types.
-
-
Multiprecision:
-
BREAKING CHANGE: Massive refactoring and code simplification makes C++11 an absolute requirement.
-
Use BOOST_TRY/CATCH in headers so code can be used in exception-free environments.
-
Correct corner case in pow, fixes #277.
-
Correct exception type thrown to match docs in lsb/msb: fixes #257.
-
Allow moves and operators between related but different types (ie types with the same allocator), fixes #278.
-
-
Nowide:
-
Fix discarding of characters for text file streams when seek or sync functions are used and newlines were converted (e.g. on Windows)
-
Fix potential use-after-free bug when reusing (via
open
) a file stream that has been closed -
Fix potential invalid memory access when using a file stream that has been moved or swapped to where the source had a put-back character or was set to unbuffered mode
-
Fix compatibility with ucrt runtime by not defining
__MSVCRT_VERSION__
-
Known issues: Read performance for text files is degraded. Binary files and writing is unaffected.
-
-
Optional:
-
Fixed MSVC warning C4702.
-
-
Outcome:
-
Announcements:
-
BREAKING CHANGE: After a year and three major Boost releases announcing this upcoming change, this is the FIRST RELEASE of the v2.2 branch. This branch has a number of major breaking changes to the Outcome v2.1 which shipped in Boost 1.75 and earlier, see the documentation for details.
-
-
Enhancements:
-
VS2019.8 changed how to enable Coroutines, which caused Outcome to not compile on that compiler.
-
If on C++ 20, we now use C++ 20
[[likely]]
instead of compiler-specific markup to indicate when TRY has likely success or failure. -
BREAKING CHANGE: Previously the value of
spare_storage(const basic_result|basic_outcome *) noexcept
was not propagated overBOOST_OUTCOME_TRY
, which causes things like stack backtraces captured at the point of construction of an errored result to get dropped at everyTRY
point. This has been fixed by adding an optionalspare_storage
tosuccess_type<T>
andfailure_type<T>
, as well as toauto success(T &&, ...)
andauto failure(T &&, ...)
.
-
-
Bug fixes:
-
Boost.Outcome should now compile with
BOOST_NO_EXCEPTIONS
defined. Thanks to Emil, maintainer of Boost.Exception, making a change for me, Boost.Outcome should now compile with C++ exceptions globally disabled. You won't be able to useboost::exception_ptr
as it can't be included if C++ exceptions are globally disabled. -
BREAKING CHANGE #244 It came as a shock to learn that
BOOST_OUTCOME_TRY
had been broken since the inception of this library for certain corner case code, which required a breaking change in how TRY works. See the changelog in the documentation for more detail.
-
-
-
PFR:
-
Fixed reflection of types with missing
const
in SFINAE expressions in template constructor. Now reflection of aggregates withstd::optional<std::chrono::duration<???>>
fields works on any Standard Library implementation, even if LWG3050 is not fixed. -
Comparison functions are now
constexpr
#52 -
Fixed numerous typos in docs (thanks to Phil Miller #63)
-
-
Predef:
-
Version 1.13
-
Add
ARCH_PPC_64
predef. -
Fix
ARCH_WORD_BITS*
redefinition warnings/errors. -
Add
ARCH_E2K
, Elbrus 2000, architecture from Konstantin Ivlev. -
Fix not handling recent C++ version that go above 10.x version.
-
Version 1.12
-
Switch to using the endian.h header on OpenBSD. (Brad Smith)
-
Fix not handling recent versions of stdcxx that go above version 9.
-
Fix including sub-BSD OS headers directly causing redef warnings.
-
Add CI testing of direct inclusion of all headers.
-
Add CI testing on FreeBSD for clang and gcc.
-
Add
WORD_BITS
set of predefs to detect the architecture word size. Initial implementation inspired by submission from Mikhail Komarov. -
Add CI testing for Cygwin 32 and 64.
-
-
PropertyTree:
-
Property Tree has a new maintainer.
-
Fix usage of deprecated Boost.Bind features.
-
Link to Wikipedia fixed.
-
Use BOOST_OVERRIDE to fix GCC warnings.
-
Add extensive CI testing.
-
-
Regex:
-
Regex is now header only except in C++03 mode.
-
Support for C++03 is now deprecated.
-
The library can now be used "standalone" without the rest of Boost being present.
-
-
TypeTraits:
-
Fix for Visual Studio managed code projects.
-
-
Variant2:
-
Improved generated code for the double buffered case.
-
Updated Tools
-
Build:
-
Includes release of B2 version 4.4.1.
-
Compilers Tested
Boost's primary test compilers are:
-
Linux:
-
Clang: 3.0, 4.0.1, 6.0.1
-
Clang, C++0x: 3.0
-
Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 6.0.1, 7.0.0, 8.0.0, 9.0.0, 10.0.0, 11.0.0
-
Clang, C++14: 3.5.0, 3.6.0, 3.7.1, 3.8.0, 3.9.1, 4.0.0, 4.0.1, 5.0.2, 6.0.1, 7.0.0, 8.0.0, 9.0.0, 10.0.0, 11.0.0
-
Clang, C++17: 5.0.2, 6.0.1, 7.0.0, 8.0.0, 9.0.0, 10.0.0, 11.0.0
-
GCC: 4.4.7, 4.5.3, 4.6.3, 5.4.0, 8.0.1
-
GCC, C++0x: 4.4.7
-
GCC, C++11: 4.7.3, 4.8.5, 4.9.4, 5.4.0, 6.4.0, 7.1.0, 8.0.1
-
GCC, C++14: 5.4.0, 5.5.0, 6.4.0, 7.1.0, 7.3.0, 8.0.1
-
GCC, C++17: 7.3.0, 8.0.1
-
Intel, C++14: 18.0
-
-
OS X:
-
Apple Clang: 9.0.0, 9.1.0, 10.0.0, 11.0.0
-
Apple Clang, C++11: 9.0.0, 9.1.0, 10.0.0, 11.0.0
-
Apple Clang, C++14: 9.0.0, 9.1.0, 10.0.0, 11.0.0
-
Apple Clang, C++17: 9.1.0, 10.0.0, 11.0.0
-
Apple Clang, C++1z: 9.0.0
-
Apple Clang, C++2a: 10.0.0, 11.0.0
-
-
Windows:
-
GCC: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0, 4.5.4
-
GCC, C++0x: 4.6.4
-
GCC, C++11: 4.7.3, 4.8.1, 4.9.3
-
GCC, C++14: 5.1.0, 5.2.0, 5.3.0, 6.1.0, 6.2.0, 6.3.0, 6.4.0
-
GCC, C++17: 7.1.0, 7.2.0, 7.3.0
-
Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
-
-
FreeBSD:
-
Clang: 4.0.0
-
Clang, C++11: 4.0.0
-
Clang, C++14: 4.0.0
-
Clang, C++1z: 4.0.0
-
Boost's additional test compilers include:
-
Linux:
-
Clang: 3.0, 3.8.1, 3.9.1, 4.0.1, 5.0.2, 6.0.1
-
Clang, C++0x: 3.0
-
Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 6.0.1, 7.0.0, 8.0.0
-
Clang, C++14: 3.5.0, 3.6.0, 3.7.1, 3.8.0, 3.9.1, 4.0.0, 4.0.1, 5.0.2, 6.0.1, 7.0.0, 8.0.0
-
Clang, C++17: 5.0.2, 6.0.1, 7.0.0, 8.0.0
-
GCC: 4.4.7, 4.5.3, 4.6.3, 4.9.4, 5.4.0, 5.5.0, 8.0.1
-
GCC, C++0x: 4.4.7
-
GCC, C++11: 4.7.3, 4.8.5, 4.9.4, 5.4.0, 6.4.0, 7.1.0, 8.0.1
-
GCC, C++14: 5.4.0, 5.5.0, 6.3.0, 6.4.0, 7.1.0, 7.3.0, 8.0.1, 8.1.0
-
GCC, C++17: 7.3.0, 8.0.1
-
Intel, C++14: 18.0
-
-
OS X:
-
Apple Clang: 9.0.0, 9.1.0, 10.0.0
-
Apple Clang, C++11: 9.0.0, 9.1.0, 10.0.0
-
Apple Clang, C++14: 9.0.0, 9.1.0, 10.0.0
-
Apple Clang, C++17: 9.1.0, 10.0.0
-
Apple Clang, C++1z: 9.0.0
-
Apple Clang, C++2a: 10.0.0
-
-
Windows:
-
GCC: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0, 4.5.4
-
GCC, C++0x: 4.6.4
-
GCC, C++11: 4.7.3, 4.8.1, 4.9.3
-
GCC, C++14: 5.1.0, 5.2.0, 5.3.0, 6.1.0, 6.2.0, 6.3.0, 6.4.0
-
GCC, C++17: 7.1.0, 7.2.0, 7.3.0
-
Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
-
-
FreeBSD:
-
Clang: 4.0.0
-
Clang, C++11: 4.0.0
-
Clang, C++14: 4.0.0
-
Clang, C++1z: 4.0.0
-
Acknowledgements
Marshall Clow, Michael Caisse and Glen Fernandes managed this release.