HHVM 4.13 is released! This release marks the end of support for the 4.7.x series.
- Fixed positions (incorrect ‘PRIMARY ERROR POSITION IS NOT IN CURRENT FILE’)
for certain await expression that were implicitly rewritten as
- improved performance for
asexpressions with wildcard generics when not using repo-authoritative mode (~ 5x in some tests).
hhvm.trust_autoloader_pathoption (defaults to false); if true, the autoloader will not invoke
- improved subtyping of shapes.
- calling undefined functions now only raises an unbound function typechecker error, instead of both an unbound function and unbound global constant error.
- null checks in
ifstatements now refine the type in both the
- when Xenon is enabled, fix race condition that can lead to the HHVM process being terminated during startup.
zend_version()have been removed.
- it is now a parse error to declare or invoke constructors with by-reference parameters.
HH\global_get_safe()as it functioned identically to
- improved shape subtyping can lead to needing to suppress error 4110 (type error) where error 4166 (unknown field) is currently suppressed.
- assignments in ternary expressions can now assign type information - for
($foo ? $x = 1 : $x = 2),
$xis an int. This is expected to reduce the number of errors for safe code, but may raise new errors in some situations.
Shapes::keyExists($shape, 'field')now refines the type in the same way as
$shape is shape('field' => mixed, ...). This is expected to reduce the number of errors for safe code, but may raise new errors in some situations.
- To remove conflicts with other planned syntax changes, the syntax for soft
type hints will be changing from
<<__Soft>> sometype $foo; this new syntax is supported for experimental use.