
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. 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. Daniel Walker