積ん読ソースコードだった Google V8 をそろそろ読もうと思い,まずは使ってみることにした.インストール環境は,Fedora 14 (32bit).64bit 版だと必要なライブラリなどで若干のハマりどころがあるみたい (というよりも自分がハマった) だけど,32bit 版ではすんなりいった.

コンパイル

まずソースコードを入手する.

$ git clone git://github.com/v8/v8.git v8
$ cd v8

コンパイルには SCons という Python ベースのビルドツールが必要になる.Make の場合は Makefile を書くけれど,SCons では SConstruct という名前の Python スクリプトでビルド手順を記述することになる.細かいことはよく知らないので今度調べるとして,とりあえずインストールする.

$ sudo yum install scons

あとは clone した V8 のディレクトリ内で scons コマンドを叩くだけ.

$ scons

これで V8 本体のコンパイルは終了.とても簡単.

次にサンプルプログラムを動かしてみる.V8 にはサンプルとして JavaScript の Interactive Shell のコードが含まれているので,これをコンパイルして使ってみる.

$ scons sample=shell
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
g++ -o obj/sample/shell/release/shell.o -c -fno-rtti -fno-exceptions -m32 -O2
-Iinclude samples/shell.cc
g++ -o shell -m32 -O2 -m32 obj/sample/shell/release/shell.o -L. -lv8 -lpthread
scons: done building targets.

$ ./shell
V8 version 3.4.13 (candidate)
> var str = "Hello, world!";
> print(str);
Hello, world!

“Hello, world!” と出力されるのが確認できた.

追記 (2011/07/16)

shell よりもちょっとリッチな d8 という shell もある.readline を使うので,まずはこれをインストールしておく.

$ sudo yum install readline-devel

そして,scons コマンドを使って次のようにビルドする.

$ scons d8 console=readline

これで,./shell の代わりに ./d8 が使えるようになる.readline を指定していれば,上下でコマンド履歴が見れる分,shell よりも使い勝手がいい.

$ ./d8
V8 version 3.4.13 (candidate) [console: readline]
d8> var str = "Hello, new world!";
d8> print(str);
Hello, new world!

まとめ

  • V8 をビルドしてみた
  • Interactive Shell で “Hello, world!” してみた