September 27, 2020

Facebook announced to stop supporting PHP and developed HHVM engine

2 min read

Recently, Facebook’s PHP execution engine HHVM announced on its official blog that they are about to stop supporting PHP.

HHVM dramatically increases speed by dynamically translating PHP code into native machine code. HHVM supports the PHP and PHP dialect Hack languages. But now the development team announced that HHVM v3.30 will be the last version to support PHP. Here are some key time nodes:

  • 2018-12-03: branch cut: expect PHP code to stop working with master and nightly builds after this date
  • 2018-12-17: expected release date for v3.30.0
  • 2019-01-28: expected release date for v4.0.0, without PHP support
  • 2019-11-19: expected end of support for v3.30

The HHVM development team recommends that projects that use HHVM be fully migrated to the Hack or PHP7 and PHP runtimes.

They also said that they hope that their own support for real-world PHP code can quickly break through: for example, they might use the inout parameter instead of the built-in reference parameter (&$foo), making INT64_MAX + 1 === INT64_MIN (float) except).

There is a lot to be said about HHVM giving up on PHP support. As we reported last year, because of the large compatibility issues between PHP 7 and PHP 5, Facebook’s HHVM team decided to switch to Hack to develop HHVM. By reducing the use of PHP, the HHVM team hopes that HHVM and Hack will give developers a better, higher performance experience.

Hack is built on the PHP ecosystem, but Facebook’s ultimate goal is to give Hack its own core framework ecosystem.

To this end, the HHVM team also shared 2018’s open source plan with us, with the priority of supporting existing users and reducing the pain of stopping support for PHP. This will involve creating additional projects and optimizing several existing projects to achieve the appropriate v1.x state.

Current part of the plan

  • hh-apidoc: improve ease of use, integrate with existing projects, improve readability and formatting of produced documents
  • hacktest: improve ease of use, documentation, and use as a replacement for PHPUnit in all our existing projects
  • hack-routerhack-router-codegenremove the dependency on PSR-7, revisit the API design for current best practices, improve documentation
  • we are investigating migrating away from Composer and Packagist; it currently seems likely that this is going to be a set of best practices or extensions to Yarn, using the NPM repository, with the goal of using a single package manager for both the JS and Hack parts of web-based projects.

In 2019, the development team hopes that these efforts will continue and expand to a greater extent, as well as providing more automated migration tools to update the code to handle language changes.