Subject: CVS commit: pkgsrc
From: Adam Ciarcinski
Date: 2024-04-17 18:14:02
Message id: 20240417161402.6995AFA2C@cvs.NetBSD.org

Log Message:
boost: updated to 1.85.0

Version 1.85.0

New Libraries
Charconv:
A high quality implementation of <charconv> in C++11, from Matt Borland.
Scope:
A collection of scope guard utilities and a unique_resource wrapper, from Andrey \ 
Semashev.
Updated Libraries
Asio:
Fixed the async_result primary template's concept checking to correctly handle \ 
lvalue-qualified completion signatures.
Fixed some compile errors that could arise when using the bind_allocator, \ 
bind_executor, bind_immediate_executor and bind_cancellation_slot completion \ 
token adapters to adapt each other.
Changed the experimental::ranged_parallel_group operation so that it moves the \ 
completion_order vector when invoking the completion handler.
Fixed some warnings about deprecated implicit copy constructors on \ 
ip::basic_resolver_query, io_context::strand, and coroutine.
Updated the version specification used to initialise Winsock.
Fixed co_spawn to correctly propagate exceptions resulting from cancellation to \ 
the completion handler.
Added calls to std::launder to fix undefined behaviour in awaitable<> \ 
internal storage.
Added missing handling of the file_base::append flag in the Windows \ 
implementation of file support.
Updated the socket and descriptor implementations to add more cases where they \ 
will fall back to fcntl if a call to ioctl fails.
Fixed the boost/asio/experimental/parallel_group.hpp header so that it is \ 
self-contained.
Fixed a compile error that occurred when channels and experimental::coro were \ 
both used in the same translation unit.
Added missing CancellationSlot type requirements to documentation.
Fixed the documentation hyperlinks for the deduced return types of asynchronous \ 
operations' initiating functions.
Other minor documentation updates.
Atomic:
Added support for pause instruction on RISC-V.
Beast:
API Changes
The status code list has been updated to conform with the IANA registry.
Fixes
Unreachable code warning in buffers_cat.hpp.
Connection error handling in websocker_server_awaitable example.
Concurrent calls to async_write in advanced server examples.
zlib name conflicts with minizip.
host string should be updated after SSL_set_tlsext_host_name().
Improvements
asio::associator is specialized for bind_wrapper and bind_front_wrapper.
Add non-allocating overload for error category message function.
Documentation
Specifies when calling http::message::prepare_payload() is optional.
Operations affected by basic_stream::expires_after().
teardown() and async_teardown() are customization points.
Moving or copying http::serializer after first usage is undefined behaviour.
websocket::permessage_deflate should be configured before performing the \ 
WebSocket handshake.
bytes_transferred in http reads operations reports the number of bytes consumed \ 
by the HTTP parser.
Acknowledgements
Emile Cormier, JohannesWilde, yhzx233
Bimap:
Fixed heterogeneous lookup for side collections
Bind:
C++03 is no longer supported; a C++11 compiler is required. (This includes GCC \ 
4.7 or later, and MSVC 12.0 (VS 2013) or later.)
Conversion:
Removed outdated mentions of boost::lexical_cast that is not part of the library \ 
any more. Thanks to Danil Sidoruk for the PR
Core:
Added a new boost/core/functor.hpp header with a functor class template for \ 
wrapping a raw function into a function object class.
Changed null_deleter, fclose_deleter and checked deleter definitions so that \ 
they don't bring namespace boost into argument-dependent lookup. Users may need \ 
to either explicitly qualify the namespace of the called function or add a \ 
using-declaration.
Filesystem:
path::generic_path and path::generic_string methods now remove duplicate \ 
directory separators in the returned paths.
v4: path::generic_path, path::generic_string, path::make_preferred and \ 
path::lexically_normal avoid converting between backslashes and forward slashes \ 
in path root names. For example, on Windows, \ 
path("\\\\\\\\?\\\\c:\\\\foo").generic_string() now returns \ 
"\\?\c:/foo" instead of "//?/c:/foo". Similarly, \ 
path("\\\\\\\\host/share/foo/..").lexically_normal() now returns \ 
"\\host\share".
v4: equivalent now indicates error if either one of the paths doesn't exist.
v4: absolute now returns a path with a trailing directory separator when the \ 
input path has an empty relative_path().
Added a unique_path overload taking a single error_code& ec argument. The \ 
overload generates a unique path using the default path model.
weakly_canonical now produces an absolute path if the input path is relative and \ 
contains no elements that exist in the filesystem.
Added a new copy_options::ignore_attribute_errors option for copy_file and copy \ 
operations. The new option allows to ignore possible errors while copying file \ 
attributes.
On Linux, copy_file backends based on sendfile and copy_file_range system calls \ 
will attempt to preallocate storage for the target file. This may reduce \ 
filesystem fragmentation and provide early error indication if there is not \ 
enough free space. Not all filesystems support this feature; file copying \ 
proceeds if storage preallocation is not supported.
On POSIX systems that support fdopendir, openat and related APIs defined in \ 
POSIX.1-2008, as well as on Windows, recursive_directory_iterator now uses file \ 
descriptors/handles instead of paths to query the file statuses and open nested \ 
directories during iteration. This makes directory iteration more resilient to \ 
concurrent modifications of the filesystem.
Removed APIs that were previously declared deprecated. In particular, path and \ 
recursive_directory_iterator member functions, is_regular, copy_directory, \ 
symbolic_link_exists, complete, copy_option, symlink_option, as well as \ 
boost/filesystem/convenience.hpp and boost/filesystem/path_traits.hpp headers \ 
were removed. Possible replacements for the removed components are mentioned in \ 
the documentation.
Support for path construction, assignment and appending from container types \ 
(e.g. std::vector<char>) is now disabled by default. Users can still \ 
enable this functionality by defining BOOST_FILESYSTEM_DEPRECATED. This \ 
functionality remains deprecated and will be completely removed in a future \ 
release.
Function:
C++03 is no longer supported; a C++11 compiler is required. (This includes GCC \ 
4.7 or later, and MSVC 12.0 (VS 2013) or later.)
Geometry:
Improvements
Use if constexpr macro instead of condition macro
Pass strategy to sort by side
Add cmake files for clang/mac/darwin/arm64
Solved issues
Fix invalid set operations for CCW polygons
Fix compilation error with CUDA NVCC compiler
Fix buffer of linestring returning incorrect inner polygon
Fix union operation perturbing a point and returning wrong result
Fix union producing self intersections
Fix buffer issue by setting turns in closed clusters as non traversable
Fix compilation of converter and is_base_of
Various fixes of errors and warnings
Iterator:
Support for C++03 is deprecated and will be removed in a future release.
JSON:
Boost.Endian is now used to deal with endianness.
Aliases to Boost.System and Boost.Container components are deprecated and will \ 
be completely removed in 1.87.0.
Conversion of described classes supports private members.
Rvalue reference overload for visit.
Add conversion support for path-like types.
Parsing into described classes correctly considers inherited members.
Conversion of self-referential sequences is disabled.
Fixed reference handling in visit.
LEAF:
New API for transporting of error objects and exceptions between threads: \ 
try_capture_all.
result<T> able to transport exceptions captured via try_capture_all.
result<T> transporting dynamically captured error objects with improved \ 
efficiency.
Old make_shared_context/capture APIs are deprecated, will be removed in the next \ 
release.
Removed support for transporting of dynamicaly captured error objects in exceptions.
LexicalCast:
Significant rewrite of the internal logic to separate optimized and C++ Standard \ 
Library IO-based streams:
C++ Standard Library based streams now constructed in less cases leading to \ 
better performance;
less template instantiations and simpler code;
always use std::char_traits (do not use custom traits from input/output types as \ 
it leads to linktime or runtime errors);
fixed missuse of forward declared boost::array
support for volatile input types was dropped, following the C++ Standard Library \ 
trend.
Optimized conversions from std::basic_string_view and boost::basic_string_view.
Dropped dependency on Boost.NumericConversion and Boost.MPL. Fixed some cases of \ 
converting floting point types to arithmetics.
The library now compiles and works fine with -fno-sanitize-recover=integer.
Locale:
Fix linker issues due to missing typeinfo for char8_t in C++20 mode
Fix IConv compile flags when using ICU that has a bundled IConv
collator now throws on construction, if at all, as documented
collator no longer derives from std::collator to avoid possible type confusing \ 
when it isn't available for the current backend
Throw an exception when a faulty IConv library is detected (e.g. on some MacOS \ 
versions) instead of looping indefinitely
Reduce resolution of date_time to seconds as milliseconds where not easily \ 
available causing confusion
Math:
Added a new collection of optimization algorithms:
Differential Evolution
JSO
Random Search
CMA-ES
Fix Divide by 0 warning in NCF survival function
Fix constexpr depth limits of ccmath::floor/ceil fail for large arguments
Improve accuracy of quartic_roots
Fix cstdfloat numeric limits detection macro for libstdc++14
Fix for MSVC UCRT defining _Complex_I in complex.h when using C++14
Improve cstdfloat iostream
Fix redefnition of Boost.Config macros when using standalone mode in a \ 
non-standalone environment
Significant improvements to code coverage with associated bug fixes
MSM:
Major Update. Backend update (back11). Requires C++ 11. The documentation now \ 
uses it as default.
Big new feature. New front-end (PlantUML). Requires C++ 20
Various Bugfixes (compiler errors and warnings, priority of deferred events)
Multi-index Containers:
Fixed documentation errors.
Multiprecision:
Fix deprecation warnings from C++23 <limits>
Fix cpp_bin_float for small bit counts
Fix -Wpessimizing-move
Add covecov runs
Reduce truncation in cpp_dec_float multiplication
Fix complex_adaptor to match precision requirements
Fix for breaking changes in tommath
Fix for types that can be converted to number participting in arithmetic \ 
operator overloads
MySQL:
Breaking change: Boost.MySQL now requires linking to the new Boost.Charconv \ 
compiled library. This addresses a locale-dependency problem, increases \ 
efficiency, and powers the new client-side SQL formatting feature.
Added experimental support for connection pools, which allows re-using sessions \ 
and provides built-in reconnection and error handling.
Added experimental support for type-erased connections (any_connection class). \ 
any_connection is not a template and features simpler connection establishment \ 
and reconnection semantics.
Added experimental support for client-side SQL formatting functions (format_sql \ 
and format_sql_to). These allow securely composing queries client-side, which \ 
enables patterns like batch inserts, dynamic filters or PATCH-like updates.
Fixed a performance issue affecting close_statement and async_close_statement \ 
that could cause significant delays in application code.
Added support for building with BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT.
The deprecated execution interface (connection::query, connection::start_query, \ 
connection::execute_statement, connection::start_statement_execution and their \ 
async counterparts) now triggers warnings, as it's scheduled for removal in \ 
Boost 1.86.
Fixed a bug that caused some error messages to be truncated.
Warning cleanup. Builds are now clean from warnings when building with -Wall and \ 
-Wextra.
All field_view constructors are now stable.
The library internals have been rewritten using a sans-io approach to reduce \ 
complexity.
Odeint:
Breaking change: The library now explicitly requires C++14 instead of implicitly \ 
by including Boost.Math
Fix compatibility with Thrust 1.10.0
Removed C++03 Boost components:
Array
Bind
Function
Static_assert
PFR:
boost::pfr::get_name now can work with local types on some compilers. Thanks to \ 
Bela Schaum for the PR
Removed unused implementation details. Thanks to Denis Mikhailov for the PR
Allow throwing exceptions from boost::pfr::structure_to_tuple. Thanks to Denis \ 
Mikhailov for the bug report.
Field reflection trick is now described in the docs.
Random:
Added splitmix64 PRNG
System:
C++03 is no longer supported; a C++11 compiler is required. (This includes GCC \ 
4.8 or later, and MSVC 14.0 (VS 2015) or later.)
The deprecated header boost/system/cygwin_error.hpp has been removed.
The original and obsolete (32 bit) MinGW is no longer supported. MinGW-w64 (both \ 
64 and 32 bit) is still supported.
operator& now works for result<void> (by way of taking a nullary function.)
Added operator|= for result.
Stacktrace:
Big new feature: stacktrace from arbitrary exception. On some POSIX platforms \ 
std::stacktrace::from_current_exception() now returns the stacktrace of the \ 
current exception object as if the stacktrace was captures at the point of \ 
throwing the exception. Many thanks to Andrei Nekrashevich for prototyping the \ 
idea in libsfe.
Fixed memory consumption on Windows with boost_stacktrace_windbg.
Fixed library build with non hidden visibility.
Added a separate section on async signal safety to the docs.
STLInterfaces:
Change the behavior of iterator_interface for input iterators in C++20 and \ 
later, to more closely follow the C++20 concepts.
Remove hidden friends from iterator_interface to fix errors about concepts being \ 
redefined with different constraints.
Add a new v3 inline namespace, containing a new iterator_interface based on \ 
deducing this instead of CRTP (C++23 and later).
Add an rvalue-qualified overload of closure::operator(), to prevent dangling \ 
temporaries.
Test:
Respect library-spcific _NO_LIB macros
Supress MSVC C4702 from __builtin_unreachable() on intentionally unreachable code
Fix boost::function streaming error
Unordered:
Optimized emplace() for a value_type or init_type (if applicable) argument to \ 
bypass creating an intermediate object. The argument is already the same type as \ 
the would-be intermediate object.
Optimized emplace() for k,v arguments on map containers to delay constructing \ 
the object until it is certain that an element should be inserted. This \ 
optimization happens when the map’s key_type is move constructible or when the \ 
k argument is a key_type.
Fixed support for allocators with explicit copy constructors
Fixed bug in the const version of unordered_multimap::find(k, hash, eq)
Variant:
Removed more of the pre-C++11 macro and workarounds.
Wave:
Fixed bugs:
Emitted pragmas lack terminating newline
YYMARKER not updated when fill called on BOOST_WAVE_BSIZE boundary
Updated Tools
Build:
Includes release of B2 version 5.1.0.

Files:
RevisionActionfile
1.35modifypkgsrc/devel/boost-build/PLIST
1.54modifypkgsrc/devel/boost-build/buildlink3.mk
1.56modifypkgsrc/devel/boost-headers/PLIST
1.55modifypkgsrc/devel/boost-headers/buildlink3.mk
1.45modifypkgsrc/devel/boost-libs/PLIST
1.65modifypkgsrc/devel/boost-libs/buildlink3.mk
1.4modifypkgsrc/devel/boost-mpi/Makefile
1.18modifypkgsrc/devel/boost-mpi/buildlink3.mk
1.26modifypkgsrc/devel/py-boost/buildlink3.mk
1.100modifypkgsrc/meta-pkgs/boost/Makefile.common
1.147modifypkgsrc/meta-pkgs/boost/distinfo
1.1addpkgsrc/meta-pkgs/boost/patches/patch-libs_filesystem_src_directory.cpp