Earlier this year we set an ambitious goal of passing the PHPUnit test suites of 20 popular frameworks by the end of June; at the time, we were passing on only 6! With a huge amount of help from the community (especially our OpenAcademy students), we’re proud to have hit this goal more than 2 months early, and we have more frameworks expected to reach 100% shortly.
The full list (currently 23) is shown on our framework tests page; we consider the following to be popular, and will be supported in HHVM 3.1, and our nightly builds:
guzzle3 (guzzle4 coming soon)
idorm + paris
lessphp - thanks to Camillus Gerard Cai
monolog - thanks to Rafe Kettler
mustache - thanks to Kevan Fisher
phpbb3 - thanks to Kevan Fisher
phpmyadmin - thanks to Jeff Chan
ratchet - thanks to Kevan Fisher
reactphp - thanks to Camillus Gerard Cai
Special thanks to Ioan Negulescu for improving our Symfony support, and to Joel Low for several fundamental improvements to HHVM helping all of us, and for bringing Drupal 8’s PHPUnit tests to 100% - Drupal 8 is not included in the list above as the PHPUnit tests are a small portion of their full test suite.
What’s next? Compatibility is still a huge priority for us, though we feel that targeting framework test suites has run its course and gotten us most of the low hanging fruit. After we’ve finished support for a few more frameworks that are nearly complete, we’re going to refocus on fixing issues reported on GitHub. HHVM now has a great overall level of support for PHP5, and we think the best way to continue to improve it is to work on the issues that you and the rest of our community are finding in the real world. If you find compatibility problems, please open an issue and we’ll fix it as soon as we can. We are starting on anything tagged hi-pri and working down from there. Ask for a priority bump if your issue is blocking your HHVM deployment.
- Yosmany: Typo in "Symphony" word, it's "Symfony".
- Fred Emmott: Thanks, fixed
- Martin: What about Nette?
- Fred Emmott: We've not looked at Nette yet; https://github.com/facebook/hhvm/issues/2500 will be updated when that changes - I guess you filed that.
- Jeremias: Amazing Job
- Danny: This is really great! I'm sure a metric ass-tonne of work has gone into this from all parties involved! I think we should commend this big effort, and then and only then correct spelling mistakes and ask for more stuff, no? :)
- Morgan: I see you're focusing on stagnated frameworks like CodeIgniter. Any plans to test compatibility with more actively maintained solutions like CakePHP or Yii?
- Fred Emmott: We tried to optimize for popularity/effort: we based popularity on github stars/forks/watchers, and some data from versioneye, and effort was a guess primarily based on how large the frameworks are. We are testing Yii (it's shown on http://hhvm.com/frameworks/), and an OpenAcademy student is currently working on it. The main reason we didn't work on CakePHP is because it's got a custom test runner - you can't just run 'phpunit path/to/test'. This means we'd have had to have spent a non-trivial amount of time improving our test runner, instead of working on improving compatibility. This is something we're likely to address in the future, but we don't think it's the best way for us to increase the usefulness of HHVM in the short-term - we're instead going to be looking at specific problems reported on github.
- Morgan: Thanks for the insight! I'm glad to hear Yii is in your sights, and I didn't know about CakePHP's testing suite. Good luck and happy bug hunting!
- Konstantin Kudryashov: You missed Behat v3: https://travis-ci.org/Behat/Behat/jobs/23445116 ;)
- Mark Story: The custom test runner is being removed in CakePHP 3.0, and we'll be using the standard phpunit like other libraries. We have HHVM as build target in travis.ci, but we're not quite at 100%. Once we get most of the development done for 3.0 completed, I plan on spending time to improve compatibility with HHVM.
- Fred Emmott: That's awesome - I'll see what it would take to add it to our runner tomorrow (hopefully just an edit to https://github.com/facebook/hhvm/blob/master/hphp/test/frameworks/frameworks.yaml) - even though we're not going to be directly working on frameworks, if you file issues for specific compatibility issues you find, we'll be happy to work on them :)
- Joel Marcey: Yay! That's great news! :)
- Mark: sabre/http, sabre/event and sabre/vobject are already hhvm compatible, too. Hope sabre/dav will be really soon hhvm compatible (afaik): https://travis-ci.org/fruux/sabre-http https://travis-ci.org/fruux/sabre-event https://travis-ci.org/fruux/sabre-vobject Not yet: https://travis-ci.org/fruux/sabre-dav
- Julius Beckmann: Also consider, that all the other packages installed with these frameworks need to be tested to. You can check it out here: http://hhvm.h4cc.de/ Even with dependency graph analysis, for example symfony: http://hhvm.h4cc.de/graphs/symfony_2_4.png
- Josh: HHVM has come a very long way in a very short time. Having kept a very close eye on HHVM, I'm quite impressed at the resources FB has put towards making HHVM kick ass. A great team of engineers, and public commit history makes FB look like a major winner. Also helping existing AJAX calls be cut in half running the same code with HHVM is also a major win :).
- nickvergessen: Typo in the word "phpbb3", its "phpBB"
- Radu Murzea: Wow, that is great news. I never expected HHVM to grow and improve sooo fast. I keep a local copy of HHVM's source code on my machine and, every time I pull from GitHub (maybe once a week), I'm amazed at how much progress is made in such a short time. When you reach 100 % with Symfony too, it will be the most awesome day :) .
- Radu Murzea: Ooooh, I almost forgot. Please take a look at this when you have the time: https://www.facebook.com/groups/hackdevday14/permalink/1438300749742374 . Many thanks.
- Dave: I'm going to guess that since Drupal 7 has exactly 0 PHPUnit tests, you mean Drupal 8.
- Jose: That's great news Fred! Looking forwards seeing CakePHP 3.0 in the frameworks testsuite
- Fred Emmott: Thanks, fixed.
- Joel Marcey: Check and see if these work for you: https://www.facebook.com/groups/hackdevday14/permalink/1438300749742374/
- Fred Emmott: CakePHP3 should be in our next push - it's currently at 96%
- Knecht Rootrecht: Just set up a german speaking support forum for Hack and HHVM. www.fbhack.de Hope some PHP devs interested in Hack/HHVM will find it useful!
- Tim Hawkins: Just wanted to drop a note for folks who need mongodb integration. Mongofill-hhvm is a fully 10gen php driver complient extension for hhvm. The current version is essentialy beta, but I have been able to port several non-trivial php apps to the combination of hhvm 3.0.1 and mongofill-hhvm, with relativly little tweaking. In the cases where tweaking was required, it was generaly a bug in the original code where hhvm's stricter parsing pulled it out. https://github.com/mongofill/mongofill-hhvm To install mongofill-hhvm you will need to have a hhvn installation built from source, not a packaged version as it is currently only supplied in source form.
- Xandi Ostermeyr: Are there any plans to test magento2? Would be very interesting, to increase the performance of magento...
- Fedir RYKHTIK: 95% tests are green for TYPO3 CMS on HHVM ! http://blog.macopedia.co/post/running-typo3-cms-on-hhvm-part2/ 1.1% failed, 0.7% finished with error, 0.26% were incomplete and 2.37% were skipped.
- Utomo: How about http://fatfreeframework.com Does that hhvm support it? I hope hhvm make tools to migrate php code to hhvm. By doing that hhvm can get more people using it. Also consider helping famous opensource to use hhvm, example opencart, and others
- Utomo: I hope hhvm can try to make popular opensource compatible with hhvm. WordPress 3.9 already on the way. Let's continue with opencart 2.0, Magento, Drupal, Joomla, etc. By doing that many people will love and use hhvm
- Marko Rumpli: Hello Fred, can I ask you how it looks with Nette support?
- gorka: Great post. I really like unit testing frameworks like phpunit</a>
- Jelen: Any news?
- Fred Emmott: We're not actively targeting or investigating frameworks at the moment; given our level of compatibility is generally very good now, investigating specific reported issues is a better use of our time now.