Path to this page:
Subject: CVS commit: pkgsrc
From: Adam Ciarcinski
Date: 2020-05-06 15:33:53
Message id: 20200506133353.DFB47FB27@cvs.NetBSD.org
Log Message:
boost: updated to 1.73.0
1.73.0:
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.
New Libraries
-------------
Nowide:
Standard library functions with UTF-8 API on Windows, from Artyom Beilis.
StaticString:
A dynamically resizable string of characters with compile-time fixed capacity \
and contiguous embedded storage, from Vinnie Falco and Krystian Stasiowski
Updated Libraries
-----------------
Align:
* Update aligned_alloc to support older mingw32.
Any:
* Speedup compilation by not including <algorithm>.
* Maintenance work, including CI hardening.
Asio:
* Fixed compatibility with C++20 concept syntax.
* Marked the POSIX descriptor classes' move constructors as noexcept.
* Added the ssl::host_name_verification class, which is a drop-in replacement \
for ssl::rfc2818_verification. The ssl::rfc2818_verification class has been \
marked as deprecated. As a consequence of this change, SSL support now depends \
on functions that were introduced in OpenSSL 1.0.2.
* Added an ssl::context constructor to take ownership of a native handle.
* Changed C++ language version detection with gcc to use __cplusplus macro.
* Fixed a work counting issue in the asynchronous resolve operation for endpoints.
* Fixed the strand<> converting constructors and assignment operators.
* Ensured that resolvers are restarted correctly after a fork.
* Fixed compatibility with the current NetBSD release.
* Removed spurious handler requirement checks in some async_read overloads.
* Changed the ssl::context class to propagate non-EOF errors from the \
add_certificate_authority function.
* Fixed a Windows-specific thread_pool destructor hang that occurred when the \
pool had an associated I/O object.
* Changed the select reactor to recreate the "self pipe trick" sockets \
on error. This addresses an issue on some versions of Windows, where these \
sockets are discconected after a system sleep.
* Fixed a compile error in the buffered streams due to the lack of reference \
collapsing in C++98.
* Changed the priority_scheduler example to demonstrate calls to shutdown() and \
destroy().
* Removed some unnecessary null pointer checks.
* Changed Windows platform detection to recognise TV titles as Windows apps.
* Added some emscripten compatibility patches.
* Fixed a compile error in the use_awaitable_t::as_default_on function.
* Changed all uses of the boost.bind placeholders to use the boost::placeholders \
namespace.
* Fixed a potential compile error in the async_compose implementation due to \
incorrect overload selection.
* Suppressed some non-virtual destructor warnings.
* Various documentation fixes and improvements.
Assert:
* Added source_location.
Atomic:
* Implemented C++20 atomic_ref. See docs and especially the caveats section.
* Implemented atomic_flag::test operation, which was introduced in C++20.
* atomic<T> should now take into account alignment requirements of T, \
which makes a difference if those requirements are higher than that of the \
internal storage of atomic.
* Added static asserts enforcing the requirements on the value type T used with \
atomic and atomic_ref. This should prohibit invalid types from being used as \
atomics.
* Improved internal lock pool implementation. The pool is larger, and lock \
selection accounts for atomic object alignment, which should reduce the \
potential of thread contention.
* Fixed incorrect x86 code generated for bit_test_and_* operations on 8 and \
16-bit arguments. Other architectures are not affected.
* Fixed a possible unaligned memory access in compare_exchange_* operations, if \
alignment requirements of value_type are less than that of the internal storage \
of atomic.
* boost/atomic/atomic.hpp no longer includes boost/atomic/atomic_flag.hpp and \
boost/atomic/fences.hpp and only defines the boost::atomic class template and \
related typedefs. Include the other headers explicitly or use boost/atomic.hpp \
to include all parts of Boost.Atomic.
* The atomic<T>::storage() accessor and associated \
atomic<T>::storage_type type are deprecated. Instead, users are advised to \
use atomic<T>::value() and atomic<T>::value_type, respectively. \
Users can define BOOST_ATOMIC_SILENCE_STORAGE_DEPRECATION to disable deprecation \
warnings for the time of transition. The deprecated pieces will be removed in a \
future release.
* Removed support for BOOST_ATOMIC_DETAIL_HIGHLIGHT_OP_AND_TEST. This macro was \
used as a helper for transition to the updated returned values of *_and_test \
operations in Boost.Atomic 1.67, which was released 2 years before 1.73.
Beast:
* This is a maintenance update.
* Nested mutable_data_type in Beast dynamic buffers is deprecated.
* 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:
* IBM Z: Fix fcontext routines
* mips64/n64: .align 3
* Use OSPLAT MIPS32/MIPS64 to set different ABI
* Fix non-PIC in RISC-V assembly
Conversion:
* Added boost::polymorphic_downcast for references (thanks to Julien Delacroix \
for the patch).
* Significant docs update.
date_time:
* Support constexpr in c++14 and above
* Make date_time all inline. Users no longer need to link the library for any \
functions. Library remains for build compatibility.
* Deprecate support for legacy io and USE_DATE_TIME_PRE_1_33_FACET_IO macro
* Misc documentation updates and bugfixes.
DLL:
* Fixes and tests for demangling in boost::dll::smart_library
* Make UB sanitizers happy with boost::dll::load_mode::type
* Ceased dependence on MPL improving compile times
* Clang and ICC on Windows fixes and CI support for those platforms
* Maintenance work, including CI hardening and tests improving.
Dynamic Bitset:
* Fixed a portability issue in the definition of the maximum block limit.
Flyweight:
* Maintenance work.
Geometry:
* Improvements
- Missing input combinations in intersection() and introduction of tupled-output.
- Added d3::point_xyz geometry model (thanks to Digvijay Janartha).
* Solved issues
- Incorrect definition of EPSG:3785.
* Bugfixes
- R-tree exception-safety improvement.
- Andoyer inverse formula fixed for close points.
- Fixed dangling reference in distance algorithm.
* Deprecation
- Support for C++03 has been deprecated and Geometry will require C++14 from \
Boost 1.75 onwards.
GIL:
* Added move constructor and move assignment operator to image class
* New member function size() in any_image_view class
* Replace Boost.Test with Boost.LightweightTest as the only test framework used \
in GIL. This also restructured the test/extension/io/ sub-tree and targets in \
related Jamfile-s.
* Removed remaining uses of Boost.MPL
* Renamed all macros using BOOST_GIL_ prefix
* Renamed all CMake configuration options using BOOST_GIL_ prefix
* Removed extension/dynamic_image/reduce.hpp as unused and possibly unfinished. \
An implementation attempt of techniques described in the paper Efficient \
Run-Time Dispatching in Generic Programming with Minimal Code Bloat by Lubomir \
Bourdev, Jaakko Jarvi.
* Removed direct dependency on Boost.MPL, Boost.System and Boost.Test.
* Started removing public macros for compile-time configuration of I/O extension \
tests, i.e. BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES and \
BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES. Instead, if a test target is built, it \
builds all its test cases unconditionally.
* Avoid longjmp interaction during destruction of I/O extension objects.
* Fixed missing alignment default value in constructor of image class.
* Fixed segmentation fault when reading corrupted PNG file.
* Fixed illegal initialization of return values in the old IOv1 interface of I/O \
extension.
Histogram:
* Added crop command to reduce algorithm
* slice command in reduce now works on category axis
* Added count accumulator, can be used to add arbitrary metadata to each cell
* sum algorithm gained a new argument to optionally sum only over inner bins
* Several fixes for bugs in corner cases
* Enhanced documentation
icl:
* Remove references to date_time compiled library.
* Fix forward decl lower and upper less equal.
* Misc bugfixes.
IO:
* Made all the IOS state saver classes non-copyable. (Glen Fernandes)
* Correctly handle error upon first read from the input stream when reading a \
quoted string. (Glen Fernandes)
* Implemented ostream_joiner for delimiter based joining. (Glen Fernandes)
* Relocated ostream_string from the Utility library to the IO library as ostream_put.
* Correctly handle stream width and fill in quoted output. (Glen Fernandes)
* Optimize quoted output to write directly to the stream buffer. (Glen Fernandes)
* Glen Fernandes became the maintainer of the IO library.
LexicalCast:
* Maintenance work, including CI hardening and better workarounds for broken \
standard libraries
Log:
* Default sink used in trivial logging, when no sinks are registered in the \
logging core, now automatically flushes output after each log record
* core::flush now performs a flush on the default sink used for trivial logging, \
when no sinks are registered.
* Added a workaround for some syslog API implementations (e.g. glibc), which do \
not save the application identification string in openlog call. Such \
implementations could access already freed memory on each syslog call, resulting \
in undefined behavior.
* Fixed that log file rotation on a specific day of month (e.g. \
rotation_at_time_point(boost::gregorian::greg_day(1))) could be silently ignored \
and not happen.
* Fixed that text_file_backend::rotate_file could throw if there were no log \
records written yet and target file name pattern was set.
* Ported various components of the library to std::allocator_traits to improve \
compatibility with C++20 allocators.
* Fixed compilation errors when building in MSYS2 Cygwin environment.
Math:
IMPORTANT: C++03 support is now deprecated and will be removed from March 2021.
* Added Cubic Hermite Interpolation.
* Added Modified Akima Interpolation.
* Added PCHIP Interpolation.
* Added Quintic Hermite Interpolation.
* Added entropy to numerous distributions.
* Allow trivial quadrature case where the two end points are equal, and in \
addition allow bounds to be interchanged.
* Fix exp_sinh quadrature to work with complex types over a non-native range.
* Fix miscellaneous compiler warnings in factorial.hpp.
* Use std::chrono rather than boost::chrono in timed pFq calculations.
* Remove much of the old boost::mpl dependencies to improve constexpr support.
Mp11:
* Added mp_unique_if (contributed by Kris Jusiak)
* Added mp_flatten
* Added mp_rotate_left, mp_rotate_right (contributed by Duncan Barber)
* Added mp_compose
* Added mp_power_set
* Added mp_partial_sum
* Added mp_iterate
Multi-index Containers:
* multi_index_container is now AllocatorAware.
* Swapping of internal KeyFromValue, Compare, Hash and Pred objects now selects \
the appropriate swap function between std::swap and ADL candidates, in \
accordance with standard specifications in [swappable.requirements]
* Provided some internal copy constructors and assignment operators whose \
default implicit definition is deprecated in C++11 onwards ([depr.impldec]), \
which was warned about on some compilers.
Multiprecision:
* IMPORTANT: Mark C++03 support as deprecated and due for removal in 2021.
* Big update to cpp_int adds faster Karatsuba and Coomba multiplication routines.
* Fix conversion of gmp_rational to long double and __float128
* Fix up libtommath support to function with the latest libtom releases.
* Fix up some incompatibilities with the latest Intel C++ compiler.
* Fix up constexpr arithmetic support for latest MSVC release.
Outcome:
* Performance of Outcome-based code compiled by clang has been greatly improved. \
The previous implementation of Outcome's status bitfield confused clang's \
optimiser, which caused low quality codegen. Unlike most codegen issues, this \
was noticeably in empirical benchmarks of real world code, as was shown by P1886 \
Error speed benchmarking.
* The safe part of the better_optimisation Outcome v2.2.0 future branch was \
merged to Outcome v2.1.3 which includes a new status bitfield implementation. \
This appears to not confuse clang's optimiser, and clang 9 produces code which \
routinely beats GCC 9's code for various canned use cases.
* Installability is now CI tested per commit. Due to installability of \
standalone Outcome (e.g. make install) breaking itself rather more frequently \
than is ideal, installability is now tested on CI per commit.
* Newer Concepts implementing compilers were unhappy with the early check for \
destructibility of T and E, so removed template constraints, falling back to \
static assert which runs later in the type instantiation sequence.
* A false positive undefined behaviour sanitiser failure in some use cases of \
Experimental Outcome was worked around to avoid the failure message.
PolyCollection:
* Suppressed a potential redundant move warning in boost::poly_collection::for_each.
* Fixed a bug by which elements were copied rather than moved in \
allocator-extended move construction and move assigment between collections with \
non-propagating, unequal allocators.
* Allocator-extended move construction no longer decays to allocator-extended \
copy construction for the legacy version of libstdc++-v3 shipped with GCC 4.8 \
(which can also be used by Clang).
Stacktrace:
* Added documentation on distribution of PDBs
* Fixed msvc-9 build
* Maintenance work, including test fixes fixing typos CI improvements and \
hardening, inspect tool fixes.
Test:
* Boost.test v3.13 see the Changes log for more details.
* New feature: It is now possible to combine tolerance indication, user message \
and collection comparison modifier in a single BOOST_TEST expression. See change \
logs for more details.
ThrowException:
* Added an overload of throw_exception that takes a boost::source_location object.
* NOTE: Projects using BOOST_THROW_EXCEPTION with exceptions disabled will need \
to add a definition of this new overload.
TTI:
* Added introspection of function templates for more recent C++ compilers \
versions from gcc and vc++. as well as all versions of clang. Older versions of \
vc++ before 14.0 and gcc prior to 4.8 may fail.
* Added specific introspection for elements of struct/class, enum, and union \
types, which can be used for more fine-grained introspection than the general \
'type' introspection.
TypeIndex:
* Maintenance work, including CI integration with inspect tool.
Utility:
* The ostream_string facility has moved from the Utility library to the IO \
library as ostream_put.
Variant:
* Removed unused includes
* Fixed zero-as-null-pointer-constat warnings
* Maintenance work, including typo fixes.
Variant2:
* Added support for std::hash, boost::hash.
* variant<T...> is now trivial when all types in T... are trivial. This \
improves performance by enabling it to be passed to, and returned from, \
functions in registers.
WinAPI:
* Headers in boost/detail/winapi are deprecated and will be removed in a future \
release.
* Boost.WinAPI headers no longer include winerror.h. Include \
boost/winapi/error_codes.hpp to get Windows error codes.
Files: