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
isandasoperators withvarrayanddarraytypes. These types are equivalent tovecanddictsince HHVM 4.103.
Breaking Changes
- Trying to convert an object to an
intorfloatnow 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
.hhconfigoptionis_array=truecan 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_comparehhvm.hack_arr_compat_fb_serialize_hack_arrays_noticeshhvm.hack_arr_compat_is_vec_dict_noticeshhvm.hack_arr_compat_compact_serialize_noticeshhvm.hack_arr_compat_cast_marked_array_noticeshhvm.hack_arr_is_shape_tuple_noticeshhvm.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
switchstatements where the type of theswitchexpression is different from any of thecaseexpressions. - For easier migration, the INI option
hhvm.notice_on_coerce_for_eq=1can be used to raise a notice whenever values of different types are compared using these operators (set to2to throw an exception).
- This will also affect