ruby-trunk-changes r49691 - r49705

今日は String#split の引数に不正文字列を渡した時の例外クラスの修正などがありました。

marcandre: r49691 2015-02-23 05:22:31 +0900

標準添付ライブラリ matrix の Vector#* の rdoc 用コメントの文法(?)の修正。 https://github.com/ruby/ruby/pull/837

svn: r49692 2015-02-23 05:22:48 +0900

version.h の日付更新。

eregon: r49693 2015-02-23 07:26:55 +0900

r46907 で Time#zone が 7bit ASCII 文字のみ含む時に ASCII-8BIT のエンコーディングにするようにしていましたが、US-ASCII にするように再修正しています。

nobu: r49694 2015-02-23 07:57:18 +0900

error.c で例外オブジェクトに持たせる内部的なインスタンス変数("@" ではじまらないので ruby レベルでは不可視)の名前を毎回 rb_intern() せずにあらかじめ定義されたものを利用するようにしています。

nobu: r49695 2015-02-23 15:26:42 +0900

String#split の引数に不正なエンコーディングの文字列を渡した時に発生する例外が ArgumentError でなく RegexpError になっていたのを修正しています。 [ruby-core:68229] [Bug #10886]

nobu: r49696 2015-02-23 15:26:59 +0900

r49695 とも関連してそうなのですが、string.c の get_pat_quoted() (String#split に文字列を渡した時に引数がこの関数で処理される)でエンコーディングに対して不正な文字列の時に TypeError を raise していたのを RegexpError を発生させるように変更しています。 r49695 で引数 check に 0 を渡して例外発生は呼び元で行うようにしたのでここで TypeError を偽装(?)する必要がなくなったということですかね。[追記]もともとここの rb_raise() は通ってなかったとのこと[/追記]

nobu: r49697 2015-02-23 16:05:06 +0900

error.c と vm_args.c でインスタンス変数 bt や locations の設定に使う ID を初期化時や毎回 rb_intern() していたのが、id.h で組み込みで定義される ID なのでそちらを利用するようにしています。

nobu: r49698 2015-02-23 16:05:19 +0900

vm_args.c で例外オブジェクトへのバックトレース設定を rb_exc_set_backtrace() を直接呼ぶようにして rb_funcall() のために rb_intern("set_backtrace") を呼ばないようにしています。

nobu: r49699 2015-02-23 16:05:23 +0900

コンパイラオプションで ruby_static_id_* というシンボルは export しないようにしているようです。そんなシンボル名元々なさそうだけどなぁ、と思ったけどこの後で追加されているようです。

nobu: r49700 2015-02-23 16:05:30 +0900

eval.c に ruby_static_id_{signo,status} という static 変数を追加してそれぞれ signo と status の ID を初期化時に rb_intern() して、error.c, eval_error.c, process.c, signal.c などでこれを使いまわすようにしています。

naruse: r49701 2015-02-23 18:30:24 +0900

tool/redmine-backporter.rb でステータスが Closed のチケットを bold で表示するようにしています。

naruse: r49702 2015-02-23 18:32:27 +0900

r49693 での Time#zone のエンコーディングの修正に Windows では zone が ASCII-8BIT になりうるとコメントを付加しています。 んん? つまり戻したほうがいいということでしょうか。 [ruby-core:68230] [Bug #10887]

nobu: r49705 2015-02-23 23:19:45 +0900

古い git だと -C オプションがないそうで、tool/vcs.rb で IO.pread の :chdir オプションを利用するように変更しています。 [ruby-dev:48880] [Bug #10890]