HHVM 4.87 is released! HHVM 4.81–4.86 remain supported, as do the 4.56 and 4.80 LTS releases.


  • Packages for Ubuntu 20.10 are now available.
  • The built-in functions apc_add and apc_store now take a 4th, optional argument. If this argument is provided, then the value stored in APC will be evicted if it’s not accessed for the specified number of seconds (even if the TTL specified in the previous argument hasn’t been reached yet).
  • Improved various typechecker error messages.

Breaking Changes

  • The .hhconfig option disallow_goto was removed—it is no longer possible to enable goto statements. It had been true by default in all recent HHVM versions.
  • Indexing into a string using a non-arraykey value (not int or string) now causes an InvalidArgumentException to be thrown at runtime. String indexes like '42' stay supported for historical reasons, but generally shouldn’t be used. Using any non-int value, including strings, had already been a typechecker error.

Future Changes

  • ArrayIterator and all the collections’ iterators (VectorIterator, MapIterator, etc.) are deprecated. Most use cases can be replaced by foreach loops, which HHVM can also optimize in the JIT. For the remaining cases, the current implementation can be replicated in pure Hack code.
    • There are a few behaviors, like “casting to array” and serialization, where the runtime treats these classes specially; those won’t be supported going forward.