summaryrefslogtreecommitdiff
path: root/C-IF
diff options
context:
space:
mode:
authorYukihiro Matsumoto <matz@ruby-lang.org>1994-08-10 15:54:46 +0900
committerTakashi Kokubun <takashikkbn@gmail.com>2019-08-17 22:09:30 +0900
commit6e3090413652b6592346556149fed1e9aec5495d (patch)
treebac97139bbeedc8cb67cb2e451a22ed4ddb2b2d4 /C-IF
parent200e0ee2fd3c1c006c528874a88f684447215524 (diff)
version 0.50v0_50
http://cache.ruby-lang.org/pub/ruby/1.0/ruby-0.50.tar.gz Wed Aug 10 15:54:46 1994 Yukihiro Matsumoto (matz@ix-02) * variable.c: -vオプションが指定されている時は初期化されていない, 大域変数, インスタンス変数, ローカル変数を参照した時点でwarning を出すようにした. Tue Aug 9 11:50:48 1994 Yukihiro Matsumoto (matz@ix-02) * bignum.c: 冪乗に関しても多倍長演算を行なうように. 特に浮動小数点 数の範囲を越えた時の処理を的確に行なうように. * eval.c: メソッド定義後は構文木から, メソッド定義部分を外す. 無駄 な再定義が起こらないようにするためと2重にfree()されないため. * array.c(Fary_aref): 引数が1つでFixnumの時, Range checkを行なわな いように修正. * eval.c: 引数の数をコンパイル時に計算して若干の高速化. Mon Aug 8 13:06:24 1994 Yukihiro Matsumoto (matz@ix-02) * object.c: nilによる比較連鎖をなくした. * parse.y: bit演算子の優先順位を比較演算子よりも強くした. Cとは異 なることになるが, 直観には合致する. * gc.c: クラスを解放する時, 個々のメソッド毎にキャッシュをクリアす るのではなく, クラス単位でクリアするように. Thu Aug 4 18:45:09 1994 Yukihiro Matsumoto (matz@ix-02) * methods.c(method_free): 解放されたメソッドに関してキャッシュをク リアしておく必要があった. * gc.c: Dataクラスのデータ部分をfree()し忘れていた. Wed Aug 3 09:58:14 1994 Yukihiro Matsumoto (matz@ix-02) * parse.y: def func .. end形式による関数メソッドの定義はなくなった. * methods.c: func形式のメソッドをなくした. あっても, あまり意味が ないので. * eval.c: $0への代入でps(1)の出力が変化するように. * io.c(Fsyscall): syscall()を実現. Mon Aug 1 13:41:11 1994 Yukihiro Matsumoto (matz@ix-02) * parse.y: ダブルクォートで囲まれた文字列や正規表現中で"#{変数名}" または"#変数名"という形式で変数の内容を埋め込むことができるよう になった. * io.c: 関数メソッドsystem2()はなくなった. 今はバッククォートがあ るからね. * parse.y: `cmd`によってコマンドを文字列に展開することができるよう になった. * parse.y: __FILE__, __LINE__を追加. それぞれファイル名(文字列), 行番号(整数)を値とする疑似変数. Fri Jul 29 13:16:07 1994 Yukihiro Matsumoto (matz@ix-02) * methods.h: メソッドをオブジェクトとして扱うのをやめる. メソッド のメモリ管理にはリファレンスカウントを使うことにした. これでオブ ジェクトの数が減ってほんの少しだけGCが速くなる(かな). * purifyによってメモリ関係のバグを検査した(見つかる,見つかる…). * gc.c: GCをプログラマが変数をマークする形式から, スタックとレジス タからマークする方法に変更. 移植性が下がるような気もするが, siod やscmでも採用されているから多分大丈夫だろう. Linux on i486でも動 作を確認した. Wed Jul 27 16:13:13 1994 Yukihiro Matsumoto (matz@ix-02) * eval.c(Eval): トップレベルでは構造木をfreeしないように. どうせ解 放されるから時間の無駄である. * array.c, dict.c: "=="を構造一致に変更. Fri Jul 22 10:14:09 1994 Yukihiro Matsumoto (matz@ix-02) * error.c: 組み込みタイプの名前を登録し忘れていた. Thu Jul 21 14:06:48 1994 Yukihiro Matsumoto (matz@ix-02) * parse.y(freenode),eval.c(Eval): 解析木を解放し忘れていた. Mon Jul 18 10:19:15 1994 Yukihiro Matsumoto (matz@ix-02) * parse.y: 多重代入を処理するルールにバグがあって, 3要素以上の多重 代入に失敗していた. * eval.c(rb_eval): 多重代入で, 右辺が配列でない時には`to_a'メソッ ドで配列に変換して代入するようにした. 今までの仕様だと右辺値が第 1要素にそのまま代入されていたが, structなど配列に変換できるもの は変換した方が嬉しい気がする. * dbm.c,dict.c(delete_if): メソッド追加. * process.c(wait,waitpid): システムコールwaitpidまたはwait4がある 時はそちらを使うように. configureもそれらをチェックするように変更. * dbm.c, dict.c(clear): メソッド追加.
Diffstat (limited to 'C-IF')
-rw-r--r--C-IF181
1 files changed, 107 insertions, 74 deletions
diff --git a/C-IF b/C-IF
index df4dffc..de50de0 100644
--- a/C-IF
+++ b/C-IF
@@ -2,131 +2,164 @@
Ruby-C 󥿡ե
-VALUE
+
- Ruby֥Ȥɽ뷿. ɬפ˱ƥ㥹ȤѤ.
+ VALUE
-Qnil
+ Ruby֥Ȥɽ뷿. ɬפ˱ƥ㥹ȤѤ. Ȥ
+ ߷ɽCηruby.h˵ҤƤRǻϤޤ빽¤ΤǤ.
+ VALUE򤳤˥㥹Ȥ뤿RǻϤޤ빽¤̾ʸ
+ ̾ΥޥѰդƤ.
- : nil֥
+ѿ
-Qself
+ Qnil
- ѿ: ߤself֥Ȥ. ѿͤѹϰʸ
- selfͤΤΤѤäƤޤΤ, Ť˹Ԥʤ.
+ : nil֥
-VALUE rb_define_class(char *name, VALUE super)
+ Qself
- Ruby饹.
+ ѿ: ߤself֥Ȥ. ̤˥᥽åɤˤselfؤ
+ ͿΤ, ѿ˥ɬפϤʤ. ѿͤ
+ ѹϰʸselfͤΤΤѤäƤޤΤ, Ť˹Ԥ
+ .
-VALUE rb_define_module(char *name)
+饹⥸塼
- Ruby⥸塼.
+ VALUE rb_define_class(char *name, VALUE super)
-rb_include_module(VALUE class, VALUE module)
+ superΥ֥饹ȤƿRuby饹.
- ⥸塼򥤥󥯥롼ɤ. classǤmodule򥤥󥯥롼ɤƤ
- ˤϲ⤷ʤ(¿ť󥯥롼ɤζػ).
+ VALUE rb_define_module(char *name)
-void rb_define_variable(char *name, VALUE *var,
- VALUE (*get_hook), VALUE (*set+hook)())
+ Ruby⥸塼.
- RubyCȤǶͭ륰Хѿ. Ruby֥Ȥؤ
- ѿƤδؿˤäʤФʤʤ(GCݸ뤿
- ). get_hookQnilǤʤ, ѿȤκݤget_hook˥åȤ줿ؿ
- ƤФ. set_hookQnilǤʤˤλset_hookƤФ.
+ void rb_include_module(VALUE class, VALUE module)
- ѿ̾`$'ǻϤޤʤˤϼưŪɲä. ѿ̾Ȥrubyμ
- ̻ҤȤƵʤʸ(㤨` ')ޤˤrubyץफ饢
- Ǥʤʤ.
+ ⥸塼򥤥󥯥롼ɤ. classǤmodule򥤥󥯥롼ɤ
+ ˤϲ⤷ʤ(¿ť󥯥롼ɤζػ).
-void rb_global_variable(VALUE *var)
+ѿ
- GCRubyϥʤ, Ruby֥Ȥޤѿޡ
- .
+ void rb_define_variable(char *name, VALUE *var,
+ VALUE (*get_hook), VALUE (*set_hook)())
-void rb_read_only_hook()
+ RubyCȤǶͭ륰Хѿ. get_hookQnilǤʤ,
+ ѿȤκݤget_hook˥åȤ줿ؿƤФ. set_hookQnil
+ Ǥʤˤλset_hookƤФ.
- ɤ߽ФѤѿΤset_hookؿ.
+ ѿ̾`$'ǻϤޤʤˤϼưŪɲä. ѿ̾Ȥruby
+ ̻ҤȤƵʤʸ(㤨` ')ޤˤrubyץफ
+ 饢Ǥʤʤ.
-rb_define_method(VALUE class, char *name, VALUE (*func)(), int argc)
+ void rb_global_variable(VALUE *var)
- ᥽åɤ. argc-1λ, argc, argvͿ.
+ GCRubyϥʤ, Ruby֥Ȥޤѿ
+ ޡ.
-rb_define_single_method(VALUE class, char *name, VALUE (*func)(), int argc)
+ void rb_read_only_hook()
- ðۥ᥽åɤ. rb_define_method()Ʊ.
+ ɤ߽ФѤѿΤset_hookؿ. ͤꤷ褦Ȥ㳰
+ ȯ.
-ID rb_intern(char *name)
+饹
- ʸбID֤.
+ void rb_define_const(VALUE class, char *name, VALUE val)
-char *rb_id2name(ID id)
+ 饹.
- IDбʸ֤(ǥХå).
+᥽å
-VALUE rb_funcall(VALUE recv, ID mid, int narg, ...)
+ rb_define_method(VALUE class, char *name, VALUE (*func)(), int argc)
- ᥽åɸƤӽФ. ʸ󤫤mid뤿ˤrb_intern()Ȥ.
+ ᥽åɤ. argcselfο. argc-1λ,
+ argc, argvͿ. argc-2λ, self, args(args
+ ޤruby)ȤͿ.
-rb_iv_get(VALUE obj, char *name)
+ rb_define_single_method(VALUE class, char *name, VALUE (*func)(), int argc)
- objΥ󥹥ѿ. @Ϥޤʤ󥹥ѿRuby
- फ饢Ǥʤ.
+ ðۥ᥽åɤ. rb_define_method()Ʊ.
-rb_iv_set(VALUE obj, char *name, VALUE val)
+ rb_scan_args(VALUE args, char *fmt, ...)
- objΥ󥹥ѿval˥åȤ.
+ argsͿ줿ʬ򤹤. fmtɬܰο, ղðο,
+ Ĥΰ뤫ꤹʸ, "*"ȤǤ.
+ 2 ܤο"*"ϾάǽǤ. 3ʹߤѿؤΥݥ󥿤,
+ Ǥѿ˳Ǽ. ղðͿʤ
+ Qnil.
-rb_call_super(VALUE args)
+Ruby᥽åɸƤӽФ
- ѡ饹Υ᥽åɤƤӽФ. argsϰꥹȤȤʤ. args
- Qnilλϰ򤽤ΤޤްѤ.
+ VALUE rb_funcall(VALUE recv, ID mid, int narg, ...)
-rb_iterate(VALUE (*func1)(), char *arg1, VALUE (*func2)(), char *arg2)
+ ᥽åɸƤӽФ. ʸ󤫤mid뤿ˤrb_intern()Ȥ.
- func2֥åȤꤷ, func1򥤥ƥ졼ȤƸƤ. func1ˤ
- arg1ȤϤ, func2ˤ1˥ƥ졼ȤͿ줿
- , 2arg2Ϥ.
-
-rb_yield(VALUE val)
+ rb_call_super(VALUE args)
+
+ ѡ饹Υ᥽åɤƤӽФ. argsϰꥹȤȤʤ.
+ args QnilλϸߤΥ᥽åɤΰ򤽤ΤޤްѤ.
+
+ʸ <-> IDѴ
+
+ ID rb_intern(char *name)
+
+ ʸбID֤.
+
+ char *rb_id2name(ID id)
+
+ IDбʸ֤(ǥХå).
- valͤȤƥƥ졼֥åƤӽФ.
+󥹥ѿ
-rb_resque(VALUE (*func1)(), char *arg1, VALUE (*func2)(), char *arg2)
+ VALUE rb_iv_get(VALUE obj, char *name)
- ؿfunc1arg1˸ƤӽФ. func1μ¹㳰ȯˤ
- func2arg2ȤƸƤ. ͤ㳰ȯʤäfunc1
- , 㳰ȯˤfunc2ͤǤ.
+ objΥ󥹥ѿͤ. `@'ǻϤޤʤ󥹥ѿ
+ Rubyץफ饢Ǥʤ.
+
+ VALUE rb_iv_set(VALUE obj, char *name, VALUE val)
+
+ objΥ󥹥ѿval˥åȤ.
+
+湽¤
+
+ VALUE rb_iterate(VALUE (*func1)(), char *arg1, VALUE (*func2)(), char *arg2)
+
+ func2֥åȤꤷ, func1򥤥ƥ졼ȤƸƤ. func1
+ arg1ȤϤ, func2ˤ1˥ƥ졼ȤͿ
+ 줿, 2arg2Ϥ.
+
+ VALUE rb_yield(VALUE val)
-rb_ensure(VALUE (*func1)(), char *arg1, VALUE (*func2)(), char *arg2)
+ valͤȤƥƥ졼֥åƤӽФ.
- ؿfunc1arg1ȤƼ¹Ԥ, ¹Խλ(Ȥ㳰ȯƤ)
- func2arg2ȤƼ¹Ԥ. ͤfunc1ͤǤ(㳰ȯ
- nil).
+ VALUE rb_resque(VALUE (*func1)(), char *arg1, VALUE (*func2)(), char *arg2)
-GC_LINK
+ ؿfunc1arg1˸ƤӽФ. func1μ¹㳰ȯ
+ func2arg2ȤƸƤ. ͤ㳰ȯʤä
+ func1, 㳰ȯˤfunc2ͤǤ.
- ѿGCݸԤʤ.
+ VALUE rb_ensure(VALUE (*func1)(), char *arg1, VALUE (*func2)(), char *arg2)
-GC_PRO(var)
+ ؿfunc1arg1ȤƼ¹Ԥ, ¹Խλ(Ȥ㳰ȯ
+ ) func2arg2ȤƼ¹Ԥ. ͤfunc1ͤǤ(
+ ȯnil).
- ѿGCݸ. ѿݸƤʤǽ
- Ruby֥ȤؤƤˤGC_PRO()Ȥäݸɬפ
- . GC_PRO()ݸѿɬƤɬפ(̤
- ΥߤäƤGC).
+㳰顼
-GC_PRO2(var)
+ void Fail(char *fmt, ...)
- GCݸ, varnilǽ뤳ȰʳGC_PRO(var)Ʊ.
+ 㳰ȯ. printf()Ʊ.
-GC_PRO2(var, init)
+ void Fatal(char *fmt, ...)
- GCݸ, varinit˽뤳ȰʳGC_PRO(var)Ʊ.
+ ̿Ū㳰ȯ. ̾㳰ϹԤʤ줺, 󥿡ץ꥿
+ λ(ensureǻꤵ줿ɤϽλ˼¹Ԥ).
-GC_UNLINK
+ void Bug(char *fmt, ...)
- GCݸλ.
+ 󥿡ץ꥿ʤɥץΥХǤȯϤΤʤλ
+ Ƥ. 󥿡ץ꥿ϥפľ˽λ. 㳰ϰڹ
+ ʤʤ.
/*
* Local variables: