We released a new version of HHVM today. This one includes all the hard work from our lockdown (detailed post to follow) and the ability to use HHVM with FastCGI.

I want to share with you our new release process. Instead of just arbitrarily cutting the source tree at a certain point, we are going to exactly mirror the internal Facebook release. That means the open source release will benefit from the week of internal testing and cherry-picks that are done getting hhvm ready to run facebook.com. Facebook does an hhvm push every 2 weeks, but this is a bit too fast for most distributions. So, for now, we are going push distro packages every 8 weeks and adjust if needed. We also want to do nightly package releases, so expect those to come out when we get some time (or complain loudly if you want them sooner).

As always, if you want to become the packager for a distro, great! Bundle it up and then update the wiki.

Travis CI Support

I also have a really exciting announcement: Travis CI now supports HHVM by default! It is really easy to test your projects against HHVM, just add

1
2
php:
  - hhvm

to your .travis.yml file and now every diff will ensure your project works on HHVM. If you notice any problems, please open an HHVM issue for language problems or Travis CI issue for testing problems. In the meantime, you can special case for hhvm by adding the following to your code:

1
2
3
if (defined('HHVM_VERSION')) {
  // do clowny hack while your issue/pull request is being worked on
}

And now for the 2.3 goods. It is exciting to note that this release was ~20% CPU reduction for running facebook.com compared to HHVM 2.2.0.

Here is the full changelog for your enjoyment:

  • Implement ZipArchive

  • preg_replace /e support

  • get_mem_usage() no longer can be negative

  • Userland file system support

  • Implement fileinfo extension

  • wordwrap() fixes

  • PDO::sqliteCreateFunction()

  • Implement NumberFormatter

  • Implement Locale

  • Implement DatePeriod

  • Many reflection fixes

  • Stub out PharData

  • A ton of performance fixes

  • A ton of open source framework fixes

  • FastCGI Server Support

  • Teach implode() about collections

  • fix ini parsing leak

  • Make array not an instanceof Traversable

  • Log when a nullable (e.g. ?int) is incorrect

  • Direct invocation of callable arrays: $f = [$cls_or_instance, 'method']; $f()

Comments


  • slurm: Keep up the good work, curious to see how parity percentages looks for this version.
  • Joel Marcey: The lockdown results post should be out mid-late next week. Stay tuned.
  • Matthieu: Awesome! Though there's still a few issues to fix on Travis side: https://github.com/travis-ci/travis-ci/issues/1749
  • Sandeep: Thanks for the updates. Could you please provide the source packages for fedora and ubuntu. We've built one for Centos 6, but it would be more helpful if you can provide the fedora SRPM, so we can make it parity with it. http://yum.gleez.com/6/x86_64/repoview/hhvm.html
  • Alex: Wonderful work! I'm just about to test it in our dev environment , hopefully someday we will be able to migrate to HHVM too :)) Thanks guys!
  • Corey Ballou: One thing I'd be interested in seeing with each release blog post is an updated framework support graph. You've clearly added a number of additions and fixes which would affect the overall framework unit tests.
  • Paul Tarjan: Coming up this week.