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.
(class|function|interface|trait)_existsfunctions 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
var_dump()now distinguishes between
darrays by default, instead of reporting both as
is shape(...)requires a
is tuple(...)requires a
ischecks 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.
- All special-casing for
arrayhas been removed from the parser. It is now parsed as a
nametoken, like user-defined types.
array_fill_keys()will require that
Container<Tk as arraykey>; this will allow specifying a
darray<Tk, Tv>return type. Currently, it will return
$keysis not a