php8什麼時候發布? PHP開發者非常期待,2020.6.25號 PHP團隊發布了第一個測試版本 Alpha1(PHP 8.0.0),預示著PHP8正式啟動發布週期!
官方PHP 8.0.0 首版發佈公告如下圖:
PHP 8 發佈Alpha 版本,下載網址:
https://www.php.net/archive/2020.php
PHP 8 是一個新的主要版本,它引入了一些重大變更,以及許多新特性和效能改進,下邊簡單介紹一些亮點:
JIT,Just-In-Time,即時編譯
大家最關心的特性非JIT 莫屬。此特性的研發歷時多年,熬過了 PHP 5 與 7 大版本系列(PHP 6 專案流產),直到去年 3 月才最終透過投票確認將進入 PHP 8。
JIT 是一種編譯器策略(參考文章:PHP JIT是什麼?PHP8 新特性之JIT 圖文詳解),它將程式碼表述為一種中間狀態,在運行時將其轉換為依賴體系結構的機器碼,並即時執行。在PHP 中,這意味著JIT 將為Zend VM 產生的指令視為中間表述,並以依賴體系結構的機器碼執行,也就是說託管程式碼的不再是Zend VM,而是更為底層的CPU 。
雖然自PHP 7.0 以來,透過優化核心資料結構HashTable、強化Zend VM 中某些操作碼與持續改進OPCache 的Optimizer 元件等具體措施,PHP 效能得到了顯著提升,但實際上這些最佳化似乎已經走到極限了。現在 JIT 從底層著手,被認為是目前提升 PHP 效能的最佳出路。
關於引入 JIT 後的性能對比(以及 PHP 8 整體性能),可以參考一下本月 Phoronix 的基準測試(註:用的是 5 月底的源碼構建版進行的測試)。
Union Types,聯合類型
Attributes,註解
以詳細了解:
雖然已經可以返回self,但是考慮到PHP 具有動態類型的性質,PHP 8 中支援static 返回類型將更加高效,對於許多開發者來說應當非常有用。
WeakMaps 允許建立從物件到任意值的對應(類似SplObjectStorage),而不會阻止對用作key 的物件進行垃圾回收。只要將物件加入 WeakMap 中,GC 在觸發條件時就可以將其佔用記憶體回收。
PHP 7.4 中,實際上已經引入了 WeakReference(弱引用)的支援。但是,原始的弱引用本身用途有限,而弱映射在實踐中更為常用。由於沒有提供註冊銷毀回呼的功能,因此無法在 PHP 弱引用之上實現有效的弱映射。弱映射的一般用例是將資料與單一物件實例相關聯,而不強迫它們保持活動狀態,避免長時間運行的進程無謂地佔用記憶體。
關於WeakMap/WeakReference,可以參考這篇的WeakRef 部分,雖然講的是JS,但原理是相通的:
#https:/ /www.html.cn/web/javascript/19449.html 更多的相關功能可以看:##
此外還注意到幾個處於投票階段的特性(也就是可能比較快會併入某個版本中的),像match expression(匹配表達式)與使用@@ 或#[] 替代< ;> 的提案都是比較值得關注的:
要注意的是,PHP 8 是一個重大更新版本,帶了一些重大變更,所以最好查看 UPGRADING 文件的相關事項。不過實際上,其中許多重大變更在先前的 7.* 版本中已經引入,因此,如果你一直保持最新版本,那麼升級到 PHP 8 也影響不大。
PHP 8成功就是第二個JAVA,會有大量其它語言開發者回歸PHP陣營!畢竟又快又簡單!大家一起期待吧!
【相關推薦】