ruby-trunk-changes r50768 - r50785

今日は socket#sendmsg の実装やメソッド定義の管理の追加修正などがありました。

kazu: r50768 2015-06-04 22:54:25 +0900

r50743 の ChangeLog エントリの余分なかっこ削除。

kazu: r50769 2015-06-04 22:54:33 +0900

r50745 の ChangeLog エントリの typo 修正。

ko1: r50770 2015-06-05 01:02:01 +0900

rb_method_entry_t* 型の引数や変数に const を付けています。

svn: r50771 2015-06-05 01:02:21 +0900

version.h の日付更新。

ko1: r50772 2015-06-05 01:08:40 +0900

r50728 で構造体の初期化に変数を使っていたため Solaris の古いコンパイラでビルドできなくなっていたそうなので、メンバー毎に代入を行うように書き替えています。 [ruby-dev:49020] [Bug #11217]

ko1: r50773 2015-06-05 01:15:13 +0900

r50743 で rb_bug("unreachable") とだけメッセージを出す rb_bug() があったのでもう少し詳細な情報を出すようにしています。

ko1: r50774 2015-06-05 01:17:53 +0900

vm_insnhelper.c の vm_defined() の def->flags.visi (rb_method_visibility_t という enum 型)を unsigned int にキャストしたままだったところがあったので不要なキャストを削っています。

ko1: r50775 2015-06-05 02:21:24 +0900

テスト用のユーティリティ EnvUtil の assert_no_memory_leak でエラーを検出するしきい値のデフォルトを 1.5 から 2.0 に引き上げています。 memory leak のテストは環境や実行するテストの数によっても通せるしきいちが結構違うので失敗しやすいんですよね(make test-all だと通っても単体でテストを通すと失敗したりする)。

normal: r50776 2015-06-05 05:50:08 +0900

拡張ライブラリ socket の Socket#sendmsg などのメソッドの実装で利用さている bsock_sendmsg_internal() で引数の解析に rb_scan_args() を利用するようにしています。可変長引数を argc をチェックしつつ ad-hoc に処理していたので簡単に書けるようにしたのと、キーワード引数の処理もできるので今後の拡張もしやすくなります。 [ruby-core:69439] [Feature #11207]

normal: r50777 2015-06-05 05:53:17 +0900

r50776 の ChangeLog エントリを追記しています。 [ruby-core:69439] [Feature #11207]

normal: r50778 2015-06-05 06:45:23 +0900

rb_scan_args() の rdoc 用コメントに、渡された keywords_hash が破壊的に操作される(要素が削除される)ことを追記しています。 [ruby-core:68507]

normal: r50779 2015-06-05 07:11:19 +0900

IO#readpartial や IO#read_nonblock が利用する io_getpartial() や IO#write_nonblock の実装 io_write_nonblock() で Symbol :wait_readable, :wait_writable をその場で毎回 rb_intern を呼び出していたのを、初期化時に作っておいて static 変数に格納したものを利用するようにしています。コミットログみると高速化というより(結果的にそれもあるでしょうけど)コードサイズの削減が目的みたいです。あいかわらずのこだわりですね…。

normal: r50780 2015-06-05 09:18:30 +0900

r50776 で HAVE_STRUCT_MSGHDR_MSG_CONTROL の定義のチェックの範囲が間違えていて必要な変数宣言も #if の中に入れてしまっていてビルドエラーになっていたので修正しています。

normal: r50781 2015-06-05 17:28:14 +0900

拡張ライブラリ socket の Socket#sendmsg で第4引数以降の rest 引数 controls がサイズ 0 だった時に不要な一時バッファ用の String オブジェクトを確保しないようにしいてます。

ko1: r50782 2015-06-05 20:42:34 +0900

rb_scope_visibility_t の定義を eval_internal.h から method.h へ、また rb_cref_t の定義も internal.h から method.h へ移動するようにしています。また型の修正などがありました。 [ruby-dev:49023] [Bug #11219]

ko1: r50783 2015-06-05 22:39:59 +0900

rb_method_visibility_t の型の不要なキャストを削るなどの小さな変更です。

ngoto: r50784 2015-06-06 01:11:47 +0900

r50776 で HAVE_STRUCT_MSGHDR_MSG_CONTROL が未定義の時に引数に rest 引数を受け付けないようになってしまっていたので、不要な分岐を削除しています。 [ruby-core:69468] [Bug #11224] [Bug #11225] [ruby-core:69469]

svn: r50785 2015-06-06 01:11:59 +0900

version.h の日付更新。