[PREDEF] Review for the Boost.Predef library by Rene Riviera

The review of BOOST.PREDEF by Rene Riviera is scheduled between Monday, February 20th to February 29th. ================ Contents & Scope ================ BOOST.PREDEF defines a set of compiler, architecture, operating system, and library version numbers from the information it can gather of C++ predefined macros or those defined in generally available headers. The idea for this library grew out of a proposal to extend the Boost Config library to provide more, and consistent, information than the feature definitions it supports. What follows is an edited version of that brief proposal. =============== How to get it ? =============== Sources and documentation can be retrieved from http://tinyurl.com/73n6a3k ================ Writing a Review ================ The reviews and all comments should be submitted to the developers list, and the email should have "[PREDEF] Review" at the beginning of the subject line to make sure it's not missed. Please explicitly state in your review whether the library should be accepted. The general review checklist: - What is your evaluation of the design? - What is your evaluation of the implementation? - What is your evaluation of the documentation? - What is your evaluation of the potential usefulness of the library? - Did you try to use the library? With what compiler? Did you have any problems? - How much effort did you put into your evaluation? A glance? A quick reading? In-depth study? - Are you knowledgeable about the problem domain? And finally, every review should answer this question: - Do you think the library should be accepted as a Boost library? Be sure to say this explicitly so that your other comments don't obscure your overall opinion.

On 02/18/2012 03:08 PM, Joel Falcou wrote:
================ Writing a Review ================ The reviews and all comments should be submitted to the developers list, and the email should have "[PREDEF] Review" at the beginning of the subject line to make sure it's not missed. Please explicitly state in your review whether the library should be accepted.
I do not think that this library should be accepted in Boost, and I think a fairly important overhaul would be required to get it to a satisfying state.
The general review checklist:
- What is your evaluation of the design?
Checking for different compilers in independent files simply doesn't work due to some compilers emulating others. We have talked about __GNUC__, but there are several compilers that define _MSC_VER as well. The library should use, like Boost.Config and Boost.Detect, a chain if/elif to ensure that all values are mutually exclusive. Other issues in the design include the way macros are defined even if the associated element is not detected. This is fairly confusing for the user. The design is not sufficiently good to make Boost.Config rely on it.
- What is your evaluation of the implementation?
Implementation does not do what is expected, as was demonstrated by Artyom's tests. It detects x86-64 as Itanium, wrongly detects the standard library (detects two of them at the same time, while only one should be possible), detects clang as gcc, etc. Not robust enough to become the most basic piece of the Boost infrastructure, being included with every other Boost header.
- What is your evaluation of the documentation?
Documentation was good, but misled me to believe the library didn't do things as it does. It would probably be a good idea to say in what conditions macros are defined. The documentation made me assume all macros were mutually-exclusive: clearly this is not the case at all, which is why this library is not suitable for inclusion.
- What is your evaluation of the potential usefulness of the library?
This library, if done right, would be very useful to correctly deal with frontend-specific, backend-specific, library-implementation-specific, architecture-specific or OS-specific code. I therefore strongly encourage people to submit more proposals on the subject.
- Did you try to use the library? With what compiler? Did you have any problems?
I did not try to use the library. I read the documentation and skimmed through the code.
- How much effort did you put into your evaluation? A glance? A quick reading? In-depth study?
A quick reading.
- Are you knowledgeable about the problem domain?
Yes.
And finally, every review should answer this question:
- Do you think the library should be accepted as a Boost library?
No.
participants (2)
-
Joel Falcou
-
Mathias Gaunard