HHVM 4.78
HHVM 4.78 is released! This release marks the end of support for 4.72; HHVM 4.73–4.77 remain supported, as do the 4.32 and 4.56 LTS releases.
Highlights
- The
(class|function|interface|trait)_exists
functions are now more optimized in repo-authoritative mode. This takes advantage of the fact that all HHBBC definitions are now unique and persistent. - Improved the typechecker error for invalid
(string)
casts. var_dump()
now distinguishes betweenvarray
s anddarray
s by default, instead of reporting both asarray
.
Breaking Changes
is shape(...)
requires adarray
, andis tuple(...)
requires avarray
;is
checks with reified generics are now consistent with this when the generic is a shape or tuple. Previously, reified generics were more permissive.require()
and related functions no longer support URIs, e.g.file://foo.hack
.- All special-casing for
array
has been removed from the parser. It is now parsed as aname
token, like user-defined types.
Future Changes
- calling
array_fill_keys()
will require that$keys
is aContainer<Tk as arraykey>
; this will allow specifying adarray<Tk, Tv>
return type. Currently, it will returnnull
if$keys
is not aContainer
.