ruby-trunk-changes r33113 - r33124

いくつかのマイナーなプラットフォームでのビルド対応や json のバージョンアップがありました。

mrkn:r33113 2011-08-29 23:24:31 +0900

r33108 で Integer#& は Fixnum か Bignum しか受け付けなくなったので、to_int で整数に変換できれば何でもOKというテストがエラーになっていたのでチェック内容を変更(TypeError が発生することを確認)しています。

kosaki:r33114 2011-08-30 09:13:56 +0900

GNU Hurd (なんて懐しい名前!)でビルドに失敗するので configure.in で gnu* というプラットフォームの設定を追加しています。 [ruby-core:39185] [Bug #5250]

svn:r33115 2011-08-30 09:13:59 +0900

version.h の日付更新。

kosaki:r33117 2011-08-30 09:33:05 +0900

既に CRuby 本体では使われていない rb_thread_select() という API で select(2) が EINTR を返した時に対応していないので、ちゃんと対応している rb_thread_fd_select() に委譲するように変更しています。 [ruby-core:39102] [Bug #5229]

kosaki:r33118 2011-08-30 09:51:46 +0900

r32432 で Fiber のスタックを mmap で確保する時に FreeBSD では MAP_STACK をフラグに追加しないように(FreeBSD では MAP_STACK を追加すると第1引数に NULL ではなくアドレスを指定しないといけないため)してましたが、GNU/kFreeBSD というプラットフォームでも同様なので判定の条件に追加しています。 [ruby-core:39147] [Bug #5241]
GNU/kFreeBSD !? そういうのもあるのか。

kosaki:r33121 2011-08-30 09:59:52 +0900

thread.rb の Queue#pop の実装でキューが空の時に要素の追加を待つThreadを配列に入れるのですが、Thread#wakup で無理矢理待ってるThreadを起こすとその配列に重複して追加されてしまうので、既に追加済みだったらpushしないようにしています。 [ruby-dev:44400] [Bug #5195]

naruse:r33122 2011-08-30 11:23:12 +0900

json の 1.5.4 をマージしています。 一時オブジェクトの からの保護、 quirks_mode オプションの追加。Rational や Complex の対応などです。quirks_mode は、これまで JSON.parse や JSON.generate は Array か Hash しか対応していなくて、いきなり true, false や文字列、数値だけがあるデータを扱えなかったのですが、:quirks_mode => true を指定すると受け付けるようになります。 [ruby-core:38866] [Bug #5173]

naruse:r33124 2011-08-30 14:21:27 +0900

r33122 でマージした json に require "rational" と require "complex" が含まれていたので削除しています。