Boost logo

Boost :

From: Paul Mensonides (pmenso57_at_[hidden])
Date: 2005-02-09 06:41:09

> -----Original Message-----
> From: boost-bounces_at_[hidden]
> [mailto:boost-bounces_at_[hidden]] On Behalf Of Tom Brinkman

> Here are some questions you might want to answer in your review:
> * What is your evaluation of the design?
> * What is your evaluation of the implementation?

I think that the design and implementation are good. The library has reasonable
performance in preprocessing complex examples and is more conformant to the
standards than most other vendors' preprocessors. The library is capable of
handling Chaos, for example, which cannot be said of all but a handful of
preprocessors. I do not have an extremely detailed knowledge of the
implementation, but I do have a fairly detailed knowledge of the overall
structure and design of the library. There is room for improvement in a few
areas, and movement in that direction continues.

> * What is your evaluation of the documentation?

The documentation is pretty good. Library usage is straightforward--which is a
testament to to quality of the design.

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

Nearly every tool that analyzes C or C++ source effectively needs to have the
ability to preprocess that source. Having a plugable preprocessor is a boon for
tool developers--including possible future Boost tools. That said, the
potential usefulness of the library (as a library) is fairly restricted to tool
development. OTOH, the driver can be used as a replacement for faulty
preprocessors without a great deal of effort.

Furthermore, the tracing ability of the library (and, by extension, the driver)
makes it hands-down the best tool for debugging complex preprocessor
metaprograms. This is especially true because tracing can be turned on and off
mid-expansion with pragmas (in particular, with the _Pragma operator borrowed
from C99).

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

I have not extensively used the library as a library, but I have extensively
used the driver. I test all Chaos code against Wave, and I regularly use the
preprocessor in ways that most compilers cannot handle without help (from Wave).
My use of the driver has spanned a couple years now, and during that time
Hartmut has fixed nearly all problems that I've encountered.

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

I have been following Wave's design, conformance, and performance from its
inception. Over the last several years, I have had many protracted discussions
with Hartmut over what the preprocessor is supposed to do, etc.. Saying that
Wave can handle Chaos is no small endorsement. To be exact, there is exactly
one other preprocessor that can handle *all* of Chaos--gcc.

> * Are you knowledgeable about the problem domain?

One might say that. :) I am probably the most knowledgeable person in the world
regarding preprocessor metaprogramming--with the possible exception of Vesa.

> And finally, every review should answer this question:
> * Do you think the library should be accepted as a Boost
> library?

Yes, the library should be accepted into Boost--as should the driver. Beyond
the utility and capabilities of the library, the existence of the library makes
a worthwhile political statement to compiler vendors. I endorse the concept of
a Boost preprocessor, and I endorse this particular realization of that concept.
Furthermore, I endorse the author (Hartmut). He has been a very responsible and
responsive implementor/maintainer--for Spirit as well as the Wave project.

Paul Mensonides

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