From: dan marsden (danmarsden_at_[hidden])
Date: 2008-03-02 09:57:39
Review of Proto
Evaluation of the design
Excellent. The close collaboration with the Spirit development, and the fact Proto has underpinned xpressive for some time clearly shows in a mature looking library. The library uses MPL, Fusion, the result of protocol and other standard components effectively, making good use of other parts of Boost.
One very small implementation question - arg_c doesn't have a corresponding arg, in line with the pattern see in MPL/Fusion for at/at_c etc. Was there a reason for this, if not I'd suggest always having xxx when there is a corresponding xxx_c feature.
Evaluation of the documentation
Proto's problem domain is naturally quite abstract, and more heavily technical than other Boost libraries. The documentation is of good quality, but I feel there may still be quite a steep learning curve for new users. The examples used are generally quite realistic, but this can mean they're tough to get started with in some cases. Some more trivial examples may help in places. Having said that, I learnt to use Proto from the documentation, so they're certainly sufficient to get going.
I found a few specific issues in the docs:
* The Transform concept documentation mentions ObjectTransform, but I cannot find any details of that transform in the concepts section
* The call<> documentation has a "TODO LINK" left in it. This also brings up a general point, I'd like to see links in code samples etc to the related documentation if possible, it saves backing up and down all the time trying to follow examples.
* The documentation for call<> mentions posit<_>. I could not find posit mentioned in the top level documentation - is this a Proto feature, or just part of the example? Again this brings up a general point, it might be good to use namespace qualification to highlight the distinction between library and user code.
Massive, there are plenty of DSEL's already in Boost, and plenty of others we probably should have.
Effort put into review
I implemented the (partially complete) port of Phoenix to Proto, using a slightly early version of the library. I've put a few hours study into the latest Proto documentation as I've not been using the library actively recently. Compilers used - gcc 3/4, msvc 7.1/8
Am I knowledgeable in the problem domain?
Yes - I've implemented DSELs both with and without Proto, and appreciate the benefits of having the expression template engine in the form of a library.
Should Proto be accepted into Boost?
Yahoo! Answers - Got a question? Someone out there knows the answer. Try it
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk