HPHP has a bunch of behavioral changes from mainline PHP, which we're currently addressing one at a time by adding conditionals. For example, see:
- {D2362}
- {D2365}
- {D2524}
- Various idx() warnings and behavioral differences.
These patches are pretty nasty and I want to explore alternatives rather than hacking around them. Here are some alternatives:
- Fix HPHP, Not Phabricator: I'd be willing to help with this if hacking on HPHP was approximately as easy as hacking on PHP. I believe it's much much harder, though, and seems to be completely unsupported now (no commits in 6 months)?
- Deploy on Zend PHP at Facebook: Not sure how viable this is. Won't fix arc issues, only Phabricator issues (although this is most of them). With the FPM patch, switching to vanilla PHP should improve performance significantly.
- Fork Phabricator: Not thrilled about this, but I'd rather have this gunk on Facebook's side than in the upstream, given that it is the one imposing the costs; there are no other installs running HPHP and I do not anticipate there ever being any since there are no reasons to use HPHP over a standard stack when running Phabricator, unless you're Facebook and have a bunch of inflexibility and lock-in.
Also, what's going to happen when HPHP-VM rolls out? Is this going to be like 6-8 months of three-way conditionals, where one branch handles HPHP/i, one handles HPHP-VM, and one handles normal PHP?