HHVM 4.116
HHVM 4.116 is released! This release marks the end of support for 4.110; HHVM 4.111–4.115 remain supported, as do the 4.80 and 4.102 LTS releases.
Highlights
- Enum inclusion: It is no longer an error to indirectly include the same enum multiple times (example).
- It is no longer an error to use the
is
andas
operators withvarray
anddarray
types. These types are equivalent tovec
anddict
since HHVM 4.103.
Breaking Changes
- Trying to convert an object to an
int
orfloat
now throws an exception (previously it would raise a notice). - After an
is_array($value)
check, the typechecker now more precisely refines the type of$value
. This may reveal some previously hidden errors.- In previous HHVM versions, the
.hhconfig
optionis_array=true
can be used to enable this behavior. This option was removed in HHVM 4.116.
- In previous HHVM versions, the
- Various legacy array compatibility INI options were removed (they had no
effect or didn’t work as expected since
HHVM 4.103):
hhvm.hack_arr_compat_check_compare
hhvm.hack_arr_compat_fb_serialize_hack_arrays_notices
hhvm.hack_arr_compat_is_vec_dict_notices
hhvm.hack_arr_compat_compact_serialize_notices
hhvm.hack_arr_compat_cast_marked_array_notices
hhvm.hack_arr_is_shape_tuple_notices
hhvm.hack_arr_dv_arrs
Future Changes
- In the future, the “fuzzy” comparison operators
==
and!=
will no longer treat values of different types as equal (similarly to their strict variants===
and!==
).- This will also affect
switch
statements where the type of theswitch
expression is different from any of thecase
expressions. - For easier migration, the INI option
hhvm.notice_on_coerce_for_eq=1
can be used to raise a notice whenever values of different types are compared using these operators (set to2
to throw an exception).
- This will also affect