ruby-trunk-changes r50200 - r50218

今日は ObjectSpace.count_imemo_objects メソッドの追加や TracePoint の不具合修正などがありました。

akr: r50200 2015-04-10 02:19:57 +0900

r50198 で追加したテストで名前尽きパイプを作成するのに mknod(1) コマンドを利用していたのを mkfifo(1) に変更しています。 mkfifo のほうが POSIX で定義されているのでポータビリティがあるということらしいです。

usa: r50201 2015-04-10 08:03:35 +0900

r50198 で追加して r50200 で mkfifo(1) を利用するように変更されたテストですが Windows には名前付きパイプがないのでテストメソッドを定義しないようにしています。 また r50200 の ChangeLog エントリの単語間の空白追加もしています。

nobu: r50202 2015-04-10 10:02:55 +0900

r50187 で追加した Addrinfo の Marshal.load でのメモリリークの修正のテストで CI で失敗する環境があるのでしきい値を緩和しています。これ手元(Mavericks, Yosemite)でも失敗していました。

nobu: r50203 2015-04-10 11:44:12 +0900

mkmf.rb で try_cflags にオプションを渡せるようにして、拡張ライブラリ date の extconf.rb で -std=iso9899:1999 を渡すところで :werror を指定して警告をエラーにするようにしています。 また win32/Makefile.sub でも WERRORFLAG に -weD9002 というオプションを追加して未定義のオプションを検出したらエラーにするようにしています。

akr: r50204 2015-04-10 12:12:58 +0900

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

usa: r50205 2015-04-10 13:37:00 +0900

r50203 で win32/Makefile.sub に追加しているオプション -weD9002 を -we9002 に修正しています。

ko1: r50206 2015-04-10 17:29:30 +0900

ブロック内から return でメソッドから抜ける時に TracePoint の :return イベントが発生しない不具合を修正しています。 freme を pop する時にイベント発生の処理を追加しています。 このために vm_exec() から既に存在していた同等の処理を hook_before_rewind() という関数に切り出してこれを利用するようにしています。 [ruby-core:67463] [Bug #10724]

akr: r50207 2015-04-10 18:45:29 +0900

process.c の rb_execarg_parent_start1() でファイルを開く処理で open_func() で実際に開いたかどうかを struct open_struct::entered というフラグで管理していたのをやめて struct open_struct::ret と struct open_struct::errno をみて EINTR で失敗していたら割り込みチェックをするという方法に変更して open(2) が割り込まれていた時にジグナル処理をするように修正しています。

ko1: r50208 2015-04-10 19:13:00 +0900

拡張ライブラリ objspace の共通のメソッド引数処理を setup_hash() という関数に切り出すリファクタリング

akr: r50209 2015-04-10 19:32:38 +0900

test/ruby/test_file_exhaustive.rb に名前つきパイプを使ったテストを追加しています。

akr: r50210 2015-04-10 19:34:47 +0900

test/ruby/test_file_exhaustive.rb に pipe に対する File::Stat#pipe? のテストを追加しています。

ko1: r50211 2015-04-10 19:38:13 +0900

拡張ライブラリ objspace に ObjectSpace.count_imemo_objects というメソッドを追加しています T_IMEMO 型のオブジェクトの種類毎の数を Hash に格納して返してくれるそうです。

ko1: r50212 2015-04-10 19:39:07 +0900

r50211 で追加したテストのデバッグ出力の削り忘れを削除しています。

akr: r50213 2015-04-10 19:52:29 +0900

test/ruby/test_file_exhaustive.rb に UNIX socket の File::Stat#socket? などのテストも追加しています。

akr: r50214 2015-04-10 20:52:29 +0900

test/ruby/test_file_exhaustive.rb で利用する一時ファイル名をできるだけ短くしています。r50213 で UNIX Socket のテストを追加しましたが、sockaddr_un のサイズ制限が厳しい環境(過去のログをみると AIX が 1024 だとありますね)があるので短めにしているようです。

nobu: r50215 2015-04-10 22:29:23 +0900

r50203 および r50205 での mkmf.rb と win32/Makefile.sub での警告をエラーにするコンパイルオプションの設定について再修正。 mkmf.rb の try_cflags では常に :werror を true にするようにして ext/date/extconf.rb で明示的に werror: true を渡すようにしていたのは revert しています。また try_ldflags でも werror: true を渡すようにしています。 win32/Makefile.sub で -weD9002 または -we9002 を渡していたのは、どうも VC のバージョンでオプションが違うらしく、結局 revert してこのオプションは渡さないようにしています。

nobu: r50216 2015-04-10 22:36:59 +0900

r50215 に追加で mkmf.rb の try_cppflags でも werror: true オプションを常に渡すようにしています。

akr: r50217 2015-04-10 23:47:28 +0900

r50214 に追加で test/ruby/test_file_exhaustive.rb で作成する一時ファイルのファイル名をさらに削っています。 pid を埋め込んでましたが不要なので削っています。

nobu: r50218 2015-04-10 23:57:47 +0900

Dir.glob などの処理で OS X で fgetattrlist(2) を利用してファイルシステムの種類を取得して NFC と NFD の正規化方式の差異を吸収する処理で fgetattrlist(2) が OS X の 10.6 から追加されたシステムコールなので、存在しなかったら getattrlist(2) をかわりに利用するようにしています。 10.5 ってだいぶ古いですね。 Leopard か。 [ruby-core:68829] [Bug #11054]