Boost logo

Boost :

Subject: [boost] [variant2] Review Results
From: Michael Caisse (mcaisse-lists_at_[hidden])
Date: 2019-05-11 05:17:05


First, I would like to apologize to Peter and the those who took time to
review Boost.Variant2 for the slow turn-around of a result.

Thank you Peter for producing and submitting such a high-quality library
for review. The code has been a pleasure to read and review.

Thank you to the reviewers! Your participation in the process is what
makes Boost libraries high-quality. I personally appreciate the time and
effort that each of you have put into this review.

-------------
Result
-------------

Boost.Variant2 will be ACCEPTED after the following changes are made. An
additional review will not be required.

  - The library will implement the strong guarantee:
    - If all alternatives have nothrow move, single buffer
    - else, double buffer
  - Improved documentation:
    - Addition of a tutorial
    - Addition of design motivation
  - Peter has indicated that triviality propagation will come in a
    future version. The initial Boost release need not support
    triviality propagation.
  - Expected will not be included but may be submitted for review at
    another time.


----------------
Review Verdicts
----------------

The following people provided reviews.

  Reject ----------

  Andrezj Krzemienski
  Antony Polukhin
  Jan Herrmann

  Accept ----------

  Emil Dotchevski
  Gavin Lambert
  Phil Endecott

  Conditionally Accept --------

  Bjorn Reese
  Andrey Semashev
  Damian Jarek
  Niall Douglas

Andrezj and Antony’s rejections were based on not having a
valueless-by-exception state. Neither saw the selected design space
worth considering and each believed the trade-off was dangerous for users.

The Conditional Acceptance reviews voiced the following:

  - Strong preference for the strong guarantee (and therefore no need to
    provide “surprising” behaviour for the state after an exception.)
  - Improved documentation containing both tutorial and motivation
    sections.
  - Triviality propagation of the variant types.
  - Accepted without expected being contained.

--------------
Some Thoughts
--------------

There was a good amount of healthy discussion on the Developer Mail List
concerning Variant2. I want to thank all of the participants for
engaging with civility and keeping to the technical merits despite the
galvanized opinions concerning valueless-by-exception and the basic
exception guarantee. Over the past couple weeks I have re-read all of
the discussion threads 3 or 4 times. While some people didn’t find value
in the exchanges, this level of engagement about design trade-offs is
one of the attributes that sets Boost reviews apart. They are not merely
reviews discussing the quality of implementation but also the
intricacies of design choices within the constraints and consistency of
the language. When reviewers articulate their opinions the entire
community learns and grows.

The trade-offs that Peter made seem dangerous to some yet the exact
correct formulation for others. There are even standard library
implementers that don’t agree with std::variant’s
valueless-by-exception. A high-quality variant that provides the strong
exception guarantee is a type that has been missing from the programmer
toolbox. Variant2 provides this.

I will make an additional announcement to the community when the
conditions for acceptance have been met.

Thank you all for making Boost better!
michael

-- 
Michael Caisse
Ciere Consulting
ciere.com

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