While preparing another article about fast hashing and how to use it for very fast fuzzy matching and approximate set membership tests, I found myself in a situation where I needed more insight about what optimizations V8 was performing under the hood. I wanted to see what d8 offers in this regard so I compiled v8 from source. It was relatively easy, but there are a few things to consider!
This article assumes you’re using Ubuntu, but it should work as well for other platforms. You can check for any extra steps from the official wiki. During the redaction of this article, I also found this other blog post very useful!
Building V8 From Source
Installing depot_tools
The V8 toolchain requires scripts from depot_tools.
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
$ export PATH=`pwd`/depot_tools:"$PATH"
Compiling V8
Now that everything is available in PATH, let’s clone and compile V8:
$ fetch v8
This might take a while. It will create a new v8 folder containing the latest version of the sources. It will also configure everything needed for the build.
$ ./tools/dev/v8gen.py x64.release
$ ninja -C out.gn/x64.release
Have a tea or a coffee, then come back and check if the compiled v8 works as intended by running the tests:
$ tools/run-tests.py --gn
If everything went well, this file should exist: ./out.gn/x64.release/d8.