ruby-trunk-changes r50219 - r50237

今日は拡張ライブラリ json の bundled gem 化がありました。今後は Bundler を使う場合は Gemfile に gem "json" と明記しないといけないんですね。

normal: r50219 2015-04-11 06:05:29 +0900

標準添付ライブラリ net の net/protocol.rb で read_nonblock に exception: false を渡して例外ではなく戻り値で読み込みできないことを検出するようにしています。 コメントによると EOFError の発生率を減らす修正と IO.select のかわりに io/wait を使って入力待ちをする変更も予定されているとのこと。 [ruby-core:68787] [Feature #11044]

svn: r50220 2015-04-11 06:05:48 +0900

version.h の日付更新。

hsbt: r50221 2015-04-11 08:22:28 +0900

標準添付ライブラリ rdoc の重複した require "json" を削除しています。

nobu: r50222 2015-04-11 09:48:37 +0900

README.md および README.ja.md で意図せず改行されてしまって markup がおかしくなっているところを修正しています。

nobu: r50223 2015-04-11 11:00:02 +0900

mkmf.rb に cppflags, cflags, ldflags にそれぞれ try_xxxflags して利用可能だったら対応する変数にオプションを追加する append_cppflags, append_cflags, append_ldflags メソッドを追加しています。

nobu: r50224 2015-04-11 11:01:57 +0900

r50223 の syntax error を修正。

akr: r50225 2015-04-11 14:04:17 +0900

test/ruby/test_file_exhaustive.rb に File::Stat のキャラクタデバイスでのテストを追加しています。

akr: r50226 2015-04-11 15:57:37 +0900

test/ruby/test_file_exhaustive.rb で一時ファイルや名前つきパイプ、UNIXソケットなどを setup で常に作成するのではなく必要に応じて作成するように修正しています。

akr: r50227 2015-04-11 16:06:34 +0900

r50226 の変更で regular_file の呼び出し位置を移動しています。 hardlinkfile でも regular_file が呼ばれているので動作は変わらないけどファイル作成のタイミングがよりはっきりするようにしているとのこと。

akr: r50228 2015-04-11 16:22:53 +0900

r50227 と同様に test/ruby/test_file_exhaustive.rb で hardlinkfile の呼び出し位置の修正など。

akr: r50229 2015-04-11 16:34:06 +0900

さらに test/ruby/test_file_exhaustive.rb の余分なかっこの除去。

akr: r50230 2015-04-11 18:00:39 +0900

test/ruby/test_process.rb で signal の送出までの sleep を少し延ばしています。

hsbt: r50231 2015-04-11 20:14:36 +0900

拡張ライブラリ json を標準添付から外して bundled gem としています。 おおー、今後は明示的に Gemfile に書かないといけなくなるんですかね。 [ruby-core:68839] [Feature #11057] https://github.com/ruby/ruby/pull/867

usa: r50232 2015-04-11 21:03:31 +0900

r50226 で UNIX ソケットを利用したテストのプラットームによる分岐が消えてたので復活させています。

nobu: r50233 2015-04-11 22:49:02 +0900

mkmf.rb の xsystem でエラーの検出をログが出てることではなく終了ステータスをみて判定するようにしています。 VC で cl.exe が常に入力ファイル名を出力するので誤判定するからとのこと。でも $?.success? and File.zero?(log.path) と and 判定になってるから、逆に出力がないのにエラーになることがあるからそれを検出できるようにしているのかな。

hsbt: r50234 2015-04-11 23:26:44 +0900

tool/rbinstall.rb で bundled gem のインストール時に拡張ライブラリを含む gem (json ですね)のために環境変数 DESTDIR を設定するようにしています。

hsbt: r50235 2015-04-11 23:32:17 +0900

r50231 で削除した json の空ディレクトリが残っていたのを削除しています。

akr: r50236 2015-04-11 23:34:26 +0900

Kernel#test メソッド(test(1) と同等のメソッドが実はあるのです)で "=", "<", ">" などのコマンドで mtime の比較をする時に秒の精度までしか比較していなかったのを nsec の精度まで考慮するようにしています。

hsbt: r50237 2015-04-11 23:48:34 +0900

template/fake.rb.in で baseruby を環境変数 ruby からとって来る謎の eval の結果で上書きしていたのをやめています。 json のインストールのための対応だそうです。 上で baseruby="@BASERUBY@" しているから再代入自体は不要なんじゃないですかね。というかこの謎 eval は何をしているんだろう…。