微軟兌現(xiàn)了開放Edge瀏覽器JavaScript虛擬機(jī)的承諾,遵循寬松的MIT許可協(xié)議開放了Chakra的源代碼。開源代碼以ChakraCore的名稱發(fā)布,基本上同微軟用于Edge和通用Windows平臺(UWP)的VM是同一個,只是去掉了同Edge和UWP的綁定以及部分COM診斷API。
ChakraCore是作為一個嵌入式引擎推出的,可以包含到各種桌面、服務(wù)器和IoT應(yīng)用程序中,微軟希望開發(fā)者發(fā)現(xiàn)它在這個方面的用途。該引擎使用JavaScript運(yùn)行時(JSRT)API進(jìn)行了封裝,后者提供了到運(yùn)行時及一個或多個執(zhí)行上下文的訪問。ChakraCore有自己的垃圾收集和異常管理。它所支持的ECMA2015語言特性都不需要任何設(shè)置,但要在ChakraCore中使用Promises,需要將Promises任務(wù)在EnqueueJob中排隊。
除了常用的V8虛擬機(jī)外,微軟還致力于在ChakraCore引擎上運(yùn)行Node.js。通過在JSRT上創(chuàng)建了一個V8 shim,他們已經(jīng)實現(xiàn)了這一目標(biāo),使Node.js應(yīng)用程序可以正常運(yùn)行,而不需要知道底層的JavaScript VM。該項目托管在GitHub上,名為Microsoft/node。
微軟計劃向ChakraCore添加現(xiàn)代化的診斷API,而且他們正致力于Time Travel Debugger的研發(fā)。這是一款調(diào)試工具,允許開發(fā)人員在調(diào)試過程中回到上一步,這有助于調(diào)試包含回調(diào)的代碼。微軟已經(jīng)在一個Node.js/ChakraCore應(yīng)用程序(包含超過100個模塊,運(yùn)行在裝有Windows 10 IoT的Raspberry Pi 2上)上演示了該調(diào)試器。他們計劃繼續(xù)發(fā)展這項技術(shù),待它成熟后將其開放。
在不久的將來,微軟計劃從Linux Ubuntu 15.10 x64開始將ChakraCore移植到其他平臺。他們還計劃正式支持部分目前通過試驗標(biāo)識支持的JavaScript特性——解構(gòu)賦值、默認(rèn)參數(shù)、指數(shù)運(yùn)算符、Async。他們將通過試驗標(biāo)識支持ES2015模塊,并計劃通過asm.js管道運(yùn)行WebAssembly代碼。
開發(fā)人員會使用ChakraCore嗎?微軟認(rèn)為他們會的。微軟展示了誘人的性能基準(zhǔn)測試結(jié)果,其中,Edge在Octane 2.0和Jet Stream兩項測試上擊敗了最新版本的Chrome和Firefox。此外,從Kangax的JavaScript兼容性表格可以看出,ChakraCore支持79%的ES6特性,相比之下,F(xiàn)irefox 45支持85%,而Chrome 49支持71%。不管應(yīng)用結(jié)果如何,微軟都計劃開放CharkraCore的開發(fā),包括將結(jié)果用到Edge和UWP上。