ruby-trunk-changes r44251 - r44266

今日は finalizer の処理内で例外が発生した時に SEGV することがある不具合の修正と Hash#reject の挙動を元に戻す変更がありました。

drbrain:r44251 2013-12-17 05:14:50 +0900

NEWS ファイルの RDoc のバージョンを 4.1.0 に更新しています。後でリリース前に 4.1.0 にし忘れないようにしているみたいです。

svn:r44252 2013-12-17 05:14:57 +0900

version.h の日付更新。

drbrain:r44253 2013-12-17 05:18:29 +0900

RubyGems を最新版に更新しています。 拡張ライブラリのビルド時の挙動を Gem.install_extension_in_lib で変更できるようにしているみたいなのですが、このメソッドは常に true を返すように実装されています。ChangeLog を読むと RubyGems の repackager (Bundler とかのことでしょうか)でこの挙動を変更できるように(互換性を壊すけど)しているみたいです。

tmm1:r44254 2013-12-17 11:03:09 +0900

DTrace 対応の configure でのチェックのために probes.d を作ってチェックしていたところですが、Linuxsystemtap だと probes.d の文法がより厳しくて1行で出力しておくとうまくいかないそうで少し整形した probes.d を作るようにしています。

nobu:r44255 2013-12-17 13:32:51 +0900

configure で cppflags 変数を受け付けて変更できるようにしています。これ今までなかったんですね。

nobu:r44256 2013-12-17 14:29:14 +0900

gc.c の gc_finalize_deferred_register() が引数を受け付けないのを明示的に void を書くようにしています。

nobu:r44257 2013-12-17 14:29:17 +0900

configure.in の --opt-dir オプションを処理しているコードの位置を上のほうに移動しています。 --opt-dir が影響すべきところに効いていなかったのを修正したみたいです。

nobu:r44258 2013-12-17 14:52:03 +0900

configure で DTrace のチェックをしているところで dtrace コマンドを直に書いていたので $DTRACE 変数を利用するように修正しています。

nobu:r44259 2013-12-17 14:52:05 +0900

configure で DTrace のチェックのために probes.d から生成したソースをコンパイルする時にコンパイラオプションに $CPPFLAGS も渡すようにしています。

nobu:r44260 2013-12-17 16:19:25 +0900

finalizer で GC が終わってから後で実行するための処理を登録しておく postponed_job の実行関数 rb_postponed_job_flush() で rb_thread_t::errinfo を保存しておいて、nil でクリアした状態で postponed_job を実行するようにしています。 Sync_m と Queue を finalizer で使うと SEGV することがある不具合があったのを修正しているそうです。より一般的には finalizer の処理内で例外が発生した時に外側の errinfo を上書きしてしまって問題が発生していたそうです。 [ruby-core:58652] [Bug #9168]

knu:r44261 2013-12-17 17:33:01 +0900

misc/ruby-electric.el を 2.1.1 に更新しています。 開きかっこ '{' を挿入したときの処理の修正と、バックスペース(?)で文字を消した時の不具合修正みたいです。

nobu:r44262 2013-12-17 20:01:37 +0900

r44247 の追加修正で、 #if 0 でコメントアウトしていた Hash#reject の警告出力のコードを有効にしています。また警告を出す条件にクラスが Hash ではない(Hash を継承した子クラス)場合も追加しています。

nobu:r44263 2013-12-17 20:15:00 +0900

r44247 の Hash#reject についてのさらに変更で HASH_REJECT_COPY_MISC_ATTRIBUTES を 1 に定義して、元々の dup.reject! の挙動に戻しているようです。 HashWithDifferentAccess の互換性のためにクラスがコピーされる必要があったようです。ただし警告が出るようになっています。仕様変更は matz によって承認されたので次のリリースでは Hash#reject の挙動が変更されることでしょう。けど 2.1 では見送られることになったようです。 [ruby-core:59154] [Bug #9223]

a_matsuda:r44264 2013-12-17 20:18:47 +0900

ext/objspace/object_tracing.c の変数名の typo 修正。

a_matsuda:r44265 2013-12-17 20:20:10 +0900

標準ライブラリ e2mmap.rb のエラーメッセージの typo 修正。 registerd → registered

hsbt:r44266 2013-12-17 20:23:23 +0900

.gitignore に Makefile.old と GNUmakefile.old を追加しています。