HHVM 4.22 is released! This release marks the end of support for 4.16;
4.17-4.21 remain supported, as do the LTS releases 3.30 and 4.8.
Highlights
- The Hack language parser has been rewritten in Rust (previously OCaml). In the
previous two HHVM versions, using the new parser was optional, but this
release completely removes the old parser and the new parser is now always
used. This should not cause any user-facing changes, but if you see any
differences in behavior or other issues, please
open a GitHub issue.
- Fixed various bugs at docs.hhvm.com
(wrong namespaces, missing links, etc.)
Breaking Changes
- fixed a bug that allowed arbitrary values to be coerced to
?dynamic
1
2
3
| function foo(): ?dynamic {
return 42; // now an error
}
|
- it is now a typechecker error to specify generic type parameters for
dynamic
(previously they were simply ignored)
- fixed a bug that prevented the typechecker from correctly detecting conflicting
use const
declarations in some cases
1
2
3
| use const Foo\A as A;
...
use const Foo\B as A; // now an error, previously not always an error
|