ruby-trunk-changes r51111 - r51127

今日は control frame のメンバ削除と method entry の管理方法の変更という内部的には大きな変更がありました。

nobu: r51111 2015-07-03 07:13:17 +0900

r51109 で Dir#glob で一部の errno は警告に留めるようにしましたが、Windows 版では errno にはセットされないので GetLastError() でエラーを取得して rb_w32_map_errno() で変換しておくようにしています。 [ruby-core:63591] [Bug #10015]

svn: r51112 2015-07-03 07:13:51 +0900

version.h の日付更新。

normal: r51113 2015-07-03 07:22:14 +0900

拡張ライブラリ socket と stringio で read_nonoblock/write_nonblock などで exception: false のオプションをチェックするのを、実際に待ちが必要で例外を発生させるか Symbol を返すかを判定する必要が出た時に引数をチェックするように遅延させるようにしています。 ここまでしますか。 [ruby-core:69778] [Feature #11318]

svn: r51114 2015-07-03 07:24:21 +0900

r51113 で新規追加されたファイルの svn property 設定。

nobu: r51115 2015-07-03 08:19:18 +0900

r51039 での convert_type() での変換メソッドのテーブルの持ちかたの変更時に、method 引数が "to_????" のようなパターンでなかった場合にローカル変数 i が未初期化のまま使われる可能性があったので初期化しています。

nobu: r51116 2015-07-03 12:25:21 +0900

String#encode でその文字列の Encoding への変換に universal_newline: true, undef: :replace および :replace オプションを渡すと例外が発生する不具合を修正しています。 :replace オプションの処理時に変換先の encname2 が空の場合に対応するようにしています(変換なしの時に空になるのでしょう)。 [ruby-core:69841] [Bug #11324]

nobu: r51117 2015-07-03 14:30:21 +0900

win32/file.c に mingw の時に #define MINGW_HAS_SECURE_API 1 を追加しています。 _wfreopen_s() の定義のために #include の前に必要なんだそうです。 r51069 の追加修正ですね。 [ruby-core:69780] [Bug #11320]

usa: r51120 2015-07-03 18:08:16 +0900

標準添付ライブラリ cmath の rdoc 用コメントに非ASCII 文字のシングルクオート(アポストロフィ)が含まれていたので置換しています。

ko1: r51126 2015-07-03 20:24:50 +0900

rb_control_frame_t から klass メンバを削除し、かわりに rb_classext_t に rb_callable_method_entry_t という型(内容は rb_method_entry_t と同じ。なぜ別の型にしたんだろう)を管理する callable_m_tbl メンバを追加して、Module のインスタンスメソッドの場合は実際に include や prepend で追加された IClass に 所属するように owner をセットしたテーブルも別に持つようにしています。 control frame は節約されますが method entry のほうは数が増えるので、メモリ消費量は増える可能性があるみたいですね。 [ruby-dev:49107] [Bug #11278] [ruby-core:69651] [Bug #11279]

なお Coverity Scan が proc.c:2333 で data->me の NULL チェックせずにアクセスしてると検出してますね。上の分岐では data->me をチェックしてるので実際必要そうですね。

svn: r51127 2015-07-03 20:25:29 +0900

r51126 の行末の空白除去。