On Tue, Sep 19, 2017 at 2:41 PM, C. Scott Ananian cananian@wikimedia.org wrote:
You say "there's not much migration cost moving to PHP7" -- well, it would be nice to assign someone to go through the details in a little more detail to double-check that.
What migration costs there were for PHP7 have probably already been paid, since as has already been noted several developers are already running on PHP 7 (myself included). There's nothing much open on the NewPHP workboard,[1] and what is still open seems to be false positives (T120336, T173850, T173849, T120694), mostly done already (T153505), deprecations of stuff we only still have for backwards compatibility (T120333, T143788), irrelevant (T174199), or tracking backports (T174262).
[1]: https://phabricator.wikimedia.org/project/board/346/
The HHVM announcement specifically mentioned that they will maintain compatibility with composer and phpunit, so that seems to be a wash.
They specifically mentioned they'd maintain compatibility with *current versions* of composer and phpunit *until replacements exist*. No specific criteria for whether a replacement is good enough have been supplied.
They also imply that they may not support full use of those tools, versus only features of the tools required for whatever use cases they decide to support.
[... much discussion of garbage collection ...] It may be a good opportunity to take a hard look at our Hooks system and figure out if its design is future-proof.
I note our hook system has nothing to do with garbage collection or destructors. It does rely on references, since that's how PHP handles output parameters.[1] And in particular, explicit references are needed to handle output parameters combined with call_user_func_array().
Garbage collection and destructors do make a major difference to the use of RAII patterns[2] such as ScopedCallback and our database classes.
[1]: https://en.wikipedia.org/wiki/Output_parameter [2]: https://en.wikipedia.org/wiki/RAII