Boost logo

Boost :

Subject: [boost] [outcome] v2.1 progress report part 2
From: Niall Douglas (s_sourceforge_at_[hidden])
Date: 2018-06-04 06:17:10


Currently at the front of the Rapperswil WG21 meeting, and everybody
here keeps asking when will Outcome join Boost, and what will the
compatibility be with P0709 Zero-overhead deterministic exceptions:
Throwing values?

So, just to remind folk, I said a few months ago I am targeting the
December 2018 release after a period of maturation. This turned out to
be highly wise, as a number of interesting bugs turned up - my thanks to
the Microsoft compiler team for finding a particular egregious one
recently, and my apologies for my fix to that breaking other things
which then also had to get fixed. It happens.

I am currently refactoring AFIO, which is proposed as the future C++
standard file i/o library in P1031, to use the SG14 proposed standard
error object for P0709 Zero-overhead deterministic exceptions which is
detailed in P1028. This refactoring isn't complete yet, but it found a
few bugs both in Outcome and in P1028. I hope to have it done soon, and
that will be a useful milestone reached.

What will the compatibility be between Outcome based code and any
potential P0709? People ask this, I assume, because of the similarities
and that Outcome comes in experimental P1028 std::error flavour. The
answer is that I don't know, I can't even speculate yet. Obviously for
every Outcome API written like this:

outcome<T, std::error> func(pars) noexcept;

... if it could be rewritten as:

T func(pars) throws;

... then it's semantically equivalent, but not source equivalent. But
can we come up with some preprocessor macro trickery or whatever that
implements the same thing, but in library code? Very hard to say right
now. And just because one can do it, doesn't mean one should do it.

But we'll keep our eye on this, and if Outcome can easily implement a
safe subset of P0709 for existing compilers, I might raise a mini-review
here on Boost to debate a proposal. We'll see how it goes.

Thanks to everybody for their patience, and don't forget you can use
Outcome right now - no need to wait for entry into Boost - in both Boost
and standalone flavours.

Niall


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk