HHVM 3.1.0

Posted on May 29, 2014 by

The next version of HHVM is hot off the press. After a few delays, we finally tracked down the segfault. We fixed it in master, but turning off the optimizations was safer for the release. Thanks for your patience.

This release bisected our semi-annual lockdown. If you remember last time we focused on framework unit tests, performance, and growing beards. This time, our frameworks were in good shape thanks to Fred and our Open Academy students, but our github story was not as pretty. At the start of lockdown we had 60 pull requests and nearly 450 issues. So our focus this time was github health and of course as always, perf.

Our final results from lockdown were, drumroll … 251 closed issues and 16% more efficient on large workloads. The 3.1.0 release timing was a bit unfortunate by bisecting our lockdown, so only 1/3 of the fixes and perf is in there. The few weeks after lockdown are always a little unstable and we didn’t want to push the release out any longer, so you get some of the awesomeness this time and the other bunch in the next release.

Some of the highlights:

  •  Support for PHP 5.6 variadic ...$args syntax for func declarations. We’re closing in on all the PHP 5.6 features. We just have splat left to build, and we’re working on it. Go ahead and bug Eugene on IRC so we can bump our PHP_VERSION up.
  • There is now over 400 ini settings you can use to configure various things. Most of them aren’t important but anything you were using a .hdf file for, you should be able to port over. We’ll work on the documentation (you can too, just click edit).
  • The Zend extension compatibility layer is getting much better thanks to tons of work by Tim Starling. Try it on your PHP5 extension and open an issue if it doesn’t work.

Security Fixes:

Full HipHop Changelog:

House of PHPain Insane Poetry Jay-Z Kanye West
“Kanye West”
- Backport fix for CVE-2011-2202
- Interfaces {Keyed}Container match arrays *and* collections, not iterables
- Added ** and **= operators to HHVM and more compatibility fixes with PHP5.6
- Fixes and improvements to collections
- Replace json decoder with json-c library
- Document VMRegAnchor and isVMFrame()
- Improvements to array iterator code
- Improvements to the type checker
- Allow parser to be generated with bison 3
- Improvements and speed up to reflection code

“Jay-Z” 9-May-2014
- Make handling of code.hot overflows more robust
- Catch server errors sooner
- Fix segfault and infinite recursion in fileinfo extension
- Resolve systemlib constants at compile time
- Resume resumables natively
- Import round() table optimizations from php-src
- Delete bytecode Peephole optimizer
- Remove most of annotation.cpp, and some other code gated on !UsedHHBBC
- Create phis for locals
- Fix free of “” in rfc1867PostHandler
- Add firstValue(), firstKey(), lastValue(), lastKey() to collections
- Add concat() to collections
- Clarify Hack license
- Add CakePHP3 to test runner
- Better error when TC is full
- Add hash_equals() from PHP 5.6

“Insane Poetry” 24-Apr-2014
- Support for PHP 5.6 variadic …$args syntax for func declarations
- Open source HHMeasure, a simple and extensible microbenchmarking tool
- Added a new time-based sampling profiler (Project Xenon)
- Fix PCRE unicode handling
- Convert Zend compatibility layer and various extensions to HNI
- Encode execution mode (eager or resumed) into SrcKey
- Merge eager and resumed parts of async functions
- Rework various async / continuation bytecode instructions

“House of PHPain” 1-Apr-2014
- Allow direct arg passing with up to 15 params (7 if at least one is a double)

Posted in Announcement | Leave a reply

7 Responses to “HHVM 3.1.0”

  1. Ben Finn says:

    Great update! The INI fixes are fantastic. :)

    In terms of major bugs, the issue (https://github.com/facebook/hhvm/issues/2589) with no timestamps in the error logs and buggy escaped characters is fairly major for any sort of serious development. Just tossing in my two cents, in terms of something that seems to need signal amplification.

  2. […] HHVM team just released version […]

  3. Quick question – are there going to be any more updated builds for the Ubuntu 13.10 repo, or are you only targeting 14.04?

    Amazing work :)

  4. […] in our production cluster. Most of Tim Starling’s work on the Zend compatibility layer have landed in HHVM 3.1. Most jobs are working, but bugfixing continues on […]

Leave a Reply