| 4 | |
| 5 | = Background = |
| 6 | |
| 7 | 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. |
| 8 | |
| 9 | = Outstanding Issues = |
| 10 | |
| 11 | * '''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. |
| 12 | |
| 13 | * '''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. |