HHVM 4.100 发布,高速开源虚拟机
HHVM 4.100 正式发布,此版本的发布标志着 4.94 版本的支持将终止。HHVM 4.95–4.99,以及 4.56 和 4.80 LTS 版本还会继续获得支持维护。
HHVM(HipHop Virtual Machine)是一个开源虚拟机。HHVM 由 Facebook 开发,该项目的源代码托管在 GitHub 上。从 4.0 版本开始,不再支持 PHP 语言。
亮点
- 类型检查器现在利用了
switch语句是穷尽性的保证(这一点从 HHVM 4.80 开始就在运行时强制执行),即至少保证switch语句的一个分支被执行(或者抛出一个异常)。- 这使得类型检查器可以正确地推断出任何变量的类型,这些变量在
switch语句的所有分支中都被设置,从而允许一些之前被拒绝的程序通过。
- 这使得类型检查器可以正确地推断出任何变量的类型,这些变量在
重大更改:
- 删除了内置属性
<<__Pure>>和所有相关属性 (__AtMostRxAsArgs、__AtMostRxAsFunc、__Cipp、__CippGlobal、__CippLocal、__MaybeMutable、__Mutable、__MutableReturn、__NonRx、__OnlyRxIfImpl、__OwnedMutable、__ReturnsVoidToRx)。它们已经被 contexts 和 capabilities 所取代。 - 如果
is和as运算符被用于类型nothing($x is nothing,$x as nothing) ,类型检查器现在会引发错误。
未来的变化
- 在未来,使用任何一个带有不兼容类型的值的位运算符都会导致在运行时抛出异常(所有这些情况都会引起 typechecker 错误)。受影响的操作符包括:
&、|、^:两个操作数都必须是整数或者两个操作数都是字符串。~(单数):操作数不能是双数。<<、>>:两个操作数都必须是整数。- 同样的规则也适用于各自的赋值运算符 (
&=、<<=等). - INI 选项
hhvm.notice_on_coerce_for_bit_op=2现在可以用来启用的未来行为(设置为1可以引发一个通知而不是抛出一个异常)。