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 22:31:58

On Sat, Sep 27, 2008 at 9:53 PM, Joel de Guzman
<joel_at_[hidden]> wrote:
> Daniel Walker wrote:
>> On Sat, Sep 27, 2008 at 8:25 PM, Joel de Guzman
>> <joel_at_[hidden]> wrote:
>>> 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.
>> I just mean to show that the two versions are different - not the
>> structure, design or interface, but the implementation, which of
>> course, is also important.
> Agreed. The implementation is also *very* important. Is it safe
> to say at least that grepping and diffing cannot be considered to
> be an in-depth analysis of the implementation?

Of course not. :-) But going in-depth into V2's implementation is not
the same as going in-depth into V3. The design may be the same, but
simple diffing and greping shows the implementations are not. And
that's to be expected. As I understand, whole components were gutted
and replaced with Proto, which is a good thing. So let's continue that
effort and spend our energy on V3 and not look back!

Now, how that relates to the review formalities and the fact that
apparently V2 is under review, I am not sure. As far as I can tell,
all the reviews thus far have assumed the V2 implementation. I would
suggest withdrawing V2 from consideration (leaving it as is in
Boost.Spirit), finishing V3 (which becomes the new Boost.Lambda), and
then resubmitting for review, but I'm no expert on this process.

Obviously, we don't want to find ourselves in a situation where we
review a library that will never be released (V2) and then release a
library that has never been reviewed (V3). So, as long as we avoid
that awful end, I think everything will be fine. Of course, I'm also
just happy to see the ball rolling! ;-)

Daniel Walker

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