diff options
author | Yukihiro Matsumoto <matz@ruby-lang.org> | 1994-08-10 15:54:46 +0900 |
---|---|---|
committer | Takashi Kokubun <takashikkbn@gmail.com> | 2019-08-17 22:09:30 +0900 |
commit | 6e3090413652b6592346556149fed1e9aec5495d (patch) | |
tree | bac97139bbeedc8cb67cb2e451a22ed4ddb2b2d4 /C-IF | |
parent | 200e0ee2fd3c1c006c528874a88f684447215524 (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-IF | 181 |
1 files changed, 107 insertions, 74 deletions
@@ -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: |