HHVM 4.42
HHVM 4.42 is released! This release marks the end of support for 4.35; HHVM 4.36–4.41 remain supported, as do the 4.8 and 4.32 LTS releases.
Highlights
- Bugs in the typechecker’s AST handling now result in error
4361
, instead of an exception. This error code should never be suppressed - please file a bug report if you see this error code. - Fix escaping of variables autocomplete snippets - e.g.
Foo::bar|
can now autocomplete toFoo::bar($id)
. - Added
HHVM_VERSION_MAJOR
,HHVM_VERSION_MINOR
, andHHVM_VERSION_PATCH
constants; these should be used instead of parsing theHHVM_VERSION
orHHVM_VERSION_ID
constants.HHVM_VERSION_ID
is recommended for direct comparisons, e.g. with>=
. - Added
\HH\enumname<T>
type to the runtime; this is similar toclassname<T>
, for Hack enums. - Fixed crash in
readdir()
andrewinddir()
if the directory is already closed;false
will be returned instead. - Improved error message for
() ==> async {}
(returning an async block); it now suggestsasync () ==> { }
instead (an async lambda).
Breaking Changes
- If an interface defines a constructor, the typechecker now requires that classes that implement the interface are either abstract, or implement the constructor in accordance with the interface, matching the behavior for other methods.
Future Changes
- We will stop building any binaries for MacOS High Sierra on March 23rd, as our provider is ending support for this operating system version. We will continue to build packages for Mojave (which are usable on Catalina), and expect to begin building packages specifically for Catalina from early February.
HHVM_VERSION_ID
will change fromXX.YY.ZZ
toXX.YYY.ZZ
, to support the expected release of HHVM 4.100 later this year; if using standard comparison operators to compare two version IDs, this should not be a significant change, unless checking for< 50000
or similar - replace that check withHHVM_VERSION_MAJOR === 4
. If you’re converting to/from human-readable form, consider migrating to the newHHVM_VERSION_MAJOR
,HHVM_VERSION_MINOR
, andHHVM_VERSION_PATCH
or existingHHVM_VERSION
(string “x.y.z”) constants.- The special behavior of
ArrayAccess
objects is being removed.- this is already a typechecker error.
- this includes
$x['foo']
for both read and write (replace with explicitoffsetSet
oroffsetGet
calls) - this also includes
isset($x['foo'])
($x->offsetExists('foo')
) andunset($x['foo'])
($x->offsetUnset('foo'
). - the
hhvm.notice_on_array_access_use=true
INI setting can be used to raise notices for this behavior at runtime.