Node.js: Just as fast, higher, stronger with GraalVM

A presentation at HolyJS 2019 Piter in in St Petersburg, Russia by Oleg Šelajev

GraalVM is a new runtime for programs in different languages including JS. It includes Node.js where V8 is replaced with its own JavaScript engine, written in Java 😱.

Java, perhaps, is not the most obvious choice for the engine implementation, however it opens doors for very interesting capabilities:

interop with Java applications and libraries interop with other languages supported by GraalVM: Python, Ruby, R, C/C++ through LLVM running Node.js apps with large memory heaps enhanced sandboxing and security options In this session, we’ll talk about how GraalVM implements support for the languages, how it uses partial evaluation and state-of-the-art JIT compiler to achieve reasonable performance even for extremely dynamic languages. You’ll learn about the peculiarities of interoperability of the event-based Node.js environments with the thread-based JVM; about sandboxing the code to restrict its access to the filesystem or network and how GraalVM deals with the native extensions for JavaScript modules.

All in all, you’ll learn about a new implementation of the Node.js runtime with its benefits and tradeoffs, and will understand whether you should evaluate it right away or maybe stick to whatever runtime you’re using for a while.

Resources

The following resources were mentioned during the presentation or are useful additional information.