ruby-trunk-changes r49106 - r49124

今日は拡張ライブラリ fiddle に含まれている Fiddle::CParser の解析できる C の宣言を拡張する機能強化や Array#shift の高速化などがありました。

nobu: r49106 2015-01-03 04:03:17 +0900

test/lib/leakchecker.rb での fd の leak チェックで IO.console を使った処理で古い io/console を利用した場合を考慮して IO.console の arity もチェックして使うかどうか分岐するようにしています。 このライブラリというかユーティリティ ruby 専用だと思うので古い io/console を使うかなぁ、と思ったら異なるバージョンでの結果を比較するために使うかもしれないとのこと。と思うのですが英語を読み間違えているかも。

nobu: r49107 2015-01-03 04:03:23 +0900

r49097 で test/lib/tracepointchecker.rb で TracePoint が利用できる時だけクラス定義するようにしたのですが、defined?(TracePoint) では不十分で TracePoint.stat が利用できることが必要だったのでそこまで確認するようにしています。

svn: r49108 2015-01-03 04:03:29 +0900

version.h の日付更新。

hsbt: r49109 2015-01-03 09:01:49 +0900

r49101 の標準添付ライブラリ webrickWEBrick::Utils#create_listeners の省略可能引数削除について NEWS ファイルに追記しています。

hsbt: r49110 2015-01-03 09:54:37 +0900

拡張ライブラリ fiddle に添付されている cparser.rb の Fiddle::CParser という C の宣言を解析するライブラリで関数ポインタや仮引数名つきの宣言への対応をしているそうです。 https://github.com/ruby/ruby/pull/590

svn: r49111 2015-01-03 09:54:40 +0900

r49110 の行末の空白除去。

hsbt: r49112 2015-01-03 10:14:56 +0900

拡張ライブラリ openssl で SSL_SESSION_cmp() という関数が存在しない時の代替実装で memcmp() のかわりに CRYPTO_memcmp() を利用するようにしています。 https://github.com/ruby/ruby/pull/591

hsbt: r49113 2015-01-03 10:38:59 +0900

標準添付ライブラリ net/http でサーバへのソケット接続に失敗した時によりわかりやすいエラーメッセージの例外にして投げなおすようにしています。 https://github.com/ruby/ruby/pull/700

hsbt: r49114 2015-01-03 11:27:50 +0900

Array#shift で MEMMOVE() でバッファ内の要素を動かすのではなく共有配列を利用してバッファはそのままにして参照する先頭位置だけを更新するようにしています。また対応するテストとベンチマークも追加しています。 https://github.com/ruby/ruby/pull/537

svn: r49115 2015-01-03 11:28:05 +0900

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

hsbt: r49116 2015-01-03 11:50:31 +0900

r49112 での拡張ライブラリ openssl の CRYPTO_memcmp() の利用ですが Windows 版ではビルドエラーになるそうなので #if defined(_WIN32) の時はやっぱり従来の memcmp(3) を利用するようにするコードを残すようにしています。

akr: r49117 2015-01-03 11:52:01 +0900

test/lib の make test-all 用の test-unit で -n と -x オプションの help メッセージに指定できるパターンについてよりわかりやすく表記するようにしています。 -n にも正規表現が書けるんですね。

ayumin: r49118 2015-01-03 16:21:56 +0900

標準添付ライブラリ net/http で環境変数 http_proxy から proxy user と proxy password を取得できるようにしています。 がこれは後で r49124 にてセキュリティ上の懸念から revert されています。 https://github.com/ruby/ruby/pull/763 こちらのチケットも参照。 [ruby-core:67138] [Feature #10652]

hsbt: r49119 2015-01-03 18:23:43 +0900

r49110 での拡張ライブラリ fiddle の Fiddle::CParser の機能強化は Fiddle::Import が動かなくなる場合があったため追加修正しています。

nobu: r49120 2015-01-03 18:49:19 +0900

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

nobu: r49121 2015-01-03 18:53:30 +0900

拡張ライブラリ fiddle の Fiddle::CParser の r49119 での修正ですが、String#split で分割数を指定していませんでしたが、空白で区切った先頭の要素だけが必要だったので、第2引数に 2 を渡して余計な分割は行わないように抑制しています。

kazu: r49122 2015-01-03 19:28:07 +0900

r49103 の ChangeLog エントリの typo 修正。 ふむ、と思って辞書を引いてみたのですが unsuppressable だとうまくヒットしてくれず、同様の意味だと insuppressible だとあるようです。

nobu: r49123 2015-01-03 19:52:14 +0900

r47640 で追加した関数マクロ rb_{usascii,utf-8,enc}_str_new_literal() などを gcc でビルドする時だけでなく常に定義するようにしています。

ayumin: r49124 2015-01-03 20:36:35 +0900

r49118 で標準添付ライブラリ net/http で proxy の user/password を 環境変数 http_proxy から取得するようにした変更を revert しています。 セキュリティ上の懸念および RFC 1738 に proxy の user と password は利用しないと明記されているとのことで revert しています。 チケットの報告者の動機もよくわかるので、なにか方法があればいいのですが…。 [ruby-core:67138] [Feature #10652]