JavaScript engines are typically developed by web browser vendors, and every major browser has one. In a browser, the JavaScript engine runs in concert with the rendering engine via the Document Object Model and Web IDL bindings.[2] However, the use of JavaScript engines is not limited to browsers; for example, the V8 engine is a core component of the Node.jsruntime system.[3]
Since ECMAScript is the standardized specification of JavaScript, ECMAScript engine is another name for these implementations. With the advent of WebAssembly, some engines can also execute this code in the same sandbox as regular JavaScript code.[4][3]
Google debuted its Chrome browser in 2008, with the V8 JavaScript engine that was faster than its competition.[7][8] The key innovation was just-in-time compilation (JIT), which Mozilla had also been working on for SpiderMonkey.[9] Because of V8's performance, the other browser vendors needed to overhaul their engines for JIT.[10]Apple developed the Nitro engine for its Safari browser, which had 30% better performance than its predecessor.[11] Mozilla then leveraged portions of Nitro to improve SpiderMonkey.[12]
Since 2017, these engines have added support for WebAssembly.[4]
JavaScriptCore is Apple's engine for its Safari browser. Other WebKit-based browsers and the Bun runtime system also use it. KJS from KDE was the starting point for its development.[13]
Chakra is the engine of the Internet Explorer browser. It was also forked by Microsoft for the original Edge browser, but Edge was later rebuilt as a Chromium-based browser and thus now uses V8.[14][15]