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_definitions
flag to be on by default in a future release. This is different to the previousdisable_partially_abstact_typeconstants
option, which disables the ability to override them. - Error messages for now report generic type constraints, e.g.
expected T as string
instead of justexpected T
- Improved error message for variadic functions where type and name aren’t specified.
- The typechecker now treats
is nonnull
the 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_VERSION
and 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.