跳至主要内容

V8 附加功能

· 閱讀時間約 6 分鐘
Domenic Denicola ([@domenic](https://twitter.com/domenic)), Streams 魔法師

V8 用 JavaScript 自身實現了 JavaScript 語言內建物件和函數的一個大子集。例如,您可以看到我們的 Promise 實現 是用 JavaScript 編寫的。這樣的內建物件被稱為 自托管。這些實現被包含在我們的 啟動快照 中,以便可以快速創建新上下文,而不需要在運行時設置和初始化自托管的內建物件。

V8 發佈 v4.9

· 閱讀時間約 6 分鐘
V8 團隊

大約每六週,我們會根據 發佈流程 創建 V8 的新分支。每個版本均從 V8 的 Git 主分支分支出來,正好在 Chrome 分支到 Chrome Beta 里程碑之前。今天我們很高興宣布我們最新的分支 V8 版本 4.9,該版本將進入 Beta,直到與 Chrome 49 Stable 協調釋出為止。V8 4.9 包含各種面向開發者的更新,因此我們希望在幾周後發佈之前為您提供一些亮點預覽。

有 `Math.random()`,然後有 `Math.random()`

· 閱讀時間約 4 分鐘
楊國 ([@hashseed](https://twitter.com/hashseed)),軟體工程師兼骰子設計師

Math.random() 返回一個帶正號、且大於等於 0 且小於 1Number 值,這個值是隨機選出的或是伪隨機選出的,並且在該範圍內近似於均勻分佈,使用實現依賴的算法或策略。此函數不接受任何參數。

V8 版本 v4.8

· 閱讀時間約 2 分鐘
V8 團隊

大約每六週,我們按照 發佈流程 創建一個新的 V8 分支。每個版本都從 V8 的 Git 主分支在 Chrome 的 Beta 里程碑分支之前分支出來。今天,我們很高興宣佈我們的最新分支,V8 版本 4.8,該版本將處於 Beta 階段,直到與 Chrome 48 穩定版協同發佈為止。V8 4.8 包含了一些面向開發者的功能,因此我們希望在幾週後的正式發佈之前,向您預覽一些亮點。

卡頓克星第一部分

· 閱讀時間約 4 分鐘
卡頓克星: Jochen Eisinger、Michael Lippautz 和 Hannes Payer

卡頓,或者說明顯的卡頓,可以在 Chrome 沒有在 16.66 毫秒內渲染一帧(打斷 60 幀每秒的流暢運動)時被注意到。目前,大多數的 V8 垃圾回收工作都在主渲染執行緒上執行,見圖1,當需要維護過多對象時,往往會導致卡頓。消除卡頓一直是 V8 團隊的首要任務(123)。這篇文章討論了在 Chrome 41 和 Chrome 46 之間實現的一些優化,這些優化顯著減少了垃圾回收滯後,從而提高了用戶體驗。

V8 版本 v4.7

· 閱讀時間約 2 分鐘
V8 團隊

大約每六週,我們會按照 發佈流程 創建一個新的 V8 分支。每個版本的分支都會在 Chrome 為 Chrome Beta 里程碑分支前,立即從 V8 的 Git 主分支創建。今天,我們很高興地宣布我們最新的分支 V8 版本 4.7,該版本將進入 Beta 測試,直到與 Chrome 47 穩定版同步釋出。V8 v4.7 為開發者提供了豐富的功能,我們希望提前分享一些亮點,為即將幾週後的發佈做準備。

自訂啟動快照

· 閱讀時間約 3 分鐘
Yang Guo ([@hashseed](https://twitter.com/hashseed)), 軟體工程師和引擎預熱供應商

JavaScript 規範包括許多內建功能,從數學函數到一個功能完善的正則表達式引擎。每個新創建的 V8 context 從一開始就可以使用這些功能。為了達到這一點,必須在 context 被創建時,將全域物件(例如,在瀏覽器中的 window 物件)和所有內建功能設置並初始化到 V8 的 heap 中。從零開始完成這些操作需要相當多的時間。

V8 發佈 v4.6

· 閱讀時間約 5 分鐘
V8 團隊

大約每六週,我們會基於我們的發佈過程創建一個新的 V8 分支。每個版本都是從 V8 的 Git 主分支分出,緊接著 Chrome 分出一個 Chrome Beta 的里程碑分支。今天,我們很高興地宣佈我們最新的分支V8 版本 4.6,該版本將進入 Beta 階段,直到與 Chrome 46 Stable 一同發佈為止。V8 4.6 包含各種為開發者準備的好東西,因此我們希望在幾週後正式發佈前給大家預覽一些亮點。

免費獲得垃圾回收

· 閱讀時間約 8 分鐘
Hannes Payer 和 Ross McIlroy,閒置垃圾回收器

JavaScript 的效能始終是 Chrome 價值的關鍵,尤其是在提供流暢的體驗方面。從 Chrome 41 開始,V8 採用了一種新技術通過在閒置時間的小型未使用片段中隱藏昂貴的內存管理操作來提升 Web 應用的響應速度。結果,Web 開發者可期待更順暢的滾動和流暢的動畫,垃圾回收引起的卡頓大幅減少。

程式碼緩存

· 閱讀時間約 2 分鐘
Yang Guo ([@hashseed](https://twitter.com/hashseed)), 軟體工程師

V8 使用 即時編譯(JIT)來執行 JavaScript 程式碼。這表示在執行腳本之前,必須先對其進行解析和編譯,這可能會導致相當大的額外開銷。正如我們最近公告提到的,程式碼緩存是一種減少這種開銷的技術。當腳本第一次被編譯時,會生成緩存數據並將其儲存。下一次 V8 需要編譯相同的腳本時,即使在不同的 V8 實例中,也可以使用緩存數據來重建編譯結果,而不是從頭編譯。因此,腳本能夠更快地執行。