Boost logo

Boost :

Subject: Re: [boost] [Review] Phoenix review starts today, September 21st
From: Joel de Guzman (joel_at_[hidden])
Date: 2008-09-27 20:25:06

Daniel Walker wrote:
> On Sat, Sep 27, 2008 at 7:39 AM, Joel de Guzman
> <joel_at_[hidden]> wrote:
>> While I understand and appreciate the comments raised thus far, I say
>> that the review grossly magnifies these aspects while underrating
>> the remaining 95% of the library. If you look at:,
>> Values, References, Arguments, Composites, Lazy Operators, Lazy Statements
>> Construct, New, Delete, Casts, Operator, Statement, Object, Scope,
>> Bind will remain as-is. Only Lazy Functions and Inside Phoenix (the
>> extension
>> mechanism) will have some changes.
>> Please, let's not throw out the baby with the bathwater.
> OK, regarding babies in bathwater... :-) Again, throwing Phoenix out
> of Boost is not the question. All of the existing functionality is
> currently distributed with Boost.Spirit and will remain so. The issue
> is where to go next.
> I don't want to try to parse what's changed between Phoenix2 and
> Phoenix3, but it's important to identify what's being reviewed. So,
> just to get a since of the difference, I ran diff -qr on the two
> versions and found that of 108 files 43 have been removed and 65
> modified. To try to get a sense of the impact of the new Proto
> backend, I ran grep -rle 'proto::' on Phoenix3 and found that of 66
> files 27 matched, including bind.hpp.

I'm sure most folks here will agree that diffing and grepping files
do not do justice in assessing the difference from one revision
to the next. Only an in-depth perusal will reveal that the structure
and design of V2 is essentially the same as V3. I understand if
you don't want to go there. But let me just emphasize my point:
the majority of the interface, regardless of implementation,
from V2 to V3 will remain stable. To me, that is most important.

The interface is the single most crucial factor that took many
years to evolve and perfect. The new additions, as pointed out
in this review, and as provided by V3, such as support for result_of,
use of boost.typeof, compatibility with TR1, etc, are low hanging
fruits and IMO, feature per feature, pale in comparison to what's
in V2 thus far.

> We're not undervaluing Phoenix2; no one is tossing out babies, it will
> remain in Boost.Spirit. We also shouldn't undervalue the changes that
> bring us to Phoenix3. So, even though they may seem trivial if you are
> familiar with the code, the changes between Phoenix2 and Phoenix3 are
> at least pervasive. Reviewing Phoenix2 is not equivalent to reviewing
> Phoenix3.

I understand. Thanks for your review.


Joel de Guzman

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