Path to this page:
Subject: CVS commit: pkgsrc
From: Adam Ciarcinski
Date: 2024-04-17 18:14:02
Message id: [email protected]
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: