Help us test the future of Node.js!

TL;DR You can help test the our new compiler pipeline by opting-in via the --future command line flag and use it with the Node vee-eight-lkgr integration branch. If you are an application developer, please test your applications with the new compiler pipeline. If you notice a regression in stability, correctness, or performance, please report the issue to the V8 bug tracker.

You probably saw our call for help with testing the future code generation architecture for V8 inside of Chrome Canary yesterday:

Well guess what, you can do the same in Node.js, although it’s a bit more involved currently, as there’s nothing like an official Canary build with the latest V8 yet. But there’s the vee-eight-lkgr integration branch on the https://github.com/v8/node repository (LKGR for Last Known Good Revision). This branch was updated to V8 5.8.202 yesterday, so it’s roughly the same V8 version as today’s Chrome Canary.

You can install the vee-eight-lkgr version side-by-side with your regular Node.js installation to avoid messing up your stable setup. For example to install it to a folder Applications/node-vee-eight-lkgr in your home directory (on Linux and macOS), run the following commands (assuming you have all the dependencies in place to build Node.js):

git clone https://github.com/v8/node.git node-v8
cd node-v8
git checkout vee-eight-lkgr
./configure --prefix "$HOME/Applications/node-vee-eight-lkgr"
make install

This will take a couple of minutes depending on your hardware, and print a whole lot of messages to the terminal. Once done, you’ll have a fully working Node.js installation with the latest and greatest V8 in Applications/node-vee-eight-lkgr. To make use of it, you can simply add it to your path for the current session, i.e. in bash, just run the following command:

export PATH="$HOME/Applications/node-vee-eight-lkgr/bin:$PATH"

And verify that it works via:

which node

This should print something like

/Users/bmeurer/Applications/node-vee-eight-lkgr/bin/node

now. Congratulations, it worked! Now you can start messing with the new configuration by using the --future command line flag. Let’s consider this arguably very simple example script:

It computes the first 200 fibonacci numbers and and sums them up. The hot function is clearly fibonacci. Running with --trace-opt we can observe the difference between the default configuration and the future configuration:

Please test the performance of the new pipeline on your applications to see how it is affected. If you discover that your application is behaving strange (or tests are failing), please let us know:

  1. Ensure that you have correctly enabled the new pipeline as outlined above.
  2. Create a bug on V8’s bug tracker.
  3. Attach sample code which we can use to reproduce the problem.