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_initiatehelper 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_executorto all I/O object types. -
Changed the initiation function objects to report their associated I/O executor via the nested type
executor_typeand member functionget_executor(). -
Added the
default_completion_tokentrait, giving I/O executor types an associated default completion token type for use with asynchronous operations. This trait is specialised for theuse_awaitablecompletion token, for example, to allow asynchronous operations to be used as follows:co_await socket.async_connect(my_endpoint). -
Added missing
async_initiateto the Windows-specific I/O objects' asynchronous operations. -
Ensured that the executor type is propagated to newly accepted sockets.
-
Changed to require that
Protocolcopy and move operations never throw. -
Changed to require that
Endpointdefault constructor and move operations never throw. -
Added the
noexceptqualifier to protocol accessors. -
Added the
noexceptqualifier 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
__float128not 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_reverseand*_to_*constexpron 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
__int128support toendian_reversewhen available -
Added a convenience header
boost/endian.hpp
-
-
Filesystem:
-
Extracted
filesystem_errortoexception.hpp;file_statusand associated enums and functions tofile_status.hpp;directory_entry,directory_iteratorandrecursive_directory_iteratortodirectory.hpp. -
Deprecated: For backward compatibility
operations.hppstill includes the new headersexception.hpp,file_status.hppanddirectory.hpp, unlessBOOST_FILESYSTEM_NO_DEPRECATEDmacro 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_errorexception 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
utimensatinstead ofutime.utimeis declared obsolete in POSIX.1-2008 and can be disabled e.g. in uClibc-ng. (PR#115) -
directory_iteratoris now left in the end state on memory allocation errors. -
In
directory_iteratoron POSIX systems, support forreaddir/readdir_rhas been reworked to avoid memory allocations fordirentstructures whenreaddiris used. This reduces memory consumption and eliminates the possibility of buffer overruns in case ifreaddirproduces a very long directory name. -
On Windows, use Boost.WinAPI to select the target Windows version.
-
New: Added
directory_optionsenum, which reflects the same named enum from C++20. The enum is supported indirectory_iteratorandrecursive_directory_iteratorto customize iteration behavior. In particular, the iterators now support skipping directories that can't be opened due to insufficient permissions. Thesymlink_optionenum is now deprecated and should be replaced withdirectory_options. -
By default,
recursive_directory_iteratoris now reset to the end state in case of errors, as required by C++20. (#112) -
New: Added
directory_options::pop_on_erroroption, which configuresrecursive_directory_iteratorso 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_symlinksoption, which configuresrecursive_directory_iteratorso that it doesn't follow dangling directory symlinks and continues iteration instead of reporting an error. -
Deprecated: The following members of
recursive_directory_iteratorare 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_relativein 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
factoryandvalue_factoryto 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_tin place ofvoidthroughBOOST_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_2dandkernel_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_boundaryin 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_constructiblespecializations (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.hppandboost/math/tools/bivariate_statistics.hpp, have been deprecated in favor ofboost/math/statistics/univariate_statistics.hppandboost/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
constexprupdate allows cpp_int and float128 arithmetic to be fullyconstexprwith 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_FLAGSto an empty string to prevent auto detection and enabling of C++ Concepts support occurring. -
OUTCOME_TRYoperation 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_TRYpreviously did not hint to the compiler at all, but now it does. A new suite of macrosOUTCOME_TRY_FAILURE_LIKELYhint 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 theTRYoperation from within a C++ Coroutine. Secondly, in the headeroutcome/coroutine_support.hppthere are implementations ofeager<OutcomeType>andlazy<OutcomeType>which let you more naturally and efficiently usebasic_resultorbasic_outcomefrom 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 anyTas 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>, whereEis 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_ptrwithmake_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_OPTwhether__VA_OPT__is supported at the C++20 level -
BOOST_PP_CHECK_EMPTYtest for emptiness using__VA_OPT__at the C++20 level -
BOOST_PP_VA_OPTmore flexible alternative to__VA_OPT__at the C++20 level
-
-
-
Smart Pointers:
-
Implemented
allocate_uniquefor 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_viewhas been added. -
Better diagnostic on
boost::exceptionand no rtti mode (thanks to Mikhail Pilin / [pull_request 234])
-
-
-
VMD:
-
BOOST_VMD_IS_EMPTYupdated 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.
