HHVM 4.69 is released! This release marks the end of support for 4.62; HHVM 4.64–4.68 remain supported, as do the 4.32 and 4.56 LTS releases.

Breaking Changes

  • Directly implementing the same interface twice with multiple generics is now banned, due to incorrect over-permissiveness; for example, in class Foo implements IBar<string>, IBar<int> {}, only IBar<string> would be properly enforced.
  • The hhvm.check_return_type_hints runtime option has been removed.
  • It is now a typechecker error to attempt to directly construct an IntlIterator.
  • Building an authoritative repository (repo-auth-mode) will now fail if you have duplicate classes, type aliases, or records (potential future feature) with the same name. Previously, it was an error to have two classes with the same name or two type aliases, but not an error to have a type alias with the same name as a class, for example.
  • fun() now returns a distinct type, not a string; this will not pass string typehints. For now, string variables are still invocable, but this will change, and is highly discouraged.