HHVM 4.57
HHVM 4.57 is released! This release marks the end of support for 4.51; HHVM 4.52–4.56 remain supported, as does the 4.32 LTS release.
Highlights
Shapes::idx()
now accepts a nullable first argument (consistently withidx()
).
Breaking Changes
- We no longer build packages for Ubuntu 16.04 (Xenial), Debian 8 (Jessie), and Debian 9 (Stretch). Building from source is also no longer supported on systems with GCC 6 or older, or with OpenSSL older than 1.1.0.
- Docker images are now based on Ubuntu 20.04 instead of 18.04.
- Attempting to declare the
“magic method”
__call
is now a parser error. It had already been a typechecker error, but now it is also a fatal error at runtime. - The typechecker no longer declares
FormatString
in the root namespace (\FormatString
). Use\HH\Lib\Str\SprintfFormat
(compatible with\HH\Lib\Str\format()
) or\HH\FormatString
(compatible withsprintf()
) instead. - Fixed a bug where accessing an instance variable of a
dynamic
value could cause the typechecker to report an error with primary position in a different file. This doesn’t introduce any new errors but may require someHH_FIXME
s to be moved.
Future Changes
- In a future release, the internal representation of function/method
references (i.e., the values returned by
fun()
,class_meth()
, orinst_meth()
) may change.- Currently, the internal representation is a string (for functions), or an array (for methods). In the future, this will likely change to a native function/method reference type, incompatible with string/array. Any code that relies on the current internal representation (e.g. by passing a function reference where a string is expected) will need to be fixed.
- It is already a typechecker error to use function/method references in
place of string/array values, so the change only affects runtime behavior
of code that uses
HH_FIXME
to squelch the typechecker error. - The INI option
hhvm.enable_func_string_interop=0
can be used to test the new behavior now.