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
funandclass_methwill 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).