HHVM 4.172
HHVM 4.172 is released! 4.169 - 4.171 remain supported, as do the 4.168 and 4.153 LTS releases.
Highlights
- Fixed a bug preventing classes using a trait with
require class <that class>
from being mocked. (commit) - Regular expression functions now have a new error type, for when regular expressions jitted by PCRE run out of scratch space: PREG_JIT_STACKLIMIT_ERROR These would previously be reported as generic internal errors, which made debugging tricky. (commit)
Breaking Changes
- Two compiler options have been renamed - when compiling a repo the compiler
will no longer accept
--module
or--cmodule
options as of this release. Please use their new names--dir
and--cdir
instead (new names added in release 4.169). This change is intended to avoid confusion wht the ‘modules’ experimental feature. (commit) - The typechecker now disallows overriding an async method with a non-async one. This was previously allowed as long as the types in the signature were compatible, but this made it easy to accidentally write subtle bugs by leaving off the async keyword on the overriding method. (commit)
- When using the ‘modules’ experimental feature, note that the default value of the Eval.EnforceModules runtime option is changing from 1 (warn) to 2 (throw exceptions). (commit)
- When using the like_type_hints experimental feature, note that this release
changes how these types (the union of
dynamic
and another type; e.g.~int
for the union ofdynamic
andint
) are enforced in argument and return type positions. Previously they were enfoced the same as thedynamic
type (i.e. any value would be accepted) but after this release they are enforced as the other type in the union would be (e.g. for~int
only integer values will now be accepted). (commit) See also (commit) for related changes adding new ways to write aspirational, un-enforced types via helpers in theHH\FIXME
namespace.