ruby-trunk-changes r35498 - r35513

FileUtils のコピーする時のシンボリックリンクメタデータの操作の修正、GCC 4.7.0 での最適化の影響で NAN の操作が変化してしまう不具合への対処、Readline の補完に関する新機能追加などがありました。

nagachika:r35498 2012-04-30 23:09:36 +0900

set_trace_func に Continuation を使うテストで別の Thread から trace_func が呼ばれてしまってエラーになる現象が稀に起きていたので、Continuation#call する前に Thread.current をチェックして同じ Thread だけから呼ぶようにしています。 [ruby-dev:45596] [Bug #6382]

akr:r35499 2012-04-30 23:37:54 +0900

FileUtils の cp などで :preserve オプションが付いていた時のファイルのメタデータの調整の時にシンボリックリンクを操作する時に File.lchown, File.lchmod を利用することで、リンク先のファイル/ディレクトリのメタデータを操作するのでなくてそのシンボリックリンク自体のメタデータを操作するようにしています。

akr:r35500 2012-04-30 23:45:31 +0900

r35499 のテストに FileUtils.cp_r で例外が発生しないこと(assert_nothing_raised)というアサーションを追加しています。

nobu:r35501 2012-05-01 05:02:34 +0900

r35497 で -fno-fast-math をつけるようにしたのを for 文を使って複数追加できるように書き直しています。 [ruby-core:44679] [Bug #6370]

svn:r35502 2012-05-01 05:02:38 +0900

version.h の日付更新。

nobu:r35503 2012-05-01 05:14:26 +0900

r35501 の configure.in の修正で変数参照の '$' が抜けていたのを修正。 [ruby-core:44679] [Bug #6370]

nobu:r35504 2012-05-01 06:03:38 +0900

ext/openssl/extconf.rb から ext/openssl/deprecation.rb に OpenSSL の関数チェックの処理を切り出して、拡張ライブラリ digest の extconf.rb からこれを利用して OpenSSL の digest 関数のチェックをするようにリファクタリングしています。 [ruby-core:44755] [Bug #6379]

nobu:r35505 2012-05-01 06:04:16 +0900

digest/sha2/sha2.c のビット演算マクロ REVERSE32 で型の明示的なキャストの追加。また SHAxxx_Final/End でcontext の中身をクリアしているところでサイズの指定が間違っていたのを修正しています。

usa:r35506 2012-05-01 10:56:25 +0900

test/ruby/test_settracefunc.rb でも別の Thread が trace_func を呼んでしまって(どうやらどこかのテストで作った WEBrick のサーバのThreadが動いていた模様)テストに失敗していたのでファイル名でチェックして別の Thread の影響を受けないようにテストを修正しています。

nobu:r35507 2012-05-01 14:18:02 +0900

ext/openssl/deprecation.rb に切り出した OpenSSL の関数チェックでヘッダファイルの存在チェックもするようにしています。 have_func にも同じ have_header と同じヘッダファイルの配列を渡しているので have_func で足りているのではないかと思うのですが何故あらためて have_header も呼んでいるんでしょうか。 "for macro compatibility" とログメッセージにあるので関数と思っているものが関数マクロだった場合を考慮しているのかなと思ったのですが、修正内容との繋りがわかりませんでした。
[追記]twitterで教えていただきました。 HAVE_XXX_H というヘッダ存在チェックした結果のマクロを定義させたい為だったようです。[/追記]

ko1:r35508 2012-05-01 15:37:24 +0900

common.mk のコマンドの前のコマンドの表示を off にする "@" を V=1 などで制御できる $(Q) におきかえて V=1 の指定が効くようにしています。

ko1:r35509 2012-05-01 15:49:00 +0900

r35508 で $(Q)-... とコマンドのエラーを無視する "-" との組合せが nmake で動かなかったらしく -$(Q) と順番を入れ替えています。

nobu:r35510 2012-05-01 15:52:25 +0900

mkmf.rb で生成する Makefile に extconf.h の依存関係に extconf.rb を追加して extconf.rb が更新されていたら extconf.h を削除して再生成を促すようにしています。自動で再生成ではなくて make をエラーにして再実行させるようにメッセージを出すようです。

nobu:r35511 2012-05-01 15:52:28 +0900

拡張ライブラリ digest の extconf.rb で ext/openssl/deprecation.rb を利用したものについて extconf.h の依存関係に ext/openssl/deprecation.rb を追加しています。

nobu:r35512 2012-05-01 16:15:18 +0900

しかし r35510 と r35511 で毎回 extconf.h が削除されてしまったそうで revert しています。

kouji:r35513 2012-05-01 22:21:55 +0900

Readline に補完時の動作をカスタマイズするための pre_input_hook, insert_text, redisplay という GNU Readline の機能のサポートを追加しています。補完処理からこれらのメソッドを使って補完後のコマンドラインの状態を変更することができます。 [ruby-dev:45018] [Feature #5785]