Version 1.72.0
Version 1.72.0
December 11th, 2019 18:06 GMT
Platform | File | SHA256 Hash |
---|---|---|
unix | boost_1_72_0.tar.bz2 | 59c9b274bc451cf91a9ba1dd2c7fdcaf5d60b1b3aa83f2c9fa143417cc660722 |
boost_1_72_0.tar.gz | c66e88d5786f2ca4dbebb14e06b566fb642a1a6947ad8cc9091f9f445134143f | |
windows | boost_1_72_0.7z | 247a91dd7e4d9dd3c4b954b532fbc167ba62dc15ab834e5ad893d7c3f9eb5f0f |
boost_1_72_0.zip | 8c20440aaba21dd963c0f7149517445f50c62ce4eb689df2b5544cc89e6e621e |
Known Issues
These are patches from library authors which were found too late to be fixed in the release. Be careful as they have not been through the normal testing process.
-
Revert cease dependence on range
Updated Libraries
-
Asio:
-
Changed the
async_initiate
helper function to automatically deduce its return type, for C++11 or later. -
Changed all asynchronous operations to use automatically deduced return types, for C++14 or later.
-
Introduced concepts to support
async_initiate
. -
Added the nested template type
rebind_executor
to all I/O object types. -
Changed the initiation function objects to report their associated I/O executor via the nested type
executor_type
and member functionget_executor()
. -
Added the
default_completion_token
trait, giving I/O executor types an associated default completion token type for use with asynchronous operations. This trait is specialised for theuse_awaitable
completion token, for example, to allow asynchronous operations to be used as follows:co_await socket.async_connect(my_endpoint)
. -
Added missing
async_initiate
to the Windows-specific I/O objects' asynchronous operations. -
Ensured that the executor type is propagated to newly accepted sockets.
-
Changed to require that
Protocol
copy and move operations never throw. -
Changed to require that
Endpoint
default constructor and move operations never throw. -
Added the
noexcept
qualifier to protocol accessors. -
Added the
noexcept
qualifier to socket move constructors. -
Fixed issues associated with opening serial ports on Windows:
-
Use the correct constant to initialise the RTS control flag.
-
Specify a default baud rate (9600).
-
-
Fixed a lost "outstanding work count" that can occur when an asynchronous accept operation is automatically restarted.
-
Consult the Revision History for further details.
-
-
Atomic:
-
Added a workaround for
__float128
not being considered as a floating point type by some versions of libstdc++. -
Improved compatibility with clang-win compiler.
-
-
Beast:
-
This is a maintenance update containing bug fixes, and updates to use the new features delivered in Boost.Asio.
-
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.
-
-
Context:
-
architecture s390x supported
-
execution_context removed
-
-
Endian:
-
Made
endian_reverse
,conditional_reverse
and*_to_*
constexpr
on GCC and Clang -
Added convenience load and store functions
-
Added floating point convenience typedefs
-
Added a non-const overload of
data()
; changed its return type tounsigned char*
-
Added
__int128
support toendian_reverse
when available -
Added a convenience header
boost/endian.hpp
-
-
Filesystem:
-
Extracted
filesystem_error
toexception.hpp
;file_status
and associated enums and functions tofile_status.hpp
;directory_entry
,directory_iterator
andrecursive_directory_iterator
todirectory.hpp
. -
Deprecated: For backward compatibility
operations.hpp
still includes the new headersexception.hpp
,file_status.hpp
anddirectory.hpp
, unlessBOOST_FILESYSTEM_NO_DEPRECATED
macro is defined. These implicit includes are considered deprecated and will be removed in a future release. Users are encouraged to include the new headers directly or includefilesystem.hpp
. -
The
filesystem_error
exception is now implemented in the compiled library of Boost.Filesystem. Users may need to add linking with Boost.Filesystem library in their projects. -
On POSIX.1-2008 platforms, use
utimensat
instead ofutime
.utime
is declared obsolete in POSIX.1-2008 and can be disabled e.g. in uClibc-ng. (PR#115) -
directory_iterator
is now left in the end state on memory allocation errors. -
In
directory_iterator
on POSIX systems, support forreaddir
/readdir_r
has been reworked to avoid memory allocations fordirent
structures whenreaddir
is used. This reduces memory consumption and eliminates the possibility of buffer overruns in case ifreaddir
produces a very long directory name. -
On Windows, use Boost.WinAPI to select the target Windows version.
-
New: Added
directory_options
enum, which reflects the same named enum from C++20. The enum is supported indirectory_iterator
andrecursive_directory_iterator
to customize iteration behavior. In particular, the iterators now support skipping directories that can't be opened due to insufficient permissions. Thesymlink_option
enum is now deprecated and should be replaced withdirectory_options
. -
By default,
recursive_directory_iterator
is now reset to the end state in case of errors, as required by C++20. (#112) -
New: Added
directory_options::pop_on_error
option, which configuresrecursive_directory_iterator
so that it attempts to recover from iteration errors by repeatedly invokingpop()
until it succeeds or the end state is reached. (#113) -
New: Added
directory_options::skip_dangling_symlinks
option, which configuresrecursive_directory_iterator
so that it doesn't follow dangling directory symlinks and continues iteration instead of reporting an error. -
Deprecated: The following members of
recursive_directory_iterator
are now marked as deprecated:level()
,no_push_pending()
,no_push_request()
,no_push()
. Users are advised to replace their use with the standard counterparts:depth()
,recursion_pending()
,disable_recursion_pending()
. Note thatrecursion_pending()
has the opposite meaning compared tono_push_pending()
andno_push_request()
. Deprecated methods will be removed in a future release. -
Fixed
path::lexically_relative
(and any dependent algorithms) to correctly handle empty, dot and dot-dot path elements in its argument. The behavior is made closer to C++17std::path::lexically_relative
in that empty and dot path elements are ignored and dot-dot path elements are accounted by decreasing the number of dot-dot path elements to generate in the resulting relative path. (#76)
-
-
Functional/Factory:
-
Glen Fernandes rewrote the implementations of
factory
andvalue_factory
to provide the following features:-
Support r-value arguments when possible
-
Support arbitrary number of arguments via variadic templates when possible
-
Support allocators that are final
-
Support allocators that use fancy pointers
-
Support for disabled exceptions (
BOOST_NO_EXCEPTIONS
) -
Improved compilation times
-
-
The following features have been removed:
-
Increasing limits for C++03 compilers through
BOOST_FUNCTIONAL_VALUE_FACTORY_MAX_ARITY
-
Using
boost::none_t
in place ofvoid
throughBOOST_FUNCTIONAL_FACTORY_SUPPORT_NONE_T
-
-
-
GIL:
-
Added
-
GSoC 2019: Lanczos resampling for image down scaling (PR#309).
-
GSoC 2019: Methods for binary thresholding, inverted binary thresholding and truncation thresholding (PR#313).
-
GSoC 2019: Otsu thresholding method (PR#314).
-
GSoC 2019: Adaptive thresholding using mean or gaussian-weighted sum of the neighbourhood area (PR#315).
-
GSoC 2019: Harris response calculation (corner detector without non-maximum filtering) (PR#350).
-
GSoC 2019: Hessian corner detector (PR#364).
-
GSoC 2019: Types for defining 2D kernel,
kernel_2d
andkernel_2d_fixed
, in Numeric extension (PR#361). -
GSoC 2019: Implementation of 2D convolution as new function
convolve_2d
(PR#367). -
GSoC 2019: Box filtering using the average filter (PR#383).
-
GSoC 2019: Blur function based on normalized mean filter (PR#383).
-
GSoC 2019: Sobel and Scharr operators (PR#392).
-
GSoC 2019: Median filter to remove noise from image (PR#393).
-
Continued adding new test cases and significantly improved overall test coverage.
-
Documented purpose of
cached_location_t
(PR#287). -
Function
extend_boundary
in Numeric extension to perform image boundary extension (PR#386). -
Project release notes maintained in Markdown file
RELEASES.md
(PR#404).
-
-
Changed
-
Move all tests, core features and extensions, inside
test/
directory (PR#302).
-
-
Fixed
-
Undetermined value of default-initialized channel and pixel objects (PR#273).
-
Undefined behaviour due to
std::is_trivially_default_constructible
specializations (PR#284). -
Crash when reading PNG files with an invalid header (PR#385).
-
Applied the Rule of Three for numerous types.
-
Removed uses of deprecated implicit definition of defaulted copy assignment operator or copy constructor.
-
-
-
Histogram:
-
Several new features and performance improvements, some bug-fixes
-
See the full Release Notes for a complete list of changes
-
-
Log:
-
Improved compatibility with clang-win compiler.
-
-
MPI:
-
Documentation clarifications.
-
Fixed scatterv bug when using explicit input buffer offsets.
-
Enable usage of MPI_Probe and friend with Intel MPI >= 2019.4
-
Symbol visibility on Windows
-
-
Math:
-
Added Hypergeometric functions 1F0, 0F1, 2F0, 1F1 and pFq.
-
Added Jacobi polynomial (and derivatives) evaluation.
-
Added Gegenbauer polynomial (and derivatives) evaluation.
-
Added Cardinal B-Splines (and derivatives) as polynomial functions in their own right.
-
Added Cardinal Trigonometric Interpolation.
-
Added new statistics sub-section.
-
Added One Sample Student's T Test.
-
Added Anderson Darling test for normality.
-
Added Ljung Box test for auto-correlation.
-
Added Runs test for random sequences.
-
The headers
boost/math/tools/univariate_statistics.hpp
andboost/math/tools/bivariate_statistics.hpp
, have been deprecated in favor ofboost/math/statistics/univariate_statistics.hpp
andboost/math/statistics/bivariate_statistics.hpp
. -
Added The Empirical CDF distribution.
-
Reworked the Sterling approximation used by multiprecision gamma functions to be applicable to all the function that use the Lanczos approximation at regular precision. Also extended Lanczos approximations up to 100 decimal digit precision.
-
-
Multiprecision:
-
Big
constexpr
update allows cpp_int and float128 arithmetic to be fullyconstexpr
with gcc and clang 9 or later, or any compiler supportingstd::is_constant_evaluated()
. -
Fix bug in variable precision mpf_float which causes it to go into a tailspin trying to select the correct precision - see https://github.com/boostorg/multiprecision/issues/164.
-
-
Outcome:
-
Enhancements:
-
Standalone outcome is now
make install
-able, and cmakefind_package()
can find it. Note that you must separately install andfind_package()
Outcome's dependency, quickcpplib, elsefind_package()
of Outcome will fail. -
The git submodule mechanism used by standalone Outcome of specifying dependent libraries has been replaced with a cmake superbuild of dependencies mechanism instead. Upon cmake configure, an internal copy of quickcpplib will be git cloned, built and installed into the build directory from where an internal
find_package()
uses it. This breaks the use of the unconfigured Outcome repo as an implementation of Outcome, one must now do one of: 1. Add Outcome as subdirectory to cmake build. 2. Use cmake superbuild (i.e.ExternalProject_Add()
) to build and install Outcome into a local installation. 3. Use one of the single header editions. -
For standalone Outcome, the current compiler is now checked for whether it will compile code containing C++ Concepts, and if it does, all cmake consumers of Outcome will enable C++ Concepts. Set the cmake variable
CXX_CONCEPTS_FLAGS
to an empty string to prevent auto detection and enabling of C++ Concepts support occurring. -
OUTCOME_TRY
operation now hints to the compiler that operation will be successful. P1886 Error speed benchmarking showed that there is considerable gain in very small functions by hinting to the compiler whether the expression is expected to be successful or not.OUTCOME_TRY
previously did not hint to the compiler at all, but now it does. A new suite of macrosOUTCOME_TRY_FAILURE_LIKELY
hint to the compiler that failure is expected. If you wish to return to the previously unhinted behaviour, defineOUTCOME_TRY_LIKELY(expr)
to(!!expr)
. -
#199 Support for C++ Coroutines has been added. This comes in two parts, firstly there is now an
OUTCOME_CO_TRY()
operation suitable for performing theTRY
operation from within a C++ Coroutine. Secondly, in the headeroutcome/coroutine_support.hpp
there are implementations ofeager<OutcomeType>
andlazy<OutcomeType>
which let you more naturally and efficiently usebasic_result
orbasic_outcome
from within C++ Coroutines -- specifically, if the result or outcome will construct from an exception pointer, exceptions thrown in the coroutine return an errored or excepted result with the thrown exception instead of throwing the exception through the coroutine machinery (which in current compilers, has a high likelihood of blowing up the program). Botheager<T>
andlazy<T>
can accept anyT
as well. Both have been tested and found working on VS2019 and clang 9. -
#210
make_error_code()
andmake_exception_ptr()
are now additionally considered for compatible copy and move conversions forbasic_result<>
. This lets you construct abasic_result<T, E>
into abasic_result<T, error_code>
, whereE
is a custom type which has implemented the ADL discovered free functionerror_code make_error_code(E)
, but is otherwise unrelated toerror_code
. The same availability applies forexception_ptr
withmake_exception_ptr()
being the ADL discovered free function.basic_outcome<>
has less support for this thanbasic_result<>
in order to keep constructor count down, but it will accept via this mechanism conversions frombasic_result<>
andfailure_type<>
.
-
-
Bug fixes:
-
#184 The detection of
[[nodiscard]]
support in the compiler was very mildly broken.
-
-
-
PolyCollection:
-
Maintenance work.
-
-
Preprocessor:
-
Topic added which discusses emptiness
-
Support for the C++20
__VA_OPT__
construct-
BOOST_PP_VARIADIC_HAS_OPT
whether__VA_OPT__
is supported at the C++20 level -
BOOST_PP_CHECK_EMPTY
test for emptiness using__VA_OPT__
at the C++20 level -
BOOST_PP_VA_OPT
more flexible alternative to__VA_OPT__
at the C++20 level
-
-
-
Smart Pointers:
-
Implemented
allocate_unique
for scalars and arrays. (Glen Fernandes)
-
-
Test:
-
Boost.test v3.12 see the Changes log for more details.
-
New feature:
-
Support for C++17
std::string_view
has been added. -
Better diagnostic on
boost::exception
and no rtti mode (thanks to Mikhail Pilin / [pull_request 234])
-
-
-
VMD:
-
BOOST_VMD_IS_EMPTY
updated to use__VA_OPT__
at the C++20 level has 100% reliability
-
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
-
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, 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
-
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
-
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 and Michael Caisse managed this release.