PHP8发布首个Alpha版本开源中国

白癜风应该怎么样治疗 http://disease.39.net/yldt/bjzkbdfyy/6088716.html

按照发布计划,PHP8将于今年11月26日发布,而原定于6月18日发布的第一个Alpha版本跳票到了今天发布。

PHP8是一个新的主要版本,它引入了一些重大变更,以及许多新特性和性能改进,下边简单介绍一些亮点:

JIT,Just-In-Time,即时编译

最重大的特性非JIT莫属。该特性的研发历时多年,熬过了PHP5与7大版本系列(PHP6项目流产),直到去年3月份才最终通过投票确认将进入PHP8。

JIT是一种编译器策略,它将代码表述为一种中间状态,在运行时将其转换为依赖于体系结构的机器码,并即时执行。在PHP中,这意味着JIT将为ZendVM生成的指令视为中间表述,并以依赖于体系结构的机器码执行,也就是说托管代码的不再是ZendVM,而是更为底层的CPU。

虽然自PHP7.0以来,通过优化核心数据结构HashTable、强化ZendVM中某些操作码与持续改进OPCache的Optimizer组件等具体措施,PHP性能得到了显著提升,但是实际上这些优化似乎已经走到极限了。现在JIT从底层着手,被认为是目前提升PHP性能的最佳出路。

关于引入JIT后的性能对比(以及PHP8整体性能),可以参考一下本月Phoronix的基准测试(注:用的是5月底的源码构建版进行的测试)。

UnionTypes,联合类型

UnionTypes支持接收多个不同类型的值,它是两种或多种类型的集合,使用时可以选择其一。包括PHP在内的开源生态的标准库中使用联合类型非常普遍,PHP支持联合类型,将会允许将更多类型信息从phpdoc迁移至函数签名。可以说,泛型之后,联合类型是目前类型声明系统中最大的突破口。

Attributes,注解

这里的Attributes也就是其它语言中的annotations(注解),它提供了一种向类添加元数据的方法,无需解析文档块。

新的static返回类型

虽然已经可以返回self,但是考虑到PHP具有动态类型的性质,PHP8中支持static返回类型将更加高效,对于许多开发者来说应当非常有用。

WeakMap,弱映射

WeakMaps允许创建从对象到任意值的映射(类似SplObjectStorage),而不会阻止对用作key的对象进行垃圾回收。只要将对象添加到WeakMap中,GC在触发条件时就可以将其占用内存回收。

PHP7.4中,实际上已经引入了对WeakReference(弱引用)的支持。但是,原始的弱引用本身用途有限,而弱映射在实践中更为常用。由于没有提供注册销毁回调的功能,因此无法在PHP弱引用之上实现有效的弱映射。弱映射的一般用例是将数据与单个对象实例相关联,而不强迫它们保持活动状态,避免长时间运行的进程无谓地占用内存。

此外还注意到几个处于投票阶段的特性(也就是可能比较快会并入某个版本中的),像matchexpression(匹配表达式)与使用

或#[]替代的提案都是比较值得


转载请注明:http://www.aierlanlan.com/cyrz/3949.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了