Imported Upstream version 1.72.0
[platform/upstream/boost.git] / libs / outcome / doc / html / changelog.html
index 6f73682..1370f88 100644 (file)
     <a accesskey="h" href="./index.html"><img src="./images/home.png" alt="Home"></a><a accesskey="n" href="./history.html"><img src="./images/next.png" alt="Next"></a></div><div id="content">
 
   <div class="titlepage"><div><div><h1 style="clear: both">Changelog</h1></div></div></div>
+  <div class="toc"><dl class="toc">
+<dt>
+<dd><dl>
+<dt><a href="#v2-1-2-11th-december-2019-boost-1-72-release-https-github-com-ned14-outcome-releases-tag-v2-1-2">v2.1.2 11th December 2019 (Boost 1.72) <a href="https://github.com/ned14/outcome/releases/tag/v2.1.2">[release]</a></a>
+<dd><dl>
+<dt><a href="#enhancements">Enhancements:</a></dt>
+<dt><a href="#bug-fixes">Bug fixes:</a></dt>
+</dl></dd></dt>
+<dt><a href="#v2-1-1-19th-august-2019-boost-1-71-release-https-github-com-ned14-outcome-releases-tag-v2-1-1">v2.1.1 19th August 2019 (Boost 1.71) <a href="https://github.com/ned14/outcome/releases/tag/v2.1.1">[release]</a></a>
+<dd><dl>
+<dt><a href="#enhancements-1">Enhancements:</a></dt>
+<dt><a href="#bug-fixes-1">Bug fixes:</a></dt>
+</dl></dd></dt>
+<dt><a href="#v2-1-12th-apr-2019-boost-1-70-release-https-github-com-ned14-outcome-releases-tag-v2-1">v2.1 12th Apr 2019 (Boost 1.70) <a href="https://github.com/ned14/outcome/releases/tag/v2.1">[release]</a></a></dt>
+<dt><a href="#v2-0-18th-jan-2018-release-https-github-com-ned14-outcome-releases-tag-v2-0-boost-peer-review">v2.0 18th Jan 2018 <a href="https://github.com/ned14/outcome/releases/tag/v2.0-boost-peer-review">[release]</a></a></dt>
+</dl></dd></dt>
+</dl>
+  </div>
 
 
 <hr />
 
-<h2 id="v2-1-1-xxth-july-2019-boost-1-71-release-https-github-com-ned14-outcome-releases-tag-v2-1-1">v2.1.1 XXth July 2019 (Boost 1.71) <a href="https://github.com/ned14/outcome/releases/tag/v2.1.1">[release]</a></h2>
+<h2 id="v2-1-2-11th-december-2019-boost-1-72-release-https-github-com-ned14-outcome-releases-tag-v2-1-2">v2.1.2 11th December 2019 (Boost 1.72) <a href="https://github.com/ned14/outcome/releases/tag/v2.1.2">[release]</a></h2>
 
 <h3 id="enhancements">Enhancements:</h3>
 
 <dl>
+<dt>Improved compatibility with cmake tooling</dt>
+<dd>Standalone outcome is now <code>make install</code>-able, and cmake <code>find_package()</code> can find it.
+Note that you must separately install and <code>find_package()</code> Outcome&rsquo;s dependency, quickcpplib,
+else <code>find_package()</code> of Outcome will fail.</dd>
+<dt>Non-permissive parsing is now default in Visual Studio</dt>
+<dd>The default targets in standalone Outcome&rsquo;s cmake now enable non-permissive parsing.
+This was required partially because VS2019 16.3&rsquo;s quite buggy Concepts implementation is
+unusuable in permissive parsing mode. Even then, lazy ADL two phase lookup is broken
+in VS2019 16.3 with <code>/std:latest</code>, you may wish to use an earlier language standard.</dd>
+<dt><strong>Breaking change!</strong></dt>
+<dd>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 <code>find_package()</code> uses it. This breaks the use of
+the unconfigured Outcome repo as an implementation of Outcome, one must now do one of:
+
+<ol>
+<li>Add Outcome as subdirectory to cmake build.</li>
+<li>Use cmake superbuild (i.e. <code>ExternalProject_Add()</code>) to build and install Outcome into
+a local installation.</li>
+<li>Use one of the single header editions.</li>
+</ol></dd>
+<dt><strong>Breaking change!</strong></dt>
+<dd>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 <code>BOOST_OUTCOME_C_CONCEPTS_FLAGS</code> to an empty string to prevent
+auto detection and enabling of C++ Concepts support occurring.</dd>
+<dt><code>BOOST_OUTCOME_TRY</code> operation now hints to the compiler that operation will be successful</dt>
+<dd><a href="https://wg21.link/P1886">P1886 <em>Error speed benchmarking</em></a> 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. <code>BOOST_OUTCOME_TRY</code> previously did not hint to the compiler
+at all, but now it does. A new suite of macros <code>BOOST_OUTCOME_TRY_FAILURE_LIKELY</code> hint to the
+compiler that failure is expected. If you wish to return to the previously unhinted
+behaviour, define <code>BOOST_OUTCOME_TRY_LIKELY(expr)</code> to <code>(!!expr)</code>.</dd>
+<dt><a href="https://github.com/ned14/outcome/issues/199">#199</a></dt>
+<dd>Support for C++ Coroutines has been added. This comes in two parts, firstly there is
+now an <code>BOOST_OUTCOME_CO_TRY()</code> operation suitable for performing the <code>TRY</code> operation from
+within a C++ Coroutine. Secondly, in the header <code>outcome/coroutine_support.hpp</code> there are
+implementations of <code>eager&lt;OutcomeType&gt;</code> and <code>lazy&lt;OutcomeType&gt;</code> which let you more
+naturally and efficiently use <code>basic_result</code> or <code>basic_outcome</code> from within C++
+Coroutines &ndash; 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
+<code>eager&lt;T&gt;</code> and <code>lazy&lt;T&gt;</code> can accept any <code>T</code> as well. Both have been tested and found
+working on VS2019 and clang 9.</dd>
+<dt><a href="https://github.com/ned14/outcome/issues/210">#210</a></dt>
+<dd><code>make_error_code()</code> and <code>make_exception_ptr()</code> are now additionally considered for
+compatible copy and move conversions for <code>basic_result&lt;&gt;</code>. This lets you construct
+a <code>basic_result&lt;T, E&gt;</code> into a <code>basic_result&lt;T, error_code&gt;</code>, where <code>E</code> is a
+custom type which has implemented the ADL discovered free function
+<code>error_code make_error_code(E)</code>, but is otherwise unrelated to <code>error_code</code>.
+The same availability applies for <code>exception_ptr</code> with <code>make_exception_ptr()</code> being
+the ADL discovered free function. <code>basic_outcome&lt;&gt;</code> has less support for this than
+<code>basic_result&lt;&gt;</code> in order to keep constructor count down, but it will accept via
+this mechanism conversions from <code>basic_result&lt;&gt;</code> and <code>failure_type&lt;&gt;</code>.</dd>
+</dl>
+
+<h3 id="bug-fixes">Bug fixes:</h3>
+
+<dl>
+<dt><a href="https://github.com/ned14/outcome/issues/207">#184</a></dt>
+<dd>The detection of <code>[[nodiscard]]</code> support in the compiler was very mildly broken.</dd>
+</dl>
+
+<hr />
+
+<h2 id="v2-1-1-19th-august-2019-boost-1-71-release-https-github-com-ned14-outcome-releases-tag-v2-1-1">v2.1.1 19th August 2019 (Boost 1.71) <a href="https://github.com/ned14/outcome/releases/tag/v2.1.1">[release]</a></h2>
+
+<h3 id="enhancements-1">Enhancements:</h3>
+
+<dl>
 <dt><a href="https://github.com/ned14/outcome/issues/184">#184</a></dt>
 <dd>As per request from Boost release managers, relocated <code>version.hpp</code> and
 <code>revision.hpp</code> into detail, and added the Boost licence boilerplate to the top
@@ -41,7 +131,7 @@ a recipe describing how to add in support for foreign input types.</dd>
 <dd>Added a separate <code>motivation/plug_error_code</code> specifically for Boost.</dd>
 </dl>
 
-<h3 id="bug-fixes">Bug fixes:</h3>
+<h3 id="bug-fixes-1">Bug fixes:</h3>
 
 <dl>
 <dt>-</dt>
@@ -204,7 +294,7 @@ and Boost.Exception (these are <code>result.hpp</code> and <code>outcome.hpp</co
 
 
 
-        </div><p><small>Last revised: June 25, 2019 at 17:01:21 &#43;0100</small></p>
+        </div><p><small>Last revised: November 15, 2019 at 15:43:29 UTC</small></p>
 <hr>
 <div class="spirit-nav">
 <a accesskey="p" href="./videos.html"><img src="./images/prev.png" alt="Prev"></a>