What’s new in Google’s V8 JavaScript engine Version 7

The V8 Version 7.4 beta lays the groundwork for possible future iOS support

The beta V8 Version 7.4 is now available, with the potential to expand the engine’s footprint to platforms such as Apple iOS. V8 is Google’s open source JavaScript and WebAssembly engine for the Chrome browser. It is a staple in both the Chrome browser and the Node.js JavaScript runtime.

Where to download Google V8

You can the download the production version of Google V8 from the Chromium V8 repo.

Future version: What’s new in V8 Version 7.4

With the production version due in April 2019, Google V8 beta 7.4 has the following new features:

  • JIT-less V8, in which JavaScript execution is supported without allocating executable memory at runtime. This could allow expansion of V8 onto platforms such as Apple iOS, smart TVs, and game consoles. The default configuration of V8 has relied on the ability to allocate and modify executable memory at runtime. But there are situations where it can be desirable to run the engine without allocating executable memory, such as platforms that have prohibited write access to nonexecutable memory for nonprivileged applications, including iOS. Also, disallowing writes to executable memory reduces the attack surface of the application for exploits. With the JIT-less mode, V8 switches to an interpreter-only mode for JavaScript; WebAssembly currently does not support this mode. JIT-less mode does come with a performance penalty, however.
  • WebAssembly Threads/Atomics are now enabled on non-Android OSes. This move unlocks the use of multiple cores via WebAssembly, enabling new, computation-heavy uses on the web.
  • To improve performance, Version 7.4 skips arguments adaption in some cases, reducing call overhead by 60 percent.
  • Performance has been improved for calling into native accessors, which are DOM accessors.
  • Preparser performance was improved by removing a deduplication involving property names. Additionally, a performance issue was fixed that involved custom UTF-8 decoding used by the source stream.
  • To reduce memory overhead, support has been implemented for flushing compiled bytecode from functions during garbage collection if they have not been executed recently.
  • To support private class fields, Developers can mark a field as private by prepending it with the # prefix.

To continue reading this article register now