Boost logo

Boost :

From: (david_at_[hidden])
Date: 2008-03-02 14:30:34

> Please always state in your review, whether you think the library should
> be
> accepted as a Boost library!

Yes, Proto should definitely be accepted. It is a very useful foundation
tool for building a DSEL with efficient execution performance.

> - What is your evaluation of the design?

The design is very clean and well thought out. This is Eric's second
version of Proto and he obviously learned valuable lessons from the earlier

> - What is your evaluation of the implementation?

I read through much of the code and while I can't claim to understand it
all, it seems well written.

Would it be possible to eliminate the need for dummy parameters in examples
like "make_pair_(1, 3.14), j, j )", where the state and visitor parameters
are not used?

In many places I see "when<_, xxx>" to mean transform anything to xxx. Is
there an advantage to this syntax or would "always<xxx>" be simpler?

> - What is your evaluation of the documentation?

The documentation is good with many examples, but it took me several
readings to "get it".

I would like to see a section on debugging strategies and examples,
particularly for Proto transforms. The display_expr() function could be
documented with an example. Is there a way to create a "trace" of compiler
messages, for something like the CalcArity example, where the compiler
outputs warning messages as it does the mpl::max comparisons? I tried using
techniques from the "C++ Template Metaprogramming" book, but couldn't get it
to work. Any tools or techniques to help debugging would be appreciated.

I couldn't find definitions for macros like BOOST_PROTO_EXTENDS_xxx,
proto::pod_generator isn't described anywhere.

It would be helpful if the Concepts section were expanded with more
definitions, because I kept getting confused about the precise meaning of
grammar, transform, pattern, context, domain, generator, etc.

> - What is your evaluation of the potential usefulness of the library?

It will be useful in a variety of problem domains, where it's important to
define a clean syntax to a high-performance implementation. However, the
effort needed to understand Proto and write and debug code for it is a
significant consideration.

> - Did you try to use the library? With what compiler? Did you have any
> problems?

 I wrote some small test cases and they ran well. The only problem I had was
a proto::flatten test case that caused a "C1001 internal compiler error" on
the msvc9.0 compiler. I sent this test case to Eric.

> - How much effort did you put into your evaluation? A glance? A quick
> reading? In-depth study?

I've been following Proto for over a year. I spent about two days reviewing
the current version.

> - Are you knowledgeable about the problem domain?

Yes, somewhat. I've written some test cases but haven't tried a real

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