summaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
Diffstat (limited to 'README')
-rw-r--r--README51
1 files changed, 51 insertions, 0 deletions
diff --git a/README b/README
new file mode 100644
index 0000000..3ca523b
--- /dev/null
+++ b/README
@@ -0,0 +1,51 @@
+.\" 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では, レジスタウィン
+ ドウをフラッシュするコードを追加する必要があるかも知れない.