読者です 読者をやめる 読者になる 読者になる

軽量Rubyことmrubyのソースコードが公開されました

Ruby

2012年4月20日、軽量Rubyことmrubyのソースコードgithub上で公開されました。

早速、Rails Hub情報局にて記事になっています。勉強になります。

早速試してみました。環境はOSX Lion(10.7.3)です。

インストール

インストールはソースをgit cloneして、makeすればOK。binの下にmrbcとmrubyとmrubysampleができてました。

tsubame.local{miyohide}% ls -l
total 8584
-rwxr-xr-x  1 miyohide  staff  1459520  4 20 20:58 mrbc
-rwxr-xr-x  1 miyohide  staff  1466728  4 20 20:58 mruby
-rwxr-xr-x  1 miyohide  staff  1461432  4 20 20:58 mrubysample
tsubame.local{miyohide}% 

バージョン情報

バージョン情報を見てみました。

tsubame.local{miyohide}% ./mruby -v
ruby 1.8.7 (2010-08-16 patchlevel 302) [i386-mingw32]
Usage: ./mruby [switches] programfile
  switches:
  -b           load and execute RiteBinary(mrb) file
  -c           check syntax only
  -v           print version number, then trun on verbose mode
  --verbose    run at verbose mode
  --version    print the version
  --copyright  print the copyright
tsubame.local{miyohide}%

おぅ。mingw32って出てますね。これは、./src/version.hでこの値を固定値で設定しているからのようです。

動かしてみた

おなじみのHelloプログラムを。

tsubame.local{miyohide}% cat ../../hello.rb
puts "hello mruby."

tsubame.local{miyohide}% ./mruby ../../hello.rb
hello mruby.
tsubame.local{miyohide}% 

普通に動きますね。

コンパイル

mrbcっていうのはコンパイルするプログラムのようです(最後にcってついているし)。早速やってみましょう。

tsubame.local{miyohide}% ls -l ../../hello*
-rw-r--r--  1 miyohide  staff  21  4 20 21:07 ../../hello.rb
tsubame.local{miyohide}% ./mrbc ../../hello.rb
tsubame.local{miyohide}% ls -l ../../hello*
-rw-r--r--  1 miyohide  staff  200  4 20 21:16 ../../hello.mrb
-rw-r--r--  1 miyohide  staff   21  4 20 21:07 ../../hello.rb
tsubame.local{miyohide}%  

コンパイルすると、hello.mrbというファイルが出来ました。

バイナリを見てみる

fileコマンドでmrbファイルを見てみると、「ASCII text」って返したので、中身を見てみました。

tsubame.local{miyohide}% file ../../hello.mrb
../../hello.mrb: ASCII text, with no line terminators
tsubame.local{miyohide}% cat ../../hello.mrb
RITE0009000000090000MATZ    000900000000007800010000        5B9400000078SC0002000400046F2800000005010000060180003D02000005010000A00000004AF507000000010F000Chello mruby.3CC4000000010004puts248900000000%                                       tsubame.local{miyohide}%  

最後の%はzshが付けたものです。MATZって入るのが決まりなのかな?

実行

mrbファイルはそのままでは実行できないようです。

tsubame.local{miyohide}% ./mruby ../../hello.mrb
Invalid octal digit
syntax error, unexpected tINTEGER, expecting $end
tsubame.local{miyohide}% 

オプションとして-bを付けると良いようです。

tsubame.local{miyohide}% ./mruby -b ../../hello.mrb
hello mruby.
tsubame.local{miyohide}% 

ということで、ひと通り試してみました。