HHVM 4.117 is released! This release marks the end of support for 4.111; HHVM 4.112–4.116 remain supported, as do the 4.80 and 4.102 LTS releases.


Breaking Changes

  • The Stringish interface no longer declares a __toString() method. This method is now declared only on the StringishObject interface (added in HHVM 4.115).
    • The declaration of __toString() on Stringish was misleading, since string is a subtype of Stringish but trying to call any method on a string value results in a runtime error.
  • Various legacy array compatibility INI options were removed (they had no effect or didn’t work as expected since HHVM 4.103):
    • hhvm.raise_array_serialization_notices
    • hhvm.hack_arr_compat_intish_cast_notices
    • hhvm.hack_arr_compat_notices
    • hhvm.array_provenance

Future Changes

  • As announced last week, in the future, the “fuzzy” comparison operators == and !=, as well as switch statements, will no longer treat values of different types as equal.
    • The INI option hhvm.notice_on_coerce_for_eq now supports a new value, 3. This enables the new behavior, i.e. comparing values of different types will return false. We recommend setting this option to 1 (raise notices) or 2 (throw exceptions) first to catch any comparisons that would be affected.