.\" README - -*- Text -*- created at: Wed Aug 3 11:57:36 JST 1994 コンパイル・インストール 1. configureを実行してMakefileを生成する. 2. (必要ならば)defines.hを編集する. 3. makeを実行してコンパイルする 4. make install もし, コンパイル時にエラーが発生した場合にはエラーのログとマ シン, OSの種類を含むできるだけ詳しいレポートを作者に送ってい ただきたい. 機能追加 Cコードを書くことによって, 簡単にrubyに機能を追加できる. そのおおまかな手順は以下の通りである. * 関数的メソッドを追加する場合 (1) Cで関数を書く (2) rb_define_method()でカーネルクラスのメソッドとして関 数をrubyに登録する関数を書く (3) init.cを編集して, 登録する関数を呼び出す * クラスを追加する場合 (1) クラスを設計する (2) メソッドをCで記述する (3) rb_define_class()でクラスを生成するコードを書く (4) rb_define_method()でメソッドを登録するコードを書く (5) init.cを編集して, 初期化する関数を呼び出す 詳しくはC-IFを参照. 移植 UNIXであればconfigureがほとんどの差異を吸収してくれるはず だが, 思わぬ見落としがあった場合(あるに違いない), 作者にレ ポートすれば, 解決できるかも知れない. アークテクチャにもっとも依存するのはGC部である. rubyのGCは 対象のアーキテクチャがsetjmp()によって, 全てのレジスタを jmp_bufに格納することと, jmp_bufとスタックが32bitアライン メントされていることを仮定している. 前者が真実でない場合の 移植は困難を極めるだろう. 後者は割と簡単に解決できる. gc.c のスタックをマークする部分にアラインメントのバイト数だけず らしてマークするコードを追加するだけで済む. sparc以外のレジスタウィンドウを持つCPUでは, レジスタウィン ドウをフラッシュするコードを追加する必要があるかも知れない. 配布条件 Rubyは最終的にはGNU Public Licenseにしたがった条件で配布さ れる予定だが, 現時点では以下の条件で配布する. * 更新 いかなる目的であれ自由である. ただし, バグ修正は作者への フィードバックを期待する(強制ではない) * 他のプログラムへの引用 いかなる目的であれ自由である. ただし, 配布したコードに含 まれる他の作者によるコードは, それぞれの作者の意向による 制限が加えられる. * 再配布 禁止する. 入手したい人は作者に直接連絡をとること. これは Rubyの言語仕様が不安定な状態のまま広く流布するのを制限す るためであり, 言語仕様が安定した時点で再配布自由とする.