HHVM 4.133
HHVM 4.133 is released! HHVM 4.128–4.131 remain supported, as do the 4.102 and 4.128 LTS releases. HHVM 4.132 was skipped due to issues with the nightly builds.
Highlights
dynamicvalues can now be used as container keys. The containers will then be inferred to be keyed byarraykeys, so can not be used asT<int, _>orT<string, _>.- if a debugger is attached, the JIT will never be used, and the JIT will never be disabled in the middle of a request for the debugger. This improves debugger reliability.
- fixed order-dependent autoloader issues for enum classes including other enum classes.
- when a static property is used as an instance property, the error message now correctly says ‘static property’ instead of ‘static method’.
- fixed
Str\format()accidentally using the request locale. - fixed
hackfmtadding unwanted blank lines to the top of files. - updated build environment to OCaml 4.12 and Rust/Cargo v2021.10.21.
Breaking Changes
- hash comments are no longer supported, and are a parse error. Use
//comments instead. - Files without a
.php,.hack,.hackpartial, or.hhiextension will now be consistently parsed as if they were.hackfiles.- previous behavior was context-dependent.
- this change includes both files with other extensions, and files with no extension.
- this may break legacy extensions such as
.hckand.hh, as<?hhtokens are banned in.hackfiles.
- it is now an error to call
parent::__construct()from a trait, unless the parent has<<__ConsistentConstruct>>. - it is now an error for a constructor to read properties defined by a parent
class before calling
parent::__construct(). - updated Thrift and mcrouter versions to v2021.11.18; supporting libraries and tools may need an update if you are using these extensions.
Future Changes
.phpfiles remain deprecated, and support may be removed in a future release;.hackis strongly recommended instead.hackpartialand.phpfiles with<?hh // partialremain deprecated, and support will likely be removed in a future release..hackis strongly recommended instead.