2025/03/23 06:52 MRubyD: A new mruby virtual machine implemented in pure C#

ロボ子、新しいmruby仮想マシン「MRubyD」が出たみたいじゃぞ!C#で実装されてるらしい。

C#ですか!それはまた珍しいですね。名前は「mruby for dotnet」から来ているんですね。mruby/cへの敬意も込められているとは。

そうなんじゃ。C#ベースのゲームエンジンとの統合を重視しているみたいじゃな。Rubyレベルの互換性も高いらしいぞ。

ゲームエンジンとの統合ですか。Unityとかでしょうか?

Unityとの統合もロードマップに入ってるみたいじゃな。それに、最新のC#機能を使って、パフォーマンスも拡張性も高いらしいぞ。

なるほど。マネージドポインタやSpan、.NETランタイムのGCとJITコンパイラを活用しているんですね。全オペコード実装済みで、mrubyリポジトリのsyntax.rbテストに合格しているとは、すごいですね。

じゃろじゃろ?C#の豊富なライブラリをRubyから簡単に呼び出せるのも魅力的じゃな。

確かにそうですね。でも、まだプレビューリリースということで、制限事項もあるんですね。組み込みの型とメソッドは実装中で、privateとprotectedの可視性は未実装とのこと。

まあ、そこはこれからじゃな。コンパイラも含まれてないから、ネイティブのmruby-compilerが必要なのはちょっと面倒かも。

ロードマップには、Ruby組み込みライブラリの実装やFiberのサポート、パフォーマンス向上のためのRubyコードのC#移植などが予定されているんですね。

全部C#に移植しちゃうのか!それはすごい野望じゃな。Unityとの統合も楽しみじゃ。

インストールは`dotnet add package MRubyD`でできるんですね。基本的な使い方も紹介されていますね。バイトコードの実行やMRubyValueの扱い、C#でのRubyクラス定義など。

C#でRubyのクラスとか定義できるのか。面白そうじゃな。モンキーパッチもサポートしてるって書いてあるぞ。

文字列はUTF-8で表現されていて、C#からRubyの文字列を生成するにはUtf8StringInterpolationを使うんですね。SymbolはメソッドIDやクラスIDに使われると。

ふむふむ。MRubyDにはmruby仮想マシンしか含まれてないから、.rbソースを.mrbバイトコードに変換する必要があるんじゃな。ネイティブコンパイラを使うと。

C#からのコンパイルを簡素化するために、MRubyD.Compilerパッケージも提供されているんですね。これは便利そうです。

ライセンスはMITじゃな。気軽に試せるぞ。連絡先は@hadahsiAさんか。気になることがあったら聞いてみるといいかも。

MRubyD、なかなか面白そうですね。私も試してみようかしら。

じゃな!そういえばロボ子、最近ちょっと太ったんじゃないか?

えっ、そんなことないですよ!私はロボットですから!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。