This is the Wiki page for coordinating development efforts for Phoenix V3, a ground-up rewrite of Phoenix build on top of Boost.Proto. Please share your ideas and post sample code here. Once we find our shared vision, we can begin fleshing out the implementation in the phoenix_v3 branch in Boost's subversion repository.


In the proto/v4 branch in subversion there is a nearly complete implementation of Phoenix on top of Proto. It is overcomplicated and compiles slowly, but proves the viability of the project. The purpose of the reboot is to avoid the problems that led to the complexity and slow compile times. That may involve some changes to the fundamental libraries upon which Phoenix3 will be based. That includes Proto, MPL and Fusion.

Outstanding Issues

  • Arity and Config Macros: Phoenix function arity defaults to 10. Proto arity defaults to 5. Monkeying with config macros in Phoenix will introduce include order headaches, not to mention longer compile times for any other library based on Proto.
  • Terminal Capture Behavior: In Phoenix, most terminals must be captured by value. In Proto, all terminals are captured by reference by default and must be recaptured by value through the use of a so-called Proto generator. This requires extra code (complexity) and needless template instantiations (longer compile times). Perhaps Proto can be extended such that terminal capture behavior can be specified on a per-domain basis.


There is a thread on the boost-devel mailing list about Boost.Phoenix v3 that can be found here.

Steven Watanabe's template profiler is checked into the Boost sandbox and can be checked out here. It is also in the Boost Vault and can be downloaded from here.

Last modified 10 years ago Last modified on May 29, 2009, 7:21:10 PM

Attachments (3)

Download all attachments as: .zip