V8 發行版本 v6.3
每六週,我們根據 發行過程 創建一個新的 V8 分支。每個版本都基於 V8 的 Git 主線分支,並在 Chrome Beta 里程碑之前完成分支操作。今天,我們很高興宣布最新的分支 V8 版本 6.3,該分支目前處於 Beta 測試階段,預計將在接下來幾週與 Chrome 63 穩定版協同發佈。V8 v6.3 為開發者提供了許多新功能。本文將預覽此次版本的一些亮點。
性能
Jank Busters III 隨 Orinoco 項目推出。並發標記 (70-80% 的標記在非阻塞線程上完成) 已啟用。
解析器現在不再需要 第二次預解析函數。這帶來了 解析時間中位值的 14% 改進,基於我們的內部啟動 Top25 基準。
string.js
已完全移植到 CodeStubAssembler。非常感謝 @peterwmwong 傑出的貢獻!對於開發者來說,這意味著從 V8 v6.3 開始,內建的字符串函數如 String#trim
的速度將更快。
Object.is()
的性能現在大致與替代方案相當。總的來說,V8 v6.3 繼續改進 ES2015+ 的性能。除此之外,我們提升了 多態訪問符號的速度、構造函數調用的多態內聯 和 (標記的) 模板字符串。
弱優化函數列表已移除。更多信息可以在 專門的博客文章 中找到。
上述事項只是性能改進的一部分。還有許多其他與性能相關的工作。
內存消耗
寫屏障已切換為使用 CodeStubAssembler。這每個隔離器可節省大約 100 KB 的內存。
JavaScript 語言功能
V8 現在支持以下第 3 階段功能:通過 import()
的動態模塊導入、Promise.prototype.finally()
和 異步迭代器/生成器。
使用 動態模塊導入 可以根據運行時條件非常簡便地導入模塊。當應用程序需要延遲加載某些代碼模塊時,這非常有用。
Promise.prototype.finally
引入了一種可以在 Promise 解決後簡單清理的方法。
隨著 異步迭代器/生成器 的引入,使用異步函數進行迭代更加簡便。
在 Intl
方面,Intl.PluralRules
現已支持。此 API 提供高性能的國際化複數化功能。
調試工具/偵錯
在 Chrome 63 中,區塊覆蓋率 也得到了 DevTools UI 的支持。請注意,檢查器協議從 V8 v6.2 就已支持區塊覆蓋率。
V8 API
請查看我們的 API 更改摘要。此文檔通常會在每次主要版本發佈幾周後進行更新。
擁有 活動的 V8 源代碼檢出 的開發者可以使用 git checkout -b 6.3 -t branch-heads/6.3
來試驗 V8 v6.3 中的新功能。或者,您也可以 訂閱 Chrome 的 Beta 渠道,並嘗試新功能。