軽量Rubyの状況まとめ
4/28追記:まだ正式ではないけど公開されたよ! https://github.com/mruby/mruby
神よ 未だ生まれぬ神よ
御身への想い押さえがたきに
我が身は今やはりさけぬ
古橋秀之「ブライトライツ・ホーリーランド」
そろそろ軽量Rubyが公開されるらしい、との話なので、現状見つかる情報を調べてみました。
ほんとは2月の東京Rubyプレゼンテーション2012に行けていれば色々分かったと思うのですが、行けなかったのでネットにある情報を検索してみた次第です。
以前は"Armadillo9でRubyを動かす。"とかやってたりしたこともあり、組み込みスクリプト言語には色々期待してるので、楽しみ。
公開されたら色々遊んでみる予定。
構成
- mruby
コンパイラ、RiteVM、ライブラリなどを含めた総称
- RiteVM
YARVに相当する部分
- Rubyチップ
VM自体をハードウェア化するのではなく、性能的に重要な機能をエンハンスするもの。(例:ハッシュ、GC)必須という訳ではない。
ターゲット
OSは選ばず動作するように、各種のシステムコールには依存せずC99の範囲で実装されている。Linux、μITRON、VxWorksなどで動く。
対象領域としては、まつもとさんの発言によれば、
- 携帯電話
- ロボット
- TV
- 車
など、とのこと。
ハードウェアリアルタイムな制御まで行うことは想定していないようなので、比較的高級な組み込み機器への適用を想定しているように見えます。なのでロボット制御とかには向いてなさそうですが…。
こちらの動画を見ると、RubyのソースをC言語へ静的変換しているようです。どういう関係なのだろう。(ETロボコンの開発環境の一つとして検討されているようです)
こちらの資料だと、まずは産業向けの通信装置として使うことをとっかかりにしていきたいとあります。
μITRONのタスク間通信などはどんな感じに実現されるのだろうか?
特徴
mruby
- RiteVM
- parser
- code generator
- mruby Ruby lib
- mruby C lib
- binary I/O
RiteVM
- 32bit word machine
- incremental GC
- single thread
- register machine
- 必要なメモリは数MB程度
機能
- 省メモリ
- ブロック,Proc,lambda、例外など対応
- 割り込みには非対応
- evalはライブラリとして提供されるコンパイラを組み込むことで、実現可能
プロファイル
- minimal
最小構成
- standard
IEC/ISOの範囲
- full
CRuby
ライセンス
BSDライセンス、もしくはMITライセンスを検討するとニュース記事にはあったけど、最終的にはどうなるんだろうか?少なくとも制限が強いライセンスにはならないようだけど。
その他
現在保持してるアイディアは、(1)mruby+libuv=node.mrb, (2)numpy,scipyのRuby版、科学技術分野でPython,R,Excelに挑戦。(3)mruby VM in JavaScript or mruby to JS compiler
— Yukihiro Matsumotoさん (@yukihiro_matz) 4月 3, 2012
参考
http://www.meti.go.jp/policy/local_economy/tiikiinnovation/22fy_inoberd.html
http://www.rubyist.net/~matz/20101114.html
https://twitter.com/#!/yukihiro_matz/status/187169444882169858
http://www.rubyworld-conf.org/ja/program/B-4/
http://d.hatena.ne.jp/MrShoz/20120324/1332542548
http://jp.rubyist.net/magazine/?0036-RubyConf2011
http://togetter.com/li/251999
http://techon.nikkeibp.co.jp/article/NEWS/20111202/202123/
http://itpro.nikkeibp.co.jp/article/NEWS/20100628/349693/
http://www.tjsys.co.jp/documents/pdf/download/wave/wave-15/Wave-15-18.pdf
http://capybara-is-watching.tumblr.com/post/748038527