V8 JavaScript 引擎7.2 Beta 版發布支持公共class 字段
V8 JavaScript引擎7.2已發布,開發團隊表示目前尚處於Beta版階段,正式版將會於幾週後和Chrome 72 Stable一起推出。V8 v7.2提供了很多面向開發者的新特性,下面我們不妨簡單看一下。
內存
現在,在ia32架構中默認支持並啟用嵌入式內置函數( Embedded builtins )。
性能
JavaScript 解析
平均而言,網頁花費了V8 啟動時所用時間的9.5% 來解析JavaScript。因此,7.2 版本專注為V8 提供最快的JavaScript 解析器,全面提高解析速度。從7.0 開始,桌面上的解析速度提高了大約30%。下圖顯示了過去幾個月Facebook 加載基準測試的顯著改進。
Facebook.com 上的V8 解析時間(越低越好)
開發團隊在不同場合都對解析器進行了優化,下圖顯示了幾個熱門上相對於最新7.2版本的改進。
總而言之,最近的改進將平均解析時間百分比從9.5% 降低到7.5%,從而加快了加載時間並提高了響應速度。
async/await
V8 v7.2帶來了更快的async/await實現,並在默認情況下啟用。同時,開發團隊制定了一個規範提案,目前正在收集Web兼容性數據,以便將更改正式合併到ECMAScript規範中。
WebAssembly
開發團第表示,在分析了許多WebAssembly 基準測試後,最後選擇通過它們來指導頂級執行層中的代碼生成。特別是,V8 v7.2 在優化編譯器的調度程序和後端循環旋轉(loop rotation)中啟用了節點拆分(node splitting)。此外,還改進了封裝器緩存並引入了自定義封裝器,以減少調用導入的JavaScript 數學函數的開銷。最後,開發團隊設計了對寄存器分配器的更改,以改善許多代碼模式的性能,這些代碼模式將在更高版本中出現。
JavaScript 語言特性
V8 7.2新增對公共class字段( public class fields )的支持,例如下面的舊寫法:
class Animal { constructor(name) { this.name = name; }}class Cat extends Animal { constructor(name) { super(name); this.likesBaths = false; } meow() { console.log('Meow!' ); }}
現在可以這樣寫:
class Animal { constructor(name) { this.name = name; }}class Cat extends Animal { likesBaths = false; meow() { console.log('Meow!'); }}
計劃在未來的V8版本中支持私有類字段( private class fields )。
詳細更新內容請查看發佈公告:https://v8.dev/blog/v8-release-72