Boost logo

Boost :

Subject: Re: [boost] [Review] Phoenix review starts today, September 21st
From: Daniel Walker (daniel.j.walker_at_[hidden])
Date: 2008-09-27 17:02:48

On Fri, Sep 26, 2008 at 11:44 PM, Joel de Guzman
<joel_at_[hidden]> wrote:
> Daniel Walker wrote:
>> I think Phoenix version 2 should be rejected as a Boost library.
>> Instead, we should focus on version 3, i.e. Phoenix3/Lambda2.
> I understand your concerns.
> Will you change your vote if I say that Phoenix2 will not be
> repackaged into Boost? The real intent is to have Phoenix3/Lambda2
> into Boost, not Phoenix2.

Then let's review Phoenix3/Lambda2. I might vote yes for that library
after I have a chance to review it. I can't vote yes for Phoenix2;
i.e. the library linked to by the review manager at the beginning of
this thread. In other words, I can't accept the library I have
reviewed, not without major changes:

1) The documentation is great for Phoenix2. But it is not the
documentation for Lambda2. It will need to be significantly rewritten.
As I believe you mentioned earlier, the Lambda2 documentation should
probably include a lot of material from the current Boost.Lambda
documentation that folks are familiar with.

2) The implementation needs significant changes to replace the
"backend" with Proto. Apparently, that work is just about complete in
Phoenix3 alpha. So again, why shouldn't we spend time on the library
implementation we actually intended to distribute? There has been a
conflicting argument put forward in the discussion so far. Phoenix2 is
mature and already distributed, so we can be confident in it's
implementation. But the implementation we actually want is Phoenix3,
which is not widely used or mature or even complete.

3) The interface also needs several change in order to be a drop-in
replacement for Boost.Lambda. As far as I understand, we're just
beginning to consider what these changes may be: What should be
decremented in the old Lambda and relegated to a backwards
compatibility mode in favor of new Phoenix-like constructs, what
should be the default interface when Lambda and Phoenix differ, etc.?
There also needs to be several interface changes in order for
Phoenix3/Lambda2 to be complementary to and/or compatible with the
draft standard library. Also, the final interface will be
"incompatible" with Phoenix2, at least in so far as the namespace will
be boost::lambda instead of boost::phoenix, but I believe a number of
other changes have been mentioned here as well.

>>> - What is your evaluation of the implementation?
>> I haven't really looked at the implementation. I'm kind of reluctant
>> to invest too much time reviewing the current version when I know the
>> Proto port is coming, and that seems to be the actual, valuable,
>> long-term implementation. The code under consideration is
>> known/intended to be transitory; what I'm actually looking forward to
>> is the replacement! I mean we can already use Phoenix2 by including
>> boost/spirit/phoenix.hpp. Moving the code to boost/phoenix isn't
>> really a reason to get excited.
> Phoenix3 is essentially Phoenix2 plus proto and some of the
> features that brings it into the post TR1 world. If it is the
> implementation you want to evaluate, you can look into either
> renditions.

Thanks for all your responses, but I believe this comment gets to the
crux of my vote, so I'll just cut to the chase.

I understand that libraries change during the review process. Also,
sometimes libraries are revised and submitted for a second review as
was the case with Boost.Serialization. However, what are we supposed
to be reviewing? The code linked to by the review manager? Phoenix3
alpha? Something else?

If you feel that the review process will help in completing Phoenix3,
that's fine. However, I can't vote for conditional acceptance when the
condition is something like "replace Boost.Lambda." Upgrading this
central library will be a major change for the entire Boost
community... a much needed change, as well! And I'm looking forward to
it, but Phoenix2 is not there yet, and as far as I can tell, Phoenix3
is not being reviewed.

Maybe we just have different understandings of what a review is
supposed to be. I'm not sure that it actually matters; it's kind of a
formality. I'm more interested in getting into some of the nitty
gritty problems related to the actual release of Phoenix as Lambda2.
That's the fun part! ;-) It's just that in my mind, on the development
road map, the Boost-reviewed stamp of approval should be applied at
the end of the road rather than in the middle.

Daniel Walker

Boost list run by bdawes at, gregod at, cpdaniel at, john at