ruby-trunk-changes r47069 - r47089

今日は標準添付ライブラリ uri, net/http, set などの最適化、不具合修正、機能追加と win32ole のリファクタリングがありました。

tenderlove: r47069 2014-08-06 03:41:46 +0900

拡張ライブラリ psych で Syck が生成した YAML がロードできない不具合を修正しています。 !ruby/object:Hash タグを Hash として扱えなかったらしいです。 https://github.com/tenderlove/psych/issues/198

svn: r47070 2014-08-06 03:41:58 +0900

version.h の日付更新。

naruse: r47071 2014-08-06 04:08:26 +0900

Net::HTTP のテストで警告除去のため Net::HTTP#post でヘッダ content-type を明示的に渡すようにしています。

naruse: r47072 2014-08-06 04:09:01 +0900

標準添付ライブラリ uri/http で URI::HTTP#request_uri で path_query を呼んで余分な中間オブジェクトを生成する可能性があったのを避けるようにしています。

naruse: r47073 2014-08-06 04:09:05 +0900

標準添付ライブラリ uri の normalize! path_query to_s でも文字列リテラルを freeze して共有化させたり(2.2 の新機能)、そもそも文字列リテラルとの比較を避けて empty? を使うなどして実行時にオブジェクトが生成されないようにする最適化を行っています。

naruse: r47074 2014-08-06 04:09:08 +0900

r47072 で標準添付ライブラリ uriURI#path_query メソッドは利用されなくなったのでメソッド定義自体を削除しています。

naruse: r47075 2014-08-06 04:09:43 +0900

標準添付ライブラリ net/http の Net::HTTP::GenericRequest でも極力中間オブジェクトが生成されないように String オブジェクトを dup してから破壊的メソッドで変更するような方法に変更する最適化を行っています。

naruse: r47076 2014-08-06 04:10:05 +0900

標準添付ライブラリ net/http の Net::HTTP::GenericRequest#update_uriスキーマの変更で @uri のクラス(URI::HTTP と URI::HTTPS が変化するようにしています。またここでも文字列リテラルを freeze したりする最適化を行なっています。

naruse: r47077 2014-08-06 04:10:23 +0900

r47076 の続きで、標準添付ライブラリ net/http の Net::HTTP::GenericRequest#update_uri で req["host"] が指定されていたら渡された URI のホスト名よりも優先するようにしています。 チケットをみると ssh tunneling でポート転送しているような時に URI には localhost:xxx などを渡して req["host"] で上書きをしたいそうです。 [ruby-core:63798] [Bug #10054]

naruse: r47078 2014-08-06 04:20:28 +0900

標準添付ライブラリ net/http で Net::HTTP::Options のレスポンスが body を持てるようにしています。 [ruby-core:55093] [Feature #8429] 参考URL: http://tools.ietf.org/html/rfc7231#section-4.3.7

naruse: r47079 2014-08-06 04:37:37 +0900

標準添付ライブラリ net/http の Net::HTTP.proxy_uriIPv6 のアドレスが扱えなくなっていたので文字列に直接埋め込みで URL を記述して URI() に渡すのではなくて URI::HTTP.new を直接利用して URI を生成するようにしています。 [ruby-core:58438] [Bug #9129]

suke: r47080 2014-08-06 18:47:39 +0900

拡張ライブラリ win32ole のソースから WIN32OLERuntimeError の実装部分を ext/win32ole/win32ole_error.(ch) に分離しています。

svn: r47081 2014-08-06 18:47:51 +0900

r47080 で新規追加されたファイルの行末の空白除去。

svn: r47082 2014-08-06 18:47:52 +0900

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

knu: r47083 2014-08-06 19:13:34 +0900

標準添付ライブラリ set で Set#clone を実装しています。 initialize_clone メソッドを追加することで対応しています。 https://github.com/ruby/ruby/pull/661

suke: r47084 2014-08-06 20:09:59 +0900

拡張ライブラリ win32ole で文字列の末尾の文字をチェックするのにわざわざ rb_str_subseq() で部分文字列オブジェクトを作っていたので、直接文字列の内容をチェックするように修正しています。

knu: r47085 2014-08-06 20:28:21 +0900

標準添付ライブラリ set の Set#replace で引数に渡されたオブジェクトが each_entry もしくは each メソッドでイテレートできることを先に確認してから現在保持している値をクリアするようにして、例外発生した時に既に空になってしまうのを避けるようにしています。 https://github.com/ruby/ruby/pull/675

knu: r47086 2014-08-06 20:45:47 +0900

Enumerable#one? の rdoc 用コメントの位置を実装している関数の前に移動しています。 https://github.com/ruby/ruby/pull/687

knu: r47087 2014-08-06 20:47:57 +0900

r47086 の ChangeLog エントリに [DOC] タグを追加しています。

suke: r47088 2014-08-06 21:00:09 +0900

拡張ライブラリ win32ole のソースから WIN32OLE_TYPELIB の実装部分を ext/win32ole/win32ole_typelib.(ch) に分離しています。

svn: r47089 2014-08-06 21:00:14 +0900

r47088 で新規追加したファイルの svn property 設定。