Subject: CVS commit: pkgsrc
From: Adam Ciarcinski
Date: 2020-01-12 11:10:04
Message id: 20200112101005.04391FBF4@cvs.NetBSD.org

Log Message:
boost: updated to 1.72.0

Version 1.72.0

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 function get_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 the use_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.

Circular Buffer:
Fix: max_size() now takes the allocator's max_size() into account. (Glen Fernandes)

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 to unsigned char*
Added __int128 support to endian_reverse when available
Added a convenience header boost/endian.hpp

Filesystem:
Extracted filesystem_error to exception.hpp; file_status and associated enums \ 
and functions to file_status.hpp; directory_entry, directory_iterator and \ 
recursive_directory_iterator to directory.hpp.
Deprecated: For backward compatibility operations.hpp still includes the new \ 
headers exception.hpp, file_status.hpp and directory.hpp, unless \ 
BOOST_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 include filesystem.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 of utime. utime is declared \ 
obsolete in POSIX.1-2008 and can be disabled e.g. in uClibc-ng.
directory_iterator is now left in the end state on memory allocation errors.
In directory_iterator on POSIX systems, support for readdir/readdir_r has been \ 
reworked to avoid memory allocations for dirent structures when readdir is used. \ 
This reduces memory consumption and eliminates the possibility of buffer \ 
overruns in case if readdir 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 in directory_iterator and \ 
recursive_directory_iterator to customize iteration behavior. In particular, the \ 
iterators now support skipping directories that can't be opened due to \ 
insufficient permissions. The symlink_option enum is now deprecated and should \ 
be replaced with directory_options.
By default, recursive_directory_iterator is now reset to the end state in case \ 
of errors, as required by C++20.
New: Added directory_options::pop_on_error option, which configures \ 
recursive_directory_iterator so that it attempts to recover from iteration \ 
errors by repeatedly invoking pop() until it succeeds or the end state is \ 
reached.
New: Added directory_options::skip_dangling_symlinks option, which configures \ 
recursive_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 that recursion_pending() \ 
has the opposite meaning compared to no_push_pending() and no_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++17 std::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.

Functional/Factory:
Glen Fernandes rewrote the implementations of factory and value_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 of void through BOOST_FUNCTIONAL_FACTORY_SUPPORT_NONE_T

GIL:
Added
GSoC 2019: Lanczos resampling for image down scaling.
GSoC 2019: Methods for binary thresholding, inverted binary thresholding and \ 
truncation thresholding.
GSoC 2019: Otsu thresholding method.
GSoC 2019: Adaptive thresholding using mean or gaussian-weighted sum of the \ 
neighbourhood area.
GSoC 2019: Harris response calculation (corner detector without non-maximum \ 
filtering).
GSoC 2019: Hessian corner detector.
GSoC 2019: Types for defining 2D kernel, kernel_2d and kernel_2d_fixed, in \ 
Numeric extension.
GSoC 2019: Implementation of 2D convolution as new function convolve_2d.
GSoC 2019: Box filtering using the average filter.
GSoC 2019: Blur function based on normalized mean filter.
GSoC 2019: Sobel and Scharr operators.
GSoC 2019: Median filter to remove noise from image.
Continued adding new test cases and significantly improved overall test coverage.
Documented purpose of cached_location_t.
Function convolve_1d in Numeric extension for convenient use of convolve_rows \ 
and convolve_cols.
Function extend_boundary in Numeric extension to perform image boundary extension.
Project release notes maintained in Markdown file RELEASES.md.

Changed
Move all tests, core features and extensions, inside test/ directory.

Removed
Replace Boost.MPL with Boost.MP11.
Removed use of Boost.TypeTraits.
Dropped support for GCC <= 4.8.
Remove include/boost/gil/version.hpp file as unused.

Fixed
Undetermined value of default-initialized channel and pixel objects.
Undefined behaviour due to std::is_trivially_default_constructible specializations.
Crash when reading PNG files with an invalid header.
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 and \ 
boost/math/tools/bivariate_statistics.hpp, have been deprecated in favor of \ 
boost/math/statistics/univariate_statistics.hpp and \ 
boost/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 fully \ 
constexpr with gcc and clang 9 or later, or any compiler supporting \ 
std::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 cmake find_package() can find \ 
it. Note that you must separately install and find_package() Outcome's \ 
dependency, quickcpplib, else find_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](https://wg21.link/P1886) 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 \ 
macros OUTCOME_TRY_FAILURE_LIKELY hint to the compiler that failure is expected. \ 
If you wish to return to the previously unhinted behaviour, define \ 
OUTCOME_TRY_LIKELY(expr) to (!!expr).
Support for C++ Coroutines has been added. This comes in two parts, firstly \ 
there is now an OUTCOME_CO_TRY() operation suitable for performing the TRY \ 
operation from within a C++ Coroutine. Secondly, in the header \ 
outcome/coroutine_support.hpp there are implementations of \ 
eager<OutcomeType> and lazy<OutcomeType> which let you more \ 
naturally and efficiently use basic_result or basic_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). Both eager<T> and lazy<T> can \ 
accept any T as well. Both have been tested and found working on VS2019 and \ 
clang 9.
make_error_code() and make_exception_ptr() are now additionally considered for \ 
compatible copy and move conversions for basic_result<>. This lets you \ 
construct a basic_result<T, E> into a basic_result<T, error_code>, \ 
where E is a custom type which has implemented the ADL discovered free function \ 
error_code make_error_code(E), but is otherwise unrelated to error_code. The \ 
same availability applies for exception_ptr with make_exception_ptr() being the \ 
ADL discovered free function. basic_outcome<> has less support for this \ 
than basic_result<> in order to keep constructor count down, but it will \ 
accept via this mechanism conversions from basic_result<> and \ 
failure_type<>.

Bug fixes:
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

Files:
RevisionActionfile
1.43modifypkgsrc/devel/boost-build/buildlink3.mk
1.58modifypkgsrc/devel/boost-headers/Makefile
1.46modifypkgsrc/devel/boost-headers/PLIST
1.45modifypkgsrc/devel/boost-headers/buildlink3.mk
1.13modifypkgsrc/devel/boost-jam/Makefile
1.39modifypkgsrc/devel/boost-jam/buildlink3.mk
1.40modifypkgsrc/devel/boost-libs/PLIST
1.51modifypkgsrc/devel/boost-libs/buildlink3.mk
1.4modifypkgsrc/devel/boost-mpi/PLIST
1.7modifypkgsrc/devel/boost-mpi/buildlink3.mk
1.11modifypkgsrc/devel/py-boost/Makefile
1.8modifypkgsrc/devel/py-boost/PLIST
1.16modifypkgsrc/devel/py-boost/buildlink3.mk
1.84modifypkgsrc/meta-pkgs/boost/Makefile.common
1.129modifypkgsrc/meta-pkgs/boost/distinfo
1.4modifypkgsrc/meta-pkgs/boost/patches/patch-boost_test_impl_execution__monitor.ipp