
Hi Robert,
I wish [the Spirit team would] appreciate how all this name changing makes things much more difficult for us poor library users.
others are more qualified to explain the technical rationale behind those decisions, but my impression is that version 2 of the Spirit library has been re-designed from ground up. The new API doesn't look radically different from version 1 (Spirit.Classic), not at all, but some details changed, so version 2 (Spirit.Qi) is not entirely backwards compatible. The classic API is still fully supported in current versions of the library -- you don't have to upgrade your parsers if you don't want to. If you *do* upgrade your parsers, however, you'll most likely find that the re-written code will be simpler, cleaner, and more efficient. Now, changes that disrupt backwards compatibility are always costly and should be avoided unless there is a major advantage to be had by making those changes. My impression is that the advantages Spirit.Qi offers over Spirit.Classic outweigh those costs. Once you've decided to change the API, it is only sensible software engineering to place the modified API into a new namespace. Whether you call it boost::spiritv2, boost::spirit::v2, or boost::spirit::qi is a matter of taste and there is no accounting for taste. As far as I am concerned, the Spirit team does an amazing job at providing a high-quality parser DSL for C++. Just my 2 cents, Peter