HHVM 3.10.0

The HipHop Virtual Machine (HHVM) is an alternative PHP runtime implementation. It executes scripts JIT-compiled for higher performance, but retains most dynamic features, weak typing, and scripting language capabilities. While its companion language "Hack" constraints some features for additional execution speed. HHVM is developed and used by Facebook, where it achieved significant performance gains and reduced memory consumptiom. Its syntax and standard library feature set is meanwhile compatible to most established PHP libraries and frameworks. It can easily run with any FastCGI-aware web server.

Tags c++ php hhvm programming-language dynamic-content developers linux
License PHPL
State stable

Recent Releases

3.10.022 Oct 2015 21:40 major feature: Core changes: Performance improvements for certain usages of strtr(). Fixes to rand() when requesting very large integers. XDebug compatibility and resource usage fixes. Improved reflection support. The usual myriad of bug fixes and general performance improvements. Hack language: Dramatically improved type inference for arrays. Improved typechecking for some standard library functions. Other minor fixes, e.g., improved type enforcement in some edge cases and fixes to using shapes inside namespaced code.
3.9.020 Aug 2015 08:05 major feature: This release contains a variety of enhancements to the type-checker and runtime, and as always many changes designed to improve performance. Key type-checker changes include a new set of library functions to operate on Shapes, a new type to represent Foo::class strings, and improved reflection for type-constants. Runtime improvements include a new facility for pooling curl handles between requests, and a runtime setting to reclaim memory in the translation cache (TC) from dead translations. The new TC garbage collection (enabled via hhvm.enable_reusable_tc = true) should prove particularly helpful to anyone experiencing frequent crashes related to out of memory from TC exhaustion. Modifications to source files actively being served are a common source of TC leaks. This is a particularly prevalent pattern in development environments, where this setting will likely be helpful. Support for this feature is still experimental, if you experience crashes with it turned on please open issues on our GitHub repository. The 3.9 release comprises the internal Nash , Osborne , and Park releases. This release is our third LTS and with it support for 3.3 (our first LTS) is ending. Support for 3.6 will continue for six months (when 3.12 is scheduled to be released), and 3.9 will be supported for 12 months.
3.8.014 Jul 2015 22:45 major feature: This release is the first one to contain performance improvements from our HHVM lockdown this half. Along with the changes detailed in that post targeted specifically at open-source frameworks like WordPress, MediaWiki, and Drupal, this release also contains the results of Facebook s internal performance team s lockdown. While the internal team focuses on performance of Facebook s code specifically, many of the changes they made will improve the performance of all PHP and Hack code, including the aforementioned open-source frameworks. The 3.8 release comprises the internal Irwin , Jobs , King , Lukather , and McQueen releases. Normally, we do an external release every four internal releases, but decided to delay 3.8 due to some stability issues.
3.7.005 May 2015 23:45 minor feature: There aren t any ultra-shiny new features in this release, but it contains a long list of performance improvements, compatibility tweaks, and bug fixes. Fix for preloadRepo. asio Two round enterContext(). Handle emptiness correctly in arrElemReturn. Turn off RecordSubprocessTimes by default. Ability to attach metadata to a stack frame. h2tp support parameter unpacking calls. Fix memory leak while parsing ini file. Stop the health monitor when the pagelet server stops. Avoid some overhead dealing with NewCol. hhvm Session: Preserve user save handler on session_destroy. Fix mapping the shared area of RDS in Cygwin. Make ThreadManager initialization explicit, rather than load-time. Fix fread on an SSL socket potentially waiting for data from socket when OpenSSL already has data.
3.6.013 Mar 2015 00:05 major feature: HHVM 3.6 is a long term support release and comes with lots of new goodies. In particular, many new Async features are now available by default including AsyncMySQL and MCRouter (memcache) support. Combined with existing support for asynchronous cURL, applications are now ready to deeply parallelize many common forms of costly data access.
3.5.021 Jan 2015 15:25 major feature: Better error handling in the PDO extension. More HNI conversions (faster build times, more separable extensions). Allow calling closures inline. stream_await for async stream "blocking".
3.4.021 Nov 2014 12:05 major feature: Added support for Closure::bind(). Add runtime and typechecker support for null-safe method call operator "?- ". Add benchy.py for benchmarking HHVM. More HNI conversions. Improvements to . Hack support for abstract final classes. Hack reflection support for first-class enums. Plenty of HHBBC improvements.
3.3.129 Oct 2014 07:30 minor bugfix: Fixed crashes when using Enum. Many typechecker fixes. Default config file location is always /etc/hhvm/php.ini. Fixes to the zend compat layer. Memcached ASCII protocol fix. Support custom stream wrappers in XMLReader::open(). Keep alive is ignored in FastCGI. CVE-2014-3670: Fix heap corruption in exif_ifd_make_value CVE-2011-0752: Don t allow extract() to overwrite GLOBALS or this.
3.3.019 Sep 2014 01:03 major feature: Support for async lambda functions in Hack. Destructors for objects that are still alive at the end of the request are now called by default. Much more of XDebug is implemented (including remote debugging and profiling); the ini settings are currently prefixed with hhvm.xdebug-not-done instead of hhvm - so, it can be enabled with hhvm.xdebug-not-done.enable=1. Implemented APCIterator. INI settings are now more widely supported, and more consistent. Added a user attribute for non-static methods with 0 arguments. Added the GMP extension. It is now possible to load dynamic extensions from INI files. Multiple default blocks in a single switch are now a parse error. Improved reflection compatibility. Added typechecker support for interface requirements (similar to trait requirements). Added support for PHP5.6-style argument unpacking: f( x, y, . args). Assorted performance and memory usage improvements. Many extensions converted to HNI. Improved HNI support for variadic functions. hhvm-dev package added, making it possible to build some third-party extensions without rebuilding HHVM itself. CVE-2014-6229: potential security leak in HashContext CVE-2014-3597: Possible segfault in DNS response overrun
3.2.025 Jul 2014 21:11 major bugfix: Over 100 bugfixes have been applied since the last lockdown. Security fixes encompas the PHP session serializer injection vulnerability, a segfault on memory exhaustion within function declarations, and a NUL byte poisoning fix was applied. hh_client and hh_server now build on OSX and don t need .hhi files. All FastCGI params now appear in _SERVER. And php_errormsg works. HHVM now signals PHP 5.6 support via the PHP_VERSION constant.