HHVM 4.92
HHVM 4.92 is released! This release marks the end of support for 4.83; HHVM 4.84–4.91 remain supported, as do the 4.56 and 4.80 LTS releases.
(Note: HHVM 4.85, 4.89 and 4.90 were skipped.)
Highlights
- If a class A is a supertype of class/interface B via
require extends, it is now able to call its’ own private methods on instances of B. - Replaced sometimes-confusing “expected dynamic, got nonnull” with clearer
“expected dynamic, got mixed”. While
nonnullwas technically accurate (asmixedis?nonnull), some users misinterpreted the error as meaning thatnullwas expected, or still considermixedvalues to bemixedafter a null check.
Breaking Changes
- Corrected error line number for reified generic errors; FIXME comments may need to be moved.
- The
APCIteratorclass has been removed from the runtime, as it has generally not been kept up to date or correct, and was not exposed to the typechecker. apc_cache_info()now correctly returns anuncounted_entrieskey instead ofuncounted_entires.- Calling methods on
dynamicvalues requires that all values are coercible todynamic, and the return type will bedynamic. - it is now a syntax error to declare a function as
asyncwithout anAwaitablereturn type; previously this was separately checked by the type checker and the bytecode emitter, and the typechecker did not detect invalid async lambdas.