ruby-trunk-changes r58468 - r58479

今日は数値の coerce や Integer#step, Range オブジェクト生成などで内部的に呼ばれるメソッドの例外を握り潰さないようにする変更などがありました。

shyouhei: r58468 2017-04-25 15:51:34 +0900

st.c の PTR_EQUAL() という関数マクロの定義で引数に key というのがあって、展開する内容に構造体メンバ key へのアクセスがあったので、そこも展開されてしまってコンパイルエラーになる可能性があったのを修正しています。 実際には呼び出し元でも key が使われていたので展開後も変化しなくてエラーにはなっていなかったようです。

svn: r58469 2017-04-25 15:51:35 +0900

version.h の日付更新。

hsbt: r58470 2017-04-25 16:55:56 +0900

拡張ライブラリ gdbm の gemspec ファイルを更新しています。うーむ、ところで gdbm.gem というのは ruby-ffi を利用した実装というのが存在しているんですね…。

nobu: r58471 2017-04-25 17:17:24 +0900

Warning.warn で Kernel#warn の出力をカスタマイズした時に load_lock() での再帰的 require でのデッドロック検出時の出力でメッセージはカスタマイズできるけどバックトレースが標準エラー出力に決め打ちで出力されていたので、これも Warning.warn を尊重するようにしています。 [ruby-core:80850] [Bug #13505]

eregon: r58472 2017-04-25 18:10:46 +0900

Warning.warn およびモジュール Warning の rdoc 用コメントを追加しています。 [ruby-core:80848] [Feature #13504]

hsbt: r58473 2017-04-25 18:23:04 +0900

標準添付ライブラリ webrick の gemspec ファイルを更新して Gem::Specification#files のファイルリストを "lib/" つきにしています。

eregon: r58474 2017-04-25 20:42:20 +0900

これ結構長いこと懸案で Object#<=> や coerce で内部的に呼んだメソッドで発生した例外は無視して false を返すという挙動があって、それをやめて例外をそのまま上に伝播させようというのが r44453 や r44502 で一度入ったけど、互換性のため警告に留めるようにして(もう3年くらい前ですね)、r49570 で Object#<=> での比較は例外を発生させるように変更したのを、do_coerce でも同様に例外を上に伝播させるようにしています。 [ruby-core:51389] [Feature #7688]

eregon: r58475 2017-04-25 20:42:31 +0900

r58474 の続き。 Integer#step でも内部で ">" メソッドで比較をしている時に例外を無視していたのですが、そのまま発生させるようにしています。 [ruby-core:51389] [Feature #7688]

eregon: r58476 2017-04-25 20:42:43 +0900

r58474 や r58475 と同様に Range オブジェクトの生成時に内部で <=> メソッドを呼ぶ時にも例外を無視せずそのまま発生させるようにしています。 [ruby-core:51389] [Feature #7688]

eregon: r58477 2017-04-25 21:45:14 +0900

spec/default.mspec に rescue 節のない begin ... else ... end という構文があったので、不要な else を消しています。

eregon: r58478 2017-04-25 21:45:25 +0900

make test-rubyspec で spec/default.mspec をコマンドラインで指定しないようにしています。指定しなくても rubyspec が自動で読み込んでくれるみたいです。

eregon: r58479 2017-04-25 21:45:36 +0900

spec/default.mspec で rbconfig を読み込むのに Kernel#load を使っていたのを、重複して読み込むのを防ぐため require_relative を使うようにしています。