Create  Edit  Diff  FrontPage  Index  Search  Changes  Login

The Backyard - RubyDotNet Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

!Ruby.NET

QUTのRuby.NETはQUTからスピンオフして、New BSDライセンスのもとに公開開発体制にはいってます。

!![[Ruby.NET Project Home|http://code.google.com/p/rubydotnetcompiler/]]

!!!ゴール(翻訳)

""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 統合を意識したソリューションパッケージ

!!ダウンロード

[[安定版zipファイル|http://code.google.com/p/rubydotnetcompiler/downloads/list]]

ただし、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への登録をお願いいたします。このとき、単純化した再現コードを付けていただけると助かります。

[[How to contribute to Ruby.NET|http://groups.google.com/group/RubyDOTNET/tree/browse_frm/thread/84224db32016989c/bdf7925bb88150db?rnum=21&hl=en&q=how+to+contribute&_done=%2Fgroup%2FRubyDOTNET%2Fbrowse_frm%2Fthread%2F84224db32016989c%2Fd628f06037c0b152%3Flnk%3Dgst%26q%3Dhow%2Bto%2Bcontribute%26rnum%3D1%26hl%3Den%26#doc_7e14ced35c2227e8]]