微軟開源新一代瀏覽器的JavaScript引擎核心代碼
近日,微軟宣布開源 Chakra 的核心組件。Chakra 是微軟新一代瀏覽器 Microsoft Edge 的 JavaScript 引擎。相關代碼將于 2016 年 1 月上傳到微軟的 GitHub 賬號,項目名稱為 ChakraCore,遵循 MIT 許可協議。
Chakra 是微軟 2008 年新創建的一個 JavaScript 引擎,其基本構建原則是要具備現代 Web 應用所需要的性能特性,并能非常容易地應用于各種不斷出現的場景。也就是說,Chakra 需要能夠快速啟動和運行,提供卓越的用戶體驗,并充分發揮底層硬件的潛能。下面是 Chakra 的基本架構:
為了實現上述目標,Chakra 采用一種獨特的多層管道架構,包含一個解釋器、一個多層架構的后臺 JIT 編譯器和一個可以并發和局部回收的標記-清除垃圾收集器。
自 Chakra 創建以來,JavaScript 已經從一種主要用于 Web 瀏覽器的語言,成長為一種支持商店應用、服務器端應用、云服務、NoSQL 數據庫、游戲引擎、前端工具和 IoT 的語言。期間,微軟一直在不斷改進和優化 Chakra,使它不僅可以很好地適應這些場景,而且還能在所有這些場景中提供卓越的體驗。這意味著,除了吞吐能力外,Chakra 還必須具備本地互操作性、良好的擴展性和在有限資源環境中執行代碼時限制資源占用的能力。Chakra 的解釋器在可移植性方面發揮了重要作用。
現在,在 Microsoft Edge 瀏覽器之外,Chakra 還應用于通用 Windows 應用、Azure DocumentDB、Cortana、Outlook.com 及 TypeScript(做過專門優化)。微軟還使 Node.js 可以使用 Windows 10 上的 Chakra,從而使開發人員可以在新 IoT 平臺 Windows 10 IoT Core 上使用 Node.js。
隨著 Windows 10 的發布,Chakra 不僅在 Microsoft Edge 中提供了更好的 JavaScript 性能,而且在其他瀏覽器提供商所擁有的基準測試中,性能也有大幅提升,如下圖所示:
此外,Chakra 還支持大部分 ECMAScript 2015(即 ES6)特性,并支持部分 ECMAScript 提案特性,如 Async Functions 和 SIMD。它還支持 asm.js,其團隊在 WebAssembly 及其相關基礎設施的發展中發揮了重要作用。
ChakraCore 是一個全功能、自包含的 JavaScript 虛擬機,可以嵌入衍生產品及用于諸如 NoSQL 數據庫、生產力軟件、游戲引擎這類需要腳本語言的應用程序。如下圖所示,與 Chakra 相比,ChakraCore 主要有兩點不同:一是未將私有綁定暴露給瀏覽器和通用 Windows 平臺;二是用一組新的現代化診斷 API 取代了基于 COM 的診斷 API。
雖然將在 1 月份發布的 ChakraCore 版本僅限于 Windows,但微軟承諾會將其帶到其他平臺。感興趣的讀者可以繼續關注,在 1 月份正式發布的時候,微軟會提供更多細節。