HHVM 4.156 is released! This release marks the end of support of 4.149; 4.150 - 4.155 remain supported, as does the 4.128 LTS release.


  • A lint error is no longer raised for HH\FIXME_UNSAFE_CAST<mixed, T>($expr) if the type of $expr is non-denotable and expression-dependent, e.g. if IDE hover information or hh_client --type-at-pos shows a type like <expr#1>::T
  • HH\serialize_with_options now supports a disallowObjects option, which disallows serialization of objects except for legacy Hack Collections.
  • Numeric literals can now contain underscores to improve code readability; for example, $x = 1_234_567_890; sets $x to the integer 1234567890.
  • Performance improvements for reified generics.
  • All built-in attributes have IDE hover documentation.

Breaking Changes

  • lambdas contained within an anonymous function will no longer implicitly capture variables from the parent scope of the anonymous function, unless the variable is in the anonymous function’s use clause