ruby-trunk-changes r35427 - r35449

今日はたくさんコミットがありましたが大きなところでは iconv が削除されています。 String#encode を使いましょう。また OpenSSL 1.0.1 でエラーになるテストがあった問題の対処がされています。

nobu:r35427 2012-04-22 21:39:55 +0900

openssl の extconf.rb で -Wno-deprecated-declarations (deprecated と指定された関数などを利用しても警告しないことを指定するオプション)を指定した時に SSL_library_init() が見付からなかったら openssl の検出失敗にしています。メッセージやコミットログによると Apple 同梱の OpenSSL に何か不備があってそのバージョンは利用しないようにしようとしているのではないかと思われます。

nobu:r35428 2012-04-22 21:43:53 +0900

openssl の関数の引数に RSTRING_LEN() を渡しているところを引数の型に合わせて RSTRING_LENINT() を渡すように修正しています(コンパイラ警告除去)。

naruse:r35429 2012-04-23 00:04:44 +0900

open-uri の proxy 経由で https 接続のテストでテスト後に proxy サーバ(WEBrick::HTTPProxyServer を利用)が停止するまで待つようにしています。

svn:r35430 2012-04-23 00:04:53 +0900

version.h の日付更新。

nobu:r35431 2012-04-23 10:43:35 +0900

configure で BASERUBY として 1.9.3 の ruby を使うと make に失敗する問題の対処として baseruby では --disable-rubygems オプションを付けるようにしています。 [ruby-core:44492] [Bug #6329]

naruse:r35432 2012-04-23 14:19:54 +0900

.gdbinit のコマンドを st.c の pack 時の構造の変化に追随させています。

akr:r35433 2012-04-23 19:55:39 +0900

dRuby のテストで子プロセスを殺す時に既に終了していて Errno::ESRCH が発生する時は問題ないので rescue して無視するようにしています。 [ruby-dev:45551]

akr:r35434 2012-04-23 20:15:35 +0900

OpenSSL 1.0.1 から RSA 鍵の 512ビットのものを拒否するようになったためにテストが失敗していたので 1024 ビットの鍵を利用するように変更しています。 drb/ssl のテストが OpenSSL 1.0.1 で失敗していたというのはこれが原因だったんですね。 [ruby-core:43844] [Bug #6221]

usa:r35435 2012-04-23 20:47:02 +0900

win32/win32.c に文字列リテラル (const char *) に +1 して2バイト目からを指すポインタとして利用する代入文が GCC 4.7.0 でうまく動かなかったようなので、ちゃんと普通に先頭を指して使うところでポインタ演算するようにしています。 [ruby-core:44505] [Bug #6333]

akr:r35436 2012-04-23 22:09:48 +0900

UNIX ソケットのテストで一時ファイルに使う名前を短かく(1文字に)しています。 コミットメッセージによるとUNIX ソケットのパス名が 107 バイトを越えないように、ということです。 107 バイトとは妙に中途半端なサイズですね。そういう制限はみつけられなかったのですが……

nobu:r35437 2012-04-23 22:48:31 +0900

Net::HTTP で Net::OpenTimeout が他の例外とまとめて rescue されて即再raise されていたので rescue 節自体を分けるようにリファクタリングされています。

nobu:r35438 2012-04-23 22:48:36 +0900

lib/net/http.rb で OpenSSL の autoload の設定が module Net の中でされていたのでトップレベルで実行するように修正されています。

nobu:r35439 2012-04-23 22:48:38 +0900

Net::IMAP で openssl が利用できるかのチェックで defied?(OpenSSL) が使われていたところで OpenSSL が autoload の設定がされていると "constant" が返ってきてしまうので defined?(OpenSSL::SSL) を使うように変更しています。 autoload の設定と defined? の組合せは注意が必用ですね。

nobu:r35440 2012-04-23 22:48:41 +0900

Net::IMAP や open-uri などで openssl に依存しているテストは OpenSSL やその下の定数が定義済みの時だけ実行するように条件を追加したり defined? でチェックする定数を詳細にしたりしています。

nobu:r35441 2012-04-23 22:48:43 +0900

1.9.2 でのみ走らせるというテストが明示的 skip になっていたので条件分岐でメソッド定義自体をしないようにしています。

nobu:r35442 2012-04-23 22:48:45 +0900

rubygems のテストで Psych が生成する YAML が正しいかというテストで YAML::ENGINE を psych に設定してテストするようにしています。
この if 文の条件ってちょっと変な気がします。!YAML::ENGINE.syck? の時に psych に設定しているので、つまり psych の時に psych にして syck の時はそのままになっているのでは?

nobu:r35443 2012-04-23 22:48:47 +0900

r35427 で Mac の標準についてる OpenSSL は使わないように configure を変更しましたが --with-broken-apple-openssl というオプションを configure につければ利用できるようにしています。「使うなよ」という思いがにじみ出ているオプション名ですね。

nobu:r35444 2012-04-23 22:56:11 +0900

文字エンコーディングの変換は CRuby は独自の機能を持っていて iconv (や nkf) での変換は不要で deprecated メッセージも出ていたので、ついに iconv が削除されています。 [ruby-core:44442] [Feature #6322]
String#encode などを使いましょう。

nobu:r35445 2012-04-23 22:57:53 +0900

.gitignore からも iconv のエントリを削除しています。

naruse:r35446 2012-04-23 23:05:49 +0900

open-uri のテストで WEBrick を利用したサーバを立てているのを終了時に停止する際に shutdown 実行してから実際に停止するまで待つようにしています。

mame:r35447 2012-04-24 00:23:41 +0900

do ... end 形式のブロックを Proc オブジェクトとして取り出して source_location でソースコード上の位置を取ると行番号がずれていたのを修正しています。 [ruby-core:42232] [Bug #5930]

svn:r35448 2012-04-24 00:23:54 +0900

version.h の日付更新。

mame:r35449 2012-04-24 00:27:00 +0900

他に Thread が居ないのに空の Queue で待つなど実質的にデッドロック状態に陥るのを検出した時に発生させる ThreadError のメッセージを少し説明的に変更しています。 [ruby-core:44336] [Bug #6288]
まあシグナルハンドラでメインスレッドが Queue に追加するとかいうことはありえますけどね。シグナルハンドラの再入の可能性を考えると(Mutex ロック取得中に再度シグナルハンドラに入るのでロック取得失敗する)そういうコードはそれはそれで問題がありそうです。