ruby-trunk-changes r39155 - r39171

昨夜 ruby 2.0.0-rc2 がリリースされました。備忘のために書いておくと r39159 で ruby_2_0_0 ブランチが切られ、r39161 で v2_0_0_rc2 タグが打たれました。
また今日は rb_ensure() の不具合修正、Array を継承したクラスの一部のメソッドが Array を返すように挙動を戻す変更、RubyGems の署名検証の修正などがありました。

nobu:r39155 2013-02-08 16:08:32 +0900

test-all 用のユーティリティで子プロセスを生成する assert_separately で、子プロセスの終了ステータスが SIGILL, SIGABRT, SIGBUS, SIGSEGV などで終了していたらエラーにするようにチェックを追加しています。

nobu:r39156 2013-02-08 16:09:48 +0900

rb_ensure() という ensure 節つきの処理を実行するような C の API で例外発生時に ensure 節相当の関数を呼び出す際に rb_thread_t::errinfo を上書きされるとそのままになっていたため、Qnil に戻されて SEGV することがあった不具合を修正しています。 最近弄ったところではないと思いますし、こんな根本的な不具合がまだ残ってたとは……。 [ruby-core:52022] [Bug #7802]

usa:r39157 2013-02-08 19:58:35 +0900

r39004 の Array を継承したクラスのインスタンスの uniq が Array を返すのを、継承したクラスのインスタンスを返すようにした修正ですが、これが Array のインスタンスを返すのは意図的に修正されていたもので、Enumerable のメソッドと同名のメソッドは Enumerable のメソッドが Array を返却することに合わせているらしいです。 とりあえず 2.0.0 では 1.9.3 と同じ挙動をするようにされました。 [Bug #7768]

akr:r39158 2013-02-08 20:28:03 +0900

r37926 の ChangeLog のエントリに記述されていたリビジョン番号の typo を修正しています。
なお ruby trunk changes はどうかなとチェックしてみたら(r37926)、さらにその上流のリビジョン番号群を指していたので、一応 typo の影響は受けてなかったようです。気がついてもいなかったみたいですけど……。

akr:r39160 2013-02-08 21:20:27 +0900

さて、このコミットからは ruby_2_0_0 ブランチが切られた後の変更になります。重要なことなのでメモ。
configure で ATOMIC_CAS() を実装するための gcc の拡張を利用するために -march=i486 を指定するようにしていたのですが、そのせいでコンパイルできない場合に gcc 拡張の利用を off にして -march=i486 の指定を消すようにしています。

akr:r39162 2013-02-08 23:26:13 +0900

r39160 の追加修正で -march=i486 でコンパイルできるかどうかのチェックのために CFLAGS に一時的に追加する処理を追加しています。

akr:r39163 2013-02-08 23:30:10 +0900

r39160, r39162 で ARCH_FLAG の設定を消し忘れていたのを修正。

akr:r39164 2013-02-09 01:27:17 +0900

拡張ライブラリ dl および fiddle のテストで libc, libm のパスを環境毎に指定していたところに MirOS BSD の場合を追加しています。

svn:r39165 2013-02-09 01:27:23 +0900

version.h の日付更新。

drbrain:r39166 2013-02-09 09:24:55 +0900

RubyGems で checksums.yaml.gz というファイルもチェックサムの対象に含めるようにしています。また 1.8 向けの修正の RUBY_VERSION のチェックが間違ってた(1.7 以前のみ対象にするような分岐になっていた)ところを修正しています。

ktsj:r39167 2013-02-09 10:12:30 +0900

BSDL ファイルの copyright 表記の年を 1993-2013 に修正しています。
なおこの修正は ruby_2_0_0 にバックポートされています。

zzak:r39168 2013-02-09 13:14:09 +0900

TracePoint のイベント種類について rdoc コメントに追記し、また set_trace_func のドキュメントにこのメソッドは obsolete で TracePoint が代替であることを追記しています。

kazu:r39169 2013-02-09 16:27:19 +0900

r39156 および r39157 の ChangeLog エントリの typo 修正。

nobu:r39170 2013-02-09 17:38:46 +0900

r39107 から r39109 あたりの multi architecture 対応で追加された configure のオプションの --help での表示が間違っていたのを修正しています。 ruby-trunk-changes もここをみてオプション名を書いてしまっていたので修正しました。 [ruby-core:52041] [Bug #7804]

nobu:r39171 2013-02-09 17:46:02 +0900

configure で ruby_version が空っぽの時(--with-ruby-version で明示的に指定した時にありえる)にライブラリロードパスに重複したエントリが作られてしまうのでエラーにしています。
version.c で ruby_lib_version_string という型を定義しているのですが、これは RUBY_LIB_VERSION が空文字列の時は負のサイズの配列の定義になるのでコンパイルエラーになるのを利用してビルドできないようにしているトリックだそうです。