
Ability
AI
Startup
Technology
こんにちは、渡辺です。
今回は技術系のネタでも。
(これはadvent calendarと特に関係ありません。)
mrubyといえば、CRubyのサブセットとして有名ですが、しばしば処理系の組み込み言語として利用されます。
そんなmrubyですが、実はrust bindingのmrustyというものが存在して、rustでmrubyのVMを扱うことができます。
ただ、VMを扱うことはできても、mrbgemをrustで書くということはできません。
もともとは、ゲームエンジンanima-engineのために作られるようなので、そこまでは考えていなかったようです。
今回、やったのは、mrustyのビルドをmruby流のやり方でビルドする方法です。
既存のmrubyを利用したり、独自のbuild_config.rbでビルドすることをできるようにしました。
コードはgithubにあげました。(masterブランチにpushしちゃいけないとかのツッコミはなしで)
なぜか、rustのビルドシステムであるcargoにとても詳しくなりました。
大事なのはcargoとcargoで利用できる環境変数群です。
わたしも、mrubyのビルドシステムにかなり手を入れたほうだという自負があったんですが、cargoのトップさんは格が違うなーと実感することが多かったです。
気が向いたら、html5everのmruby bindingがそのうち動くようになっているかもしれません。
ではまた。
画像引用:blog.hifumi.info