ruby-trunk-changes r45246 - r45262

今日は Windows 環境での fsync() の呼び出しタイミングの変更などがありました。

usa: r45246 2014-03-03 00:18:36 +0900

test/ruby/test_backtrace.rb の未使用変数の削除、ブロックパラメータの外の変数名との衝突の解消など警告除去をしています。

svn: r45247 2014-03-03 00:18:41 +0900

version.h の日付更新。

usa: r45254 2014-03-03 02:56:32 +0900

Windows 版で IO#flush や IO#fsync 時の fsync() の呼び出しをしていたのを削除しています。過去にもきいたことはあったと思いますが、Windows 版で多分端末の時に fsync しないといけないことがあったなどの歴史的経緯により fsync() の呼び出しがあったのですが、なくてもなんとかできるんじゃないかって感じで削除しています。これでテストが失敗したりするはずだけどそれは後で直す、とのこと。 [ruby-core:58570] [Bug #9153]

usa: r45255 2014-03-03 03:01:55 +0900

NEWS に r45254 の Windows での fsync の呼び出しについて incompatible changes として追記しています。 ファイルのメタデータ(更新日時など)の変更が遅延されるようになるんですね。

usa: r45256 2014-03-03 03:08:04 +0900

r45254 のうち IO#fsync の時の fsync() 呼び出しも削除してしまっていたのを revert しています。そりゃそうだ。

usa: r45257 2014-03-03 04:21:57 +0900

win32ole のテストスクリプトで未使用の変数を削除する警告除去。

usa: r45258 2014-03-03 04:41:01 +0900

r45254 で消して r45256 で一部 revert した rb_io_fsync() での fsync() 呼び出しですが、 #ifndef _WIN32 で括られていて、Windows 環境では呼ばれていなかった(あー、そういえば rb_io_flush_raw() で呼ばれるからここでは呼ばなくていい、というふうになってたんでしたね。前もきいたことがあったような)ので、#ifndef をはずして常に呼ぶようにしています。

zzak: r45259 2014-03-03 07:18:38 +0900

r45255 の NEWS エントリの英文法を修正しています。

normal: r45260 2014-03-03 07:50:31 +0900

拡張ライブラリ dbm, gdbm, sdbm において関数マクロ GetDBM()、GetDBM2() の定義がただのブロック ({ ... }) になっていたので do { ... } while(0) を使うようにしています。多分 r45239 あたりの README.EXT の変更でこのマクロ定義が例として上がってたので気がついたんですね。よく見てますねー。 [ruby-core:61217]

normal: r45261 2014-03-03 08:24:38 +0900

Global Method Cache が無効にしてコンパイルされる時に Global Method Cache への書き込みが行なわれていたため OPT_GLOBAL_METHOD_CACHE をチェックして不要な処理は行わないようにしています。 通常は Global Method Cache は有効なので普段使っている Ruby には影響しない部分の修正になります。 [ruby-core:61218]

usa: r45262 2014-03-03 13:28:55 +0900

標準添付ライブラリ find の Find.find のテストで r45241 で導入した :ignore_error というオプションのテストが Windows 環境ではうまくいかない(Errno::EACCES を返すようなディレクトリは Windows では作れない)ため skip するようにしています。