HHVM 4.107
HHVM 4.107 is released! This release marks the end of support for 4.101; HHVM 4.102–4.106 remain supported, as does the 4.80 LTS release.
Highlights
- Added an hhconfig option to ban partially abstract type constants; we expect the
disallow_partially_abstract_typeconst_definitionsflag to be on by default in a future release. This is different to the previousdisable_partially_abstact_typeconstantsoption, which disables the ability to override them. - Error messages for now report generic type constraints, e.g.
expected T as stringinstead of justexpected T - Improved error message for variadic functions where type and name aren’t specified.
- The typechecker now treats
is nonnullthe same as!== null; both already had special cases in type refinement, but some were exclusive to!== null. - IDE autocompletion is now supported for XHP enum attributes.
Future Changes
php_version(),PHP_VERSION,PHP_VERSION_ID,PHP_MAJOR_VERSIONand related constants/functions will be removed, as they are misleading. If you need to detect if specific PHP5-compatible behaviors are enabled, useini_get('hhvm.php7.foo'). The PHP5-compatible behaviors remain unsupported and are disabled by default.- repo-authoritative mode repositories are now a custom format instead of sqlite; this should only affect deployment workflows that are explicitly examining the contents of the file.
#comments will be used; use//or/*comments instead.#!will still be ignored if it is the first line of a file, i.e. a ‘shebang’ line, such as#!/usr/bin/env hhvm. We expect to re-use the#token for new syntax in a future release.