Skip to content

v2.1.5 Boost 1.75 release

Compare
Choose a tag to compare
@ned14 ned14 released this 11 Jan 08:46
· 273 commits to develop since this release

v2.1.5 11th December 2020 (Boost 1.75) [release]

THIS IS THE FINAL RELEASE OF OUTCOME V2.1, FROM NOW ON IT IS OUTCOME V2.2

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.

  • #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.