HHVM 4.79
HHVM 4.79 is released! This release marks the end of support for 4.73; HHVM 4.74–4.78 remain supported, as do the 4.32 and 4.56 LTS releases.
Highlights
- Introducing new function reference syntax. See
updated guide.
For example:
fun('foo')
becomesfoo<>
class_meth(Foo::class, 'bar')
becomesFoo::bar<>
Breaking Changes
- HHVM now raises a notice when a method is called with incorrect case (e.g.
$obj->Foo()
instead of$obj->foo()
). The typechecker had already been raising errors in all such cases. In the future, we expect these notices to become runtime errors.- the notices can be temporarily disabled using the INI option
hhvm.raise_on_case_insensitive_lookup_v2=false
- the notices can be temporarily disabled using the INI option
- The typechecker now raises an error if
new self(...)
ornew parent(...)
is used inside a class with reified generic type parameters. - The typechecker now raises an error when trying to pass a
dynamic
-typed value where an enforceable reified generic type is expected. - Some typechecker errors were moved to a more appropriate location. This
doesn’t introduce any new errors, but may require HH_FIXMEs to be moved. This
includes:
- calling a function with the wrong number of arguments (now an error at the point of the call, instead of the function declaration)
- passing a non-reified generic type parameter where a reified one is expected
Future Changes
- The built-in functions
fun
andclass_meth
will be removed in a future HHVM release, in favor of the new function reference syntax. - We expect method names to become case sensitive soon (currently a typechecker error but only a notice at runtime, see above).