HHVM 4.30.0
HHVM 4.30 is released! This release marks the end of support for 4.24; 4.25–4.29 remain supported, as do the LTS releases 3.30 and 4.8.
Highlights
- fixed handling of parsing errors in the
mailparseextension (issue #8532) - the typechecker now considers most built-in “auto-imported” types
to be in the
HHnamespace (HH\dict,HH\Container, etc.), consistently with how the runtime already treated them- previously, the typechecker incorrectly considered them to belong to the
root namespace, so this fixes cases where the typechecker would report
errors in correct code (
HH\dict), or not report errors in code that would fail at runtime (\dict) - that said, as these types are auto-imported, it is never necessary, and not
recommended, to refer to them using their fully qualified names (use
dictinstead ofHH\dict, etc.) - specific types fixed in the current release:
vec,dict,keyset,Container,KeyedContainer,Traversable,KeyedTraversable,Iterable,KeyedIterable,Iterator,KeyedIterator,AsyncIterator,AsyncKeyedIterator,AsyncGenerator
- previously, the typechecker incorrectly considered them to belong to the
root namespace, so this fixes cases where the typechecker would report
errors in correct code (
Breaking changes
- it is no longer possible to override built-in types using
usestatements (use MyVector as Vector,use MyType as string, etc.) - fixed a few remaining places where built-in types were still treated as case-insensitive (should not affect most users, as they were already treated as case-sensitive almost everywhere)
Future changes
- we are starting to work on deprecating PHP-style anonymous functions
(
function($num) { return $num * 2; }) in favor of lambdas ($num ==> $num * 2)- you can test this by adding
error_php_lambdas=trueto your.hhconfig(this will likely become the default behavior in the future)
- you can test this by adding
- we are working on extending
fb_serialize()to correctly distinguish between all the different array-like types (vec,dict,keyset,varray,darray,array)- these changes should be backwards compatible, generally hidden behind new flags