フルRubyのビルドに対応しました
今まではminirubyのみだったのですが、今回、フルのRubyのビルドに対応しました(Windowsの32bit版のみ)。
ベースとなるRubyのバージョンは2.1.0です。LLVMはバージョン3.4を使っています。ビルドにはVisual Studio 10以降が必要です。
ビルド手順は、以下の通りです。
- LLVM公式サイトにあるGetting Started with the LLVM System using Microsoft Visual Studio — LLVM 3.4 documentationの指示に従って、LLVMをインストールします。
- githubからソースコードを入手します。
git clone https://github.com/msumimz/ruby/tree/rbjit - 「Visual Studioコマンド・プロンプト」を起動します。以後は、このコマンドプロンプトから作業します。
- 2.で入手したソースファイルのあるディレクトリに移動します。
- LLVMの場所を指定するため、win32\configure.batに「--llvm-prefix」というオプションを追加しています。1.でインストールしたLLVMライブラリの場所を、--llvm-prefixの引数に指定してwin32\configure.batを実行します。
- あとは通常のビルドと同じようにnmakeします。
- 必要に応じてnmake testなりnmake installなりしてください。テストにすべてパスすることを確認しています(もちろんインタープリタとしての動作です)。
コマンド入力は以下のようになるでしょう。
$git clone https://github.com/msumimz/ruby/tree/rbjit $cd ruby $win32\configure.bat --llvm-prefix=c:\llvm\llvm-3.4 $nmake $nmake test $nmake install
このようにしてビルドした実行ファイルには、-vで表示されるバージョン文字列の最後に"rbjit"がつきます。
$ruby -v ruby 2.1.0p0 (2013-12-25 revision 44417) [i386-mswin32_100] rbjit
今のところ、precompileで明示的にJITコンパイルを行わない限り、自動でのコンパイルはしませんので、このようにしてビルドしたRubyは、通常のRubyコマンドとして使えます。
今後の方針
ところで、前回の記事で、今後は言語機能の実装をする予定だと書いたのですが、ふと思い立ちまして、まずは以下の作業を行うことにします。
- フルRubyのビルド(今回の記事です)。
- インターフェイス周りを整理して、使いやすいものにします。今までは未対応の言語機能をコンパイルしようとするとabortしていましたが、ちゃんとエラーを返すようにします。
- メソッドや定数の再定義などのガードの実装。
- ビルド・インストールと使い方のドキュメント作成。
- Linux対応。
要は、普通の人が使えるように、パッケージングを整えようということです。まだ実用的に使うには機能不足ですが、まずは形を整えてから、少しずつ機能拡充していこうという方針です。
もともと、普通のRubyとしても動くのがメリットですので、実用性が増すにすれて、使ってみてくれる人も出てくると期待しています。