
Daniel Walker wrote:
On Sat, Sep 27, 2008 at 7:39 AM, Joel de Guzman <joel@boost-consulting.com> 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: http://tinyurl.com/4y47z7, 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. Regards, -- Joel de Guzman http://www.boostpro.com http://spirit.sf.net