
-----Original Message----- From: boost-bounces@lists.boost.org [mailto:boost-bounces@lists.boost.org] 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. Regards, Paul Mensonides