«前の日記(2004年09月21日) 最新 次の日記(2004年09月23日)» 編集

Matzにっき


2004年09月22日 [長年日記]

_ [Ruby]今日のChangeLog

デバッグ。きりがない。

  • hash.c (hash_alloc): was using tbl pointer without initialization.
  • hash.c (rb_hash_rehash): add iteration check. [ruby-dev:24301]
  • st.c (st_foreach): add deep check.
  • array.c (rb_ary_collect_bang): element size might change during comparison. [ruby-dev:24300]
  • array.c (rb_ary_reject_bang): ditto. [ruby-dev:24300]
  • array.c (rb_ary_eql): ditto. [ruby-dev:24300]

諸悪の根源、継続を手当てするべきなんだろうか。

それとは別にソースの整理。

  • parse.y: remove global variables ruby_eval_tree and ruby_eval_tree_begin.

    parse.yからグローバル変数を無くす修正に取り掛かる。まだ先は遠いが。 しかし、bisonを要求するようになるのはどうなんだろう。

  • hash.c (rb_hash_fetch): returns KeyError instead of IndexError.

    Enumerable#each_with_indexから飛び火。

    問題は「Hashのkeyをindexと見るかどうか」。 indexと見るならばEnumerable#each_with_indexはkeyを与えるべき。 見ないならばfetchなどがIndexErrorを返すのはおかしい。

    私の結論としては「indexとして見ない」、「IndexErrorを新設のKeyErrorに変更」とした。 ただし、互換性の点からKeyErrorはIndexErrorのサブクラス。


«前の日記(2004年09月21日) 最新 次の日記(2004年09月23日)» 編集