3.10.022 Oct 2015 21:40
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.
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
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
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
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
There aren t any ultra-shiny new features in this release, but it contains
a long list of performance improvements, compatibility tweaks, and bug
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
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
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
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
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
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.
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
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.