ruby-trunk-changes r30674 - r30710

今日は kosaki さん無双で、configure のミスやテストの修正がたくさん行なわれてます。お疲れさまです。そんななか、r30679 がキラリと光っています。

nobu:r30674 2011-01-27 23:14:24 +0900

misc/ruby-mode.el で emacsキーバインド C-c C-c (コメントアウト)を削除しています。かわりに M-; を使うそうです。

nobu:r30679 2011-01-27 23:30:00 +0900

st.c で実装されている struct st_table は RArray や RString と同様に、要素数が少ない時は配列の中にキーと値を埋め込んで、数が増えるとヒープから領域を取って格納するようになっています。st_foreach() は struct st_table の要素を巡回している途中に要素の追加があって rehash が発生した場合にこの埋め込みの状態からヒープ利用した状態に遷移したらちゃんと動かないようになっていました。この修正は埋め込みから展開された状態になったらそれに追随するようにしています。
[追記]st_table で埋め込み方式が使えるのは numhash の時だけだったので Hash で使う時には関係なかったようです。コメント欄参照[/追記]
多分 [ruby-dev:43111] のスレッドの関係で修正したのでしょうけど、こっそり直してるなんて人が悪い^H^H^H奥床しいですね。
なお Hash#[]= 等でしているチェックは殺されていないので Hash#each 中に要素追加できないという仕様は変化していません。実装上の障害を取り除いたという感じですね。
[追記]というわけで直接は関係なかったようです。[/追記]

kosaki:r30680 2011-01-28 01:33:23 +0900

test/ruby/test_process.rb でひとつのテストケースに入っていた 2つの assert をテストケース分離しています。

svn:r30681 2011-01-28 01:33:24 +0900

version.h の日付更新。

kosaki:r30682 2011-01-28 01:36:21 +0900

Process.spawn に長い文字列を渡してみるテストで、文字列の長さを少なめにしています。

kosaki:r30683 2011-01-28 02:36:32 +0900

Hash#fetch の処理でコンパイラの最適化によって一時オブジェクトが GC されてしまう潜在的な不具合を修正しています。

kosaki:r30684 2011-01-28 02:37:30 +0900

Regexp で例外発生時の処理で一時オブジェクトが GC されてしまう潜在的な不具合を修正しています。

kosaki:r30685 2011-01-28 11:00:08 +0900

configure で mode_t 型のチェックを追加し、Process.spawn の :umask オプションの Integer を扱う型に変換するところを NUM2LONG から NUM2MODET を利用するように修正しています。環境によって(64bit 環境?)バイト幅が違ってしまうのかも。
[追記]64bit環境で clang でビルドするとコンパイルエラーになったのだそうです。[/追記]

kosaki:r30686 2011-01-28 11:23:58 +0900

IO.open() などで指定する mode の引数の変換も NUM2MODET() を使うように修正しています。

usa:r30697 2011-01-28 11:48:46 +0900

Process.spawn に長い文字列を渡した時のテストで、Errno::E2BIG 例外発生することもあったのでそれも assert_raise の条件に追加しています。assert_raise は複数の例外の候補を受け取れるのかー、メモメモ。

kosaki:r30698 2011-01-28 11:57:21 +0900

configure がチェックに使用する関数名など(rbcv_conftest_func) に重複があってエラーになっていたそうなので修正。どんな現象が発生していたのかは未確認です。

kosaki:r30699 2011-01-28 12:07:23 +0900

configure で struct stat の型の情報をチェックするためのソースに #include を含めるように修正しています。

kosaki:r30700 2011-01-28 12:12:32 +0900

さっきのは struct stat の st_size メンバについてのチェックだったので、struct stat の st_blocks メンバのチェックも他にあったのでそちらにも #include を含める修正を追加。

kosaki:r30701 2011-01-28 13:05:23 +0900

configure で --with-valgrind の指定がない時にデフォルトで on になるように修正しているそうです。

kosaki:r30702 2011-01-28 16:06:48 +0900

test/ruby/test_require.rb のひとつのテストケースにまとめってた assert を分割しています。

kosaki:r30703 2011-01-28 16:13:49 +0900

test_require.rb の不要になったローカル変数を削除しています。

kosaki:r30704 2011-01-28 16:21:38 +0900

r30660 の変更でファイルパスに長い文字列を渡した時のメッセージが rb_warning() を使うようになったためオプションに -w をつけないと出力されないのでテストに失敗していたので、オプションを付加してテストのほうを修正しています。[Bug #4336] [ruby-dev:43134]

kosaki:r30705 2011-01-28 16:31:44 +0900

これも同じくメッセージが -w をつけた時だけ出力されるようになったのにテストケースのほうで対応しています。[Bug #4336] [ruby-dev:43134]

kosaki:r30706 2011-01-28 17:36:46 +0900

gdbm のテストに gdbm のバージョンが 1.8.x だと失敗するものがあるのでスキップするようにしています。
しかし "1.8.0 では失敗します" とメッセージまで書いておいて skip していなかったというのもなかなか豪気なテストですね。

kosaki:r30707 2011-01-28 17:50:18 +0900

gdbm が 1.8 で open 時のデフォルトの flags に O_CREAT を含めるかどうかの挙動が変化している(?)のでテストケースもバージョンによって分岐するようにしています。

akr:r30708 2011-01-28 21:49:53 +0900

ext/zlib/zlib.c の関数マクロの引数にかっこをつける修正です。

kosaki:r30709 2011-01-28 21:58:15 +0900

拡張ライブラリ dbm で利用できるライブラリのチェック時の候補になるヘッダファイルに Fedora 13 でのヘッダファイルを追加しているそうです。

kosaki:r30710 2011-01-28 23:23:04 +0900

r30707 で 1.8.0 以降とそれ以前で分けたテストですが 1.8.0 だけが異常で 1.8.x(x!=0) は動くらしいのでそのように条件を再修正しています。