Subject: [boost] [Review] Phoenix review results
From: Hartmut Kaiser (hartmut.kaiser_at_[hidden])
Date: 2008-10-04 09:03:39
the Phoenix review is over and I counted 15 votes, 11 of which vote for
acceptance and 4 vote for conditional acceptance. Let me explain.
All reviewers stated that the outstanding quality of the library and its
documentation fully merit immediate acceptance. There is no direct concern
with regard to the library itself. Phoenix V2 is already in the Boost
distribution as a Spirit sub-library and has matured for a long time,
proving its stability and usability.
On the other hand, Phoenix provides functionality already covered by
Boost.Bind and Boost.Lambda. It is the general intention to use Phoenix as
the development ground for a new unified Boost library in this area. The
review discussions revealed quite some details and certain problems which
have to be resolved for this merger to happen. Joel has a full list of these
details and promised to address all of them before adding Phoenix to the
The library authors made clear from the beginning that the review of the
current Version 2 of the library is just a stepping stone towards this goal.
At the same time Eric Niebler presented a first version of a Proto based
Phoenix rewrite (referenced as Phoenix V3). It is the general consensus to
use Phoenix V3 as the basis for further development. At the same time
Phoenix V3 exposes the same interface as Phoenix V2 and passes all related
This review formally was about Phoenix V2, but largely turned out to be a
discussion of the future of Bind/Lambda and how Boost should go forward in
this direction. Again, the general consensus here is that a) we need a
unified approach to bind, lambda, et.al., and b) Boost users need interface
stability and minimal disruption.
So here is the review result:
The quality of Phoenix warrants immediate acceptance into Boost.
OTOH, adding Phoenix to Boost as is introduces yet another library dealing
with functional idioms. This possibly increases the confusion around the
fact which of the libraries to use, etc. The goal should be to have a clear
integration of, and migration path from the existing Boost.Bind and
Boost.Lambda libraries before final addition of Phoenix to Boost.
We will have a mini review before Phoenix gets merged to SVN to make sure
whether the feedback from the v2 review was accommodated. Additionally this
review will have to discuss:
- the breaking interface changes from v2
- the migration path from boost::bind and lambda to Phoenix
- how the interoperability with std::bind is solved (result_of semantics)
- C++0x features such as rvalue references and variadic templates
- the new extensibility mechanism
- unified placeholders and interoperability issues with other Proto-based
DSELs (such as Spirit.Qi, Spirit.Karma, and Xpressive)
- compile times
In general, the review was valuable for what it accomplished. It moved us
closer towards a unified Boost library in the domain of functional
programming idioms. Thanks to Joel and Dan for the high quality submission
and to all participating the discussion for their valuable insights!
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk