From e50ee3d518e4014e39cb1874c8accbd2a19b51da Mon Sep 17 00:00:00 2001 From: "Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)" Date: Tue, 27 Oct 2020 16:56:19 +0000 Subject: [PATCH] Outcome notes. --- feed/history/boost_1_75_0.qbk | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/feed/history/boost_1_75_0.qbk b/feed/history/boost_1_75_0.qbk index dfa9e205..f64483a0 100644 --- a/feed/history/boost_1_75_0.qbk +++ b/feed/history/boost_1_75_0.qbk @@ -60,6 +60,16 @@ Please keep the list of libraries sorted in lexicographical order. * C++20 fixes for `event_comparison_type`, `vertex_equality_predicate_type`, and `voronoi_predicates`. (Glen Fernandes) +* [phrase library..[@/libs/outcome/ Outcome]:] + * Announcements: + * After a year and three major Boost releases announcing this upcoming change, this is the FINAL RELEASE of the v2.1 branch. From Boost 1.76 onwards, the v2.2 branch becomes the default. This branch has a number of major breaking changes to Outcome v2.1, see the documentation for details. + * Enhancements: + * The ADL discovered event hooks have been replaced with policy-specified event hooks instead. This is due to brittleness (where hooks would quietly self-disable if somebody changed something), compiler bugs (a difference in compiler settings causes the wrong hooks, or some but not all hooks, to get discovered), and end user difficulty in using them at all. The policy-specified event hooks can be told to default to ADL discovered hooks for backwards compatibility: set `OUTCOME_ENABLE_LEGACY_SUPPORT_FOR` to less than `220` to enable emulation. + * Improve configuring `OUTCOME_GCC6_CONCEPT_BOOL`. Older GCCs had boolean based concepts syntax, whereas newer GCCs are standards conforming. However the precise logic of when to use legacy and conforming syntax was not well understood, which caused Outcome to fail to compile depending on what options you pass to GCC. The new logic always uses the legacy syntax if on GCC 8 or older, otherwise we use conforming syntax if and only if GCC is in C++ 20 mode or later. This hopefully will resolve the corner case build failures on GCC. + * Bug fixes: + * Boost.Outcome should now compile with `BOOST_NO_EXCEPTIONS` defined. Thanks to Emil, maintainer of Boost.Exception, making a change for me, Boost.Outcome should now compile with C++ exceptions globally disabled. You won't be able to use `boost::exception_ptr` as it can't be included if C++ exceptions are globally disabled. + * [@https://github.com/ned14/outcome/issues/236 #236] In the Coroutine support the `final_suspend()` was not `noexcept`, despite being required to be so in the C++ 20 standard. This has been fixed, but only if your compiler implements `noop_coroutine`. Additionally, if `noop_coroutine` is available, we use the much more efficient coroutine handle returning variant of `await_suspend()` which should significantly improve codegen and context switching performance. + * [phrase library..[@/libs/preprocessor/ Preprocessor]:] * When variadic data is empty in C++20 mode with __VA_OPT__ support the variadic size has been corrected to be 0. This also means that in this C++20 mode it is now valid to convert to and from empty arrays and lists and variadic data.