LLVM to Go やりませんか?

63 views
Skip to first unread message

Shinobu Takanashi

unread,
Apr 12, 2013, 9:10:50 PM4/12/13
to chib...@googlegroups.com
Chiba.rb の皆様

きっと鴨川市でたった一人のRubyユーザの高梨です。一昨年の4月には震災
直後にも関わらず、多くの方に足をお運びいただきまして、誠にありがとう
ございました。m(__)m

ところで、最近 Emscripten (https://github.com/kripken/emscripten) という面白
い実装があることを知りました。ご存じの方も多いと思いますが、LLVM (http://j.mp/111UUCn)
の中間段階(LLVM IR)をjavascriptに翻訳する、というものです。

本来は「CをJavaScriptに翻訳するもの」として開発が始まったようですが、C
を読み取るのは LLVM clang 任せであり、Emscripten の本質的機能は上記にな
ります。なぜJSに落とすかといえば、やはりV8の威を借りる」ためだったり、ブ
ラウザで動かしたいロジックを移植するため、なのでしょう。

で、Google App Engine 好きな私は考えたのですが、最終出力をJSではなくGo
にできたら、ステキじゃないかなぁ、と。

なぜなら、GAEではGoバイナリを動かせるからです。(未だExperimental扱いですが)
バイナリと書きましたが、手元でコンパイルしたものを直接アップロードする
のではなく、ソースをあげてGAEにコンパイルしたものを動かせる、という意味
です。

仮に LLVM IR を Go に翻訳するツールがあったら、

- C, C++, Java, Ruby, Python etc... の LLVM 実装は既にあります。それらの言
語をGAEで動かせるようになる。
- GAEの縛りで今まで使えなかった(Cで書かれた)ネイティブライブラリがGAE
で動かせるようになる。(例えば re2 を Rubyから使う、とか)
- LLVM はその中間段階全てにおいて最適化をかけるので、少々Goの最適化が
いけてなくてもおk。

などのことができるようになるわけです。

LLVM IRの文法を深く知っているわけではないのですが、その性質上、アセンブ
ラコードに近く、さほど複雑なものではなさそうです。

Emscripten 自体は、やはりJSで書かれているようですが、翻訳器自身は何で書か
れていようが構わないわけで、ここはやはり使い慣れた Ruby を使いたいところ。

要するに「LLVM IR を Go に変換する、Rubyで書かれたプログラム」を作りた
いわけです。わかりやすいですよね?w

「いいね!やっちゃいなよ、YOU!」とおっしゃる方もいるかもしれませんが、
ちょっと一人で始めるのは心もとない。。。そもそもインタプリタもコンパイラ
も作ったことないですし。(書籍はいろいろ買ってるけど、ほぼ積ん読 orz)

というわけで、Chiba.rbの皆様におうかがいのメールを送っている次第です。
どなたか一緒に始めませんか?構想段階で、コードは1バイトも書いていない
ので、そこからのスタートですけど。

この案に対するご意見・ご感想などもお聞かせいただければと思います。Ruby
*にも*関係する話題なので、突然の投稿お許しください。

P.S.
ところでまつもとさんから「MOONGIFTで取り上げられている」とお知らせいた
だいた当社「NHK語学ラジオ番組キャプチャツール」、今年度のリリースから
「きゃぷる★しゃべる」と改称し(笑)、おかげさまで多くの方からご好評いただ
いております。

実は今年度のものは(今の所)ソースを公開しておりません。というのも約2年間
オープンソースにしてましたが、その間、一片のコードもパッチも寄せられる
ことはなかったから。。。

開発よりも、むしろサポート(不具合やら「動きません」対応)の方が大変で、
今後、年度末・年度始めはバタバタしそうです。

--

(有)高梨IT製作所 高梨 忍 (たかなし しのぶ)
〒299-5503 千葉県鴨川市天津1538-3
Tel.04-7094-2051 / 090-4743-8675
URL: http://www.takanashi-it-factory.com
Email: si...@takanashi-it-factory.com
Mobile: sino...@gmail.com
Twitter: @sinobbish

KOSHIBA Toshiaki(Gmail)

unread,
Apr 19, 2013, 9:54:15 AM4/19/13
to chib...@googlegroups.com
こしばです。ご無沙汰しております。


>「LLVM IR を Go に変換する、Rubyで書かれたプログラム」を作りた
いわけです。わかりやすいですよね?w

まったくもって帯域不足で動ける状況になく申し訳ないんですが、興味深いですね!
うまいこと集まりがあったり、入れる部分があれば味見してみたくあります。

2013年4月13日 10:10 Shinobu Takanashi <si...@takanashi-it-factory.com>:
--
このメールは Google グループのグループ「Chiba.rb - 千葉エリアの地域.rb」の登録者に送られています。
このグループから退会し、メールの受信を停止するには、chiba_rb+u...@googlegroups.com にメールを送信します。
その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。



Shinobu Takanashi

unread,
Apr 20, 2013, 3:40:57 AM4/20/13
to chib...@googlegroups.com
こしばさん、お返事ありがとうございます!

2013年4月19日 22:54 KOSHIBA Toshiaki(Gmail) <ksb.4038.n...@gmail.com>:
> >「LLVM IR を Go に変換する、Rubyで書かれたプログラム」を作りた
> > いわけです。わかりやすいですよね?w
>
> まったくもって帯域不足で動ける状況になく申し訳ないんですが、
> 興味深いですね!
> うまいこと集まりがあったり、入れる部分があれば味見してみたくあります。

いやぁ私もなかなかハックする時間を取れなくて、この件全然構想
段階です。github でぼちぼちやっていこうかな、と思っております。
もう少し形になったら(なるのか?w)またお知らせしますんで、よろしく!


2013年4月19日 22:54 KOSHIBA Toshiaki(Gmail) <ksb.4038.n...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages