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
Congratulations Peter for getting variant2 into Boost! And thanks to
Michael for managing the review.
The review itself was very educational. I also believe that the reviews are
one of the most valuable things that Boost offers to the community.
I agree that a strong (or "semi-strong") guarantee for variant is
uncontroversial and will be found superior to std::variant or
boost::variant in a number of cases.
I sustain my offer to provide the introduction page for the documentation,
if this is needed.
Thanks Peter for your contribution to Boost.
Regards,
&rzej;
sob., 11 maj 2019 o 07:17 Michael Caisse via Boost
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
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
On 11/05/2019 06:17, Michael Caisse via Boost wrote:
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.
Congratulations Peter, and thank you Michael for your service. The above design is literally sorely needed in the codebase I am currently deployed upon. We are currently on Boost.Variant, and paying the price of dynamic memory allocation in a hot low latency code path. Boost.Variant2 will be a very welcome replacement. Niall
Michael Caisse wrote:
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.
Thank you Michael for managing the review, and thanks to all the reviewers.
On Sat, May 11, 2019 at 1:17 AM Michael Caisse wrote:
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.
Congratulations Peter and thank you for bringing Variant2 to Boost. Many thanks, Michael; hope you're able to start eating lunches again. :) Glen
Congratulations Peter, and also Boost. Having Boost.Variant and
Boost.Variant2 demonstrates how the Boost model allows for more
exploration of design spaces than the rigidity imposed by the C++
standardization documents. It is wonderful to see us continue to press
this advantage.
Thanks
On Sat, May 11, 2019 at 8:23 AM Glen Fernandes via Boost
On Sat, May 11, 2019 at 1:17 AM Michael Caisse wrote:
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.
Congratulations Peter and thank you for bringing Variant2 to Boost.
Many thanks, Michael; hope you're able to start eating lunches again. :)
Glen
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
-- Regards, Vinnie Follow me on GitHub: https://github.com/vinniefalco
On 5/11/19 10:01 AM, Vinnie Falco via Boost wrote:
Congratulations Peter, and also Boost. Having Boost.Variant and Boost.Variant2 demonstrates how the Boost model allows for more exploration of design spaces than the rigidity imposed by the C++ standardization documents. It is wonderful to see us continue to press this advantage.
+1 Not to mention turn around time.
participants (7)
-
Andrzej Krzemienski
-
Glen Fernandes
-
Michael Caisse
-
Niall Douglas
-
Peter Dimov
-
Robert Ramey
-
Vinnie Falco