啟動 Ignition 解釋器
V8 和其他現代 JavaScript 引擎通過即時編譯 (JIT)將腳本快速編譯成原生機器碼然後立即執行來獲得速度。程式碼最初由基準編譯器快速生成非最佳化的機器碼進行編譯。在執行期間,編譯後的碼會被分析並且可選擇使用更高級的最佳化編譯器重新編譯以達到最佳效能。在 V8 中,此腳本執行流程涉及多種特殊情況和條件,需用複雜的機制在基準編譯器與兩個最佳化編譯器 Crankshaft 和 TurboFan 之間切換。
V8 和其他現代 JavaScript 引擎通過即時編譯 (JIT)將腳本快速編譯成原生機器碼然後立即執行來獲得速度。程式碼最初由基準編譯器快速生成非最佳化的機器碼進行編譯。在執行期間,編譯後的碼會被分析並且可選擇使用更高級的最佳化編譯器重新編譯以達到最佳效能。在 V8 中,此腳本執行流程涉及多種特殊情況和條件,需用複雜的機制在基準編譯器與兩個最佳化編譯器 Crankshaft 和 TurboFan 之間切換。
BlinkOn 是 Blink、V8 和 Chromium 貢獻者的半年一次會議。BlinkOn 6 於6月16日至17日在慕尼黑舉行。V8 團隊進行了多場有關架構、設計、性能計劃以及語言實現的展示。
V8 團隊非常重視 JavaScript 語言的演進,致力於讓其成為更加具表達力和明確定義的語言,讓開發快速、安全且正確的網頁應用程式變得更加容易。2015 年 6 月,TC39 標準委員會正式通過了 ES2015 規範,這是 JavaScript 語言迄今為止最大規模的一次更新。新增功能包括 類別、箭頭函式、Promise、迭代器 / 產生器、代理、知名符號,以及其他語法糖。TC39 亦加快了新規範的發布節奏,並於 2016 年 2 月發布了 ES2016 候選草案,將於當年夏天正式通過。雖然由於發布週期縮短,ES2016 的更新內容不如 ES2015 廣泛,但它引入了 指數運算子 和 Array.prototype.includes
等值得注意的特性。
在之前的博客文章中,我們介紹了垃圾回收中斷流暢瀏覽體驗所導致的卡頓問題。在這篇文章中,我們介紹了三項優化,它們為 V8 中一個新的垃圾回收器代號為 Orinoco 奠定了基礎。Orinoco 基於這樣一個理念:實現一個大多數並行且併發的垃圾回收器,且不依賴嚴格的代界限,將減少垃圾回收卡頓和內存消耗,同時提供高吞吐量。我們選擇不僅僅作為一個獨立的垃圾回收器來實施 Orinoco,而是分階段在 V8 的樹頂逐步提供 Orinoco 的功能,以便立即為用戶提供益處。本篇文章探討的三個功能是並行壓縮、並行記憶集合處理,以及黑色分配。
要詳細了解 WebAssembly 以及未來社區合作的路線圖,請參閱 Mozilla Hacks 博客上的 A WebAssembly Milestone。
自 2015 年 6 月以來,來自 Google、Mozilla、Microsoft、Apple 以及 W3C WebAssembly 社區小組 的合作夥伴一直在努力 設計、規範化 以及實現 (1, 2, 3, 4) WebAssembly,一種新的網頁運行時和編譯目標。WebAssembly 是一種低級、可移植的位元組碼,旨在以緊湊的二進制格式編碼並在記憶體安全的沙盒中以近乎原生的速度執行。作為現有技術的演化,WebAssembly 與網頁平臺緊密集成,並且相比於 asm.js,下載和初始化速度更快。
自 ECMA-262 規範的第三版引入以來,正則表達式就自 1999 年起成為 JavaScript 的一部分。在功能性和表達能力上,JavaScript 的正則表達式實現與其他程式語言大致相當。