RubyDotNet
Ruby.NET
QUTのRuby.NETはQUTからスピンオフして、New BSDライセンスのもとに公開開発体制にはいってます。
Ruby.NET Project Home
ゴール(翻訳)
Ruby.NETのゴールは、Matzと仲間達が開発したRubyとの完全な文法互換性です。われわれは、Rubyを他の.NET言語と協調して. NETコンポーネントを開発する仲間に加えたいと望みます。さらに標準かサードパーティ製かを問わず、他の言語で開発された.NETプラットフォーム上のコンポーネントやリソースへのシームレスなアクセスの提供も考えています。また、Monoを含むCLI実装のサポートも計画しています。
ランタイムライブラリの一部は、オリジナルRubyのCのソースをそのまま利用しています。われわれは、ソースコードをオープンソースコミュニティに対して開いたものとしたMatzと仲間達に、感謝します。われわれもそれにならって、新BSDライセンスのもとにわれわれのソースコードを開いたものとします。
Ruby.NETについて
Visual Studio 2005をお持ちであれば(Express Editionでどうかは不明)ソリューションファイルが、あるいはMonoの開発体制にあればMakefileが、それぞれ付属した完全なソースコードがレポジトリから入手できます。
特殊なツール
QUTの(多分オープンソースではない)PE File Reader/Writerなどのツールが必要ですが、これらも配布物に含まれているため、上記の条件を満たしていれば開発へ参加できます。
Visual Studio 2005の要件
完全な開発を行うには、Visual Studio 2005 SDK v4.0以上のインストールが必要です。これは配布パッケージのビルドの過程でVisual Studio拡張をビルドするからです。したがって、Vistaで実行する場合には、Visual Studio 2005を管理者権限で実行する必要があります。
特徴
- 現時点では比較的透明なクラス構造、整理されたパッケージ
- インタプリタ(rbファイルを動的にロードして実行)、コンパイラ(rbファイルからCLR用EXEファイルを生成)の両方を持つ
- Ruby 1.8.2 互換な文法
- 言語エンジン、フロントエンド、Visual Studio組み込みウィザード、配布プロジェクト、など、Visual Studio 統合を意識したソリューションパッケージ
ダウンロード
ただし、Subversionが利用できるのであれば、
svn checkout http://rubydotnetcompiler.googlecode.com/svn/trunk/ rubydotnetcompiler
からチェックアウトするほうが良いでしょう。
ビルドの仕方
Mono
ためしたことがないのでうまく動くかわかりませんが、Makefileがルートにあるので、それを見てください。
Visual Studio 2005
srcディレクトリのRuby.NET.slnをVisual Studio 2005に読み込んでフルビルドしてください。もし、Visual Studio SDKがインストールされていないと、配布パッケージのビルドなどが成功しません。この場合、ソリューションの中から、RubyRuntime、 RubyCompiler、Rubyの各プロジェクトを個別ビルドすることで、Ruby.NETを生成して、直接作成されたRuby.NETを利用しても良いでしょう。
実行方法
配布パッケージも生成されますが、ヴァーチャルPC環境などのようにいざとなったら破壊できる環境でない限り、GACに対するインストールも行われるので、単に、binディレクトリにPATHを通したコンソールを利用するほうが良いと思います。
Railsについて
RailsをMonoで実行することをモチベーションにしているメンバーもいるように思う(MLすべてに目を通していないので漠然とした印象)ことと、ToDoリストにRailsのポーティングが乗っているので意識はしています。
IronRubyとの関係
現時点ではオリジナルのパーサの提供という関係だけではないかと思います。したがって、QUTのオリジナルRuby.NETから見て、直系の子供がRuby.NETで、IronRubyは異父弟なんじゃないかな。
現状(0.8.2+)
C:\rubydotnetcompiler>ruby class String def add(s) self + s end end s = 'aaa'.add 'bbb' puts s s.instance_eval("def x(s); s + self + '!';end") puts s.x('hello') ^Z Warning: String is a Ruby built-in class, interop class not generated aaabbb helloaaabbb!
インタープリタで上記のように、動作するスクリプトをa.rbに保存してコンパイルする。
C:\rubydotnetcompiler>rubycompiler a.rb Warning: String is a Ruby built-in class, interop class not generated C:\rubydotnetcompiler>cd bin
(GACに登録していない場合、カレントディレクトリに一式揃っている必要がある)
C:\rubydotnetcompiler\bin>copy ..\a.exe . 1 個のファイルをコピーしました。 C:\rubydotnetcompiler\bin>dir a.exe ドライブ C のボリューム ラベルがありません。 ... C:\rubydotnetcompiler\bin のディレクトリ 2007/09/08 12:31 16,384 a.exe 1 個のファイル 16,384 バイト ... C:\rubydotnetcompiler\bin>a aaabbb helloaaabbb!
協力のお願い
現時点での欠落(拡張ライブラリが存在しないことなど)とは別に、文法上の非互換や異常を発見された場合は、Issuesへの登録をお願いいたします。このとき、単純化した再現コードを付けていただけると助かります。
Keyword(s):
References: