
On Sat, Sep 27, 2008 at 9:53 PM, Joel de Guzman <joel@boost-consulting.com> wrote:
Daniel Walker wrote:
On Sat, Sep 27, 2008 at 8:25 PM, Joel de Guzman <joel@boost-consulting.com> wrote:
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.
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