December 10, 2019
Dependencies
There were 4 dependencies added (in 3 libraries) and 8 dependencies removed (in 7 libraries) this release.
| Platform | File | SHA256 Hash | |
|---|---|---|---|
| Unix | boost_1_72_0.tar.bz2 | 59c9b274bc451cf91a9ba1dd2c7fdcaf5d60b1b3aa83f2c9fa143417cc660722 59c9b274bc....17cc660722 59c9b....60722 | |
| boost_1_72_0.tar.gz | c66e88d5786f2ca4dbebb14e06b566fb642a1a6947ad8cc9091f9f445134143f c66e88d578....445134143f c66e8....4143f | ||
| Windows | boost_1_72_0.7z | 247a91dd7e4d9dd3c4b954b532fbc167ba62dc15ab834e5ad893d7c3f9eb5f0f 247a91dd7e....c3f9eb5f0f 247a9....b5f0f | |
| boost_1_72_0.zip | 8c20440aaba21dd963c0f7149517445f50c62ce4eb689df2b5544cc89e6e621e 8c20440aab....c89e6e621e 8c204....e621e | ||
| Windows (Binary) | boost_1_72_0-bin-msvc-all-32-64.7z | 45cf60854ec3b1880bc57ef40427d4e67493ed2ccfabf2a6b30ca0a54dc9f6e4 45cf60854e....a54dc9f6e4 45cf6....9f6e4 | |
| boost_1_72_0-msvc-10.0-32.exe | 9bcc0e073760c1ccacb4c24c2338c6c9eb89a4293b52dd10a2e0b7dc4188beb5 9bcc0e0737....dc4188beb5 9bcc0....8beb5 | ||
| boost_1_72_0-msvc-10.0-64.exe | b834d8d6c249673f1f6b7e8cb898814cd5385a8e03eb23f3ab87953c6db05fe1 b834d8d6c2....3c6db05fe1 b834d....05fe1 | ||
| boost_1_72_0-msvc-11.0-32.exe | 91556124eaec62729818f5a9604e4485a6df7b4899b95c6555ffa1def060b7b5 91556124ea....def060b7b5 91556....0b7b5 | ||
| boost_1_72_0-msvc-11.0-64.exe | 9bdcb365a1ce9301eae499eff3cdb62f7ea57f15b4afe8fd2ccb0ab83fe7b5ac 9bdcb365a1....b83fe7b5ac 9bdcb....7b5ac | ||
| boost_1_72_0-msvc-12.0-32.exe | 0477f7d1326591c864f00cd23e5f056425c104ea875d15cf5d00d47458deabd8 0477f7d132....7458deabd8 0477f....eabd8 | ||
| boost_1_72_0-msvc-12.0-64.exe | 71f02c8b1b44afdf82e0a847ae59b478dd5e6006d738e97d6d7156d0315188fe 71f02c8b1b....d0315188fe 71f02....188fe | ||
| boost_1_72_0-msvc-14.0-32.exe | c377d7828ea88b2b0eea5c61a22737a41e8480ed437ad2438c66c17089ed724f c377d7828e....7089ed724f c377d....d724f | ||
| boost_1_72_0-msvc-14.0-64.exe | e22cdab950265e96d170b8846325ac536a6a3c4640a77329f9119654e974a57d e22cdab950....54e974a57d e22cd....4a57d | ||
| boost_1_72_0-msvc-14.1-32.exe | 87e6381bc79edd33ae381698859a5b23d73ae441ee468e7bc4464e474622e933 87e6381bc7....474622e933 87e63....2e933 | ||
| boost_1_72_0-msvc-14.1-64.exe | e849213ad47481873196f26f0cd068eae19b4caf7dde32a2ad540625b4a2b5c7 e849213ad4....25b4a2b5c7 e8492....2b5c7 | ||
| boost_1_72_0-msvc-14.2-32.exe | 811fa32a8e1f6a4fbe466a158b636e21e5c763929b3eeb2949166ef71c83d660 811fa32a8e....f71c83d660 811fa....3d660 | ||
| boost_1_72_0-msvc-14.2-64.exe | 51ec9fae9a2953106052641204918f39e403fd088bbf440e18744e8d5e2ee173 51ec9fae9a....8d5e2ee173 51ec9....ee173 | ||
Version 1.72.0
December 11th, 2019 18:06 GMT
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.
-
Changed the
-
Atomic:
-
Added a workaround for
__float128not being considered as a floating point type by some versions of libstdc++. - Improved compatibility with clang-win compiler.
-
Added a workaround for
-
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.
-
Circular Buffer:
-
Fix issue #29:
max_size()now takes the allocator'smax_size()into account. (Glen Fernandes)
-
Fix issue #29:
-
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
-
Made
-
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)
-
Extracted
-
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
-
Increasing limits for C++03 compilers through
-
Glen Fernandes rewrote the implementations of
-
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
convolve_1din Numeric extension for convenient use ofconvolve_rowsandconvolve_cols(PR#347) and PR#367). -
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).
-
Move all tests, core features and extensions, inside
- Removed
-
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.
-
Added
-
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.
-
Big
-
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<>.
-
Standalone outcome is now
-
Bug fixes:
-
#184
The detection of
[[nodiscard]]support in the compiler was very mildly broken.
-
#184
The detection of
-
Enhancements:
-
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)
-
Implemented
-
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])
-
Support for C++17
- Bug fixes and pull requests:
-
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.