HHVM 4.166 is released! 4.163 - 4.165 remain supported, as do the 4.128 and 4.153 LTS releases.

Dropping support for Ubuntu 21.04 and 21.10

This release does not compile on Ubuntu 21.04 and 21.10. Both versions have reached End of Life earlier this year according to this post and this post. We are aware that we have not provided deb packages for Ubuntu 22.04 LTS. For now, Ubuntu 22.04 users could try our experimental HHVM binary built with Nix, which should be able to run on any Linux distribution.


  • Added support for upcasts in initializer expressions, e.g. class C { public dynamic $d = 3 upcast dynamic; }
  • Added support for typechecking quote flag %'(char) in sprintf.
  • Added support for <<__Docs("http://example.com")>> to type, newtype, enums and enum classes, which shows the docs URL in the IDE’s hover information
  • Added a quickfix for Lint 5643 (Comparing booleans with values)

Breaking Changes

  • Memoized functions with any of the following attributes now require the defaults capability:
    • <<__Memoize(#SoftMakeICInaccessible)>>
    • <<__Memoize(#MakeICInaccessible)>>
    • <<__PolicyShardedMemoize>>
    • <<__PolicyShardedMemoizeLSB>>
  • Make null default parameter with non-nullable type hint result in error
  • Always error on nested Expression Trees
  • Lambdas and calls in Expression Trees are now virtualized:
    • Lambdas are now wrapped in lambdaType(...).
    • Calls are now translated to __unwrap() method instead of direct invoking.