ruby-trunk-changes r35649 - r35666

今日は拡張ライブラリを静的リンクする --with-static-linked-ext の復活などビルド環境の変更がありました。また Psych の不具合修正/機能拡張がありました。

nobu:r35649 2012-05-15 23:54:09 +0900

test/ruby/test_marshal.rb で pipe を開きっぱなしにしていたテストケースがあったのでちゃんと閉じるように IO.pipe のブロックつき呼び出しを使うようにしています。

nobu:r35650 2012-05-15 23:54:12 +0900

test/ruby/test_file.rb のテストケースで Dir.mktmpdir のブロック内でファイルを open しているものがあったのですが Dir.mktmpdir してもカレントディレクトリが変化するわけではないので File.join で一時ディレクトリの下のファイルパスを作って open するようにしています。

nobu:r35651 2012-05-15 23:54:15 +0900

[Bug #6385] で報告された File::Stat#utime と File#mtime の時刻が Windows 環境で一致しないことがあるという現象についてのテストを追加しています。不具合自体は既に修正済みのようです。おそらく r35109 でしょうか。

nobu:r35652 2012-05-15 23:59:50 +0900

Test::Unit で結果のレポートに色をつけるようになった機能に関連して --color オプションを追加して色付きの出力を制御できるようにしています。

tenderlove:r35655 2012-05-16 01:24:31 +0900

Psych による YAMLエンコードのためにツリーを構築するライブラリで reference を利用する時に参照先のオブジェクトが GC されてしまわないようにインスタンス変数に格納するようにしています。全体を把握してないのでここで全部保存する必要があるのか謎です。

svn:r35656 2012-05-16 01:24:34 +0900

version.h の日付更新。

tenderlove:r35657 2012-05-16 01:34:21 +0900

Psych が omap(ordered-map)のタグを解釈して Psych::Omap というオブジェクトとしてロードし、再度 YAML にダンプした時に omap タグの情報が残るようにしています。 [ruby-core:45001] [Bug #6425]

tenderlove:r35658 2012-05-16 05:13:21 +0900

Psych で String を継承したクラスのオブジェクトを dump/load する時の不具合修正をしているようです。

tadf:r35659 2012-05-16 07:03:37 +0900

Date#strftime の GNU 拡張の修飾子に対応しています。

nobu:r35660 2012-05-16 08:36:00 +0900

test/ruby/test_time.rb の大きなテストメソッドを複数のメソッドに分割しています。

usa:r35661 2012-05-16 14:31:27 +0900

r33878 で #ifdef HAVE_FSYNC でくくる関数の範囲を間違えて rb_io_rewind()、io_fillbuf()、rb_io_eof()、rb_io_sync()、rb_io_set_sync() などの関数が fsync() が未定義の環境でごっそり削れてたのを修正しています。

yugui:r35662 2012-05-16 14:39:06 +0900

Google からのパッチです。 [ruby-core:45073]
NaCl (Native Client) への移植、の前段階として configure の --with-static-linked-ext オプションの挙動を復活させています。Ruby の拡張ライブラリをコンパイル時に静的にリンクしてしまうことができてたのですが、最近この機能がうまく動いていなかったのを修正したもののようです。 1.9 では各エンコーディングの実装も共有ライブラリとしてロードされるので、これも静的リンクできるように encinit.c というソースコードを ERB で生成してリンクするようにしています。これに対応して静的リンクしない時も Init_enc() を呼ぶのでダミーの関数が dmyext.c に用意されています。

nobu:r35663 2012-05-16 15:15:56 +0900

configure.in で $(LD) を別の変数 LDSHARED に代入しているところでダブルクオートでなくシングルクオートを利用しています。代入時に展開するのでなくて LDSHARED を展開する時に LD を参照するように、ですかね。
[追記] sh だと $(LD) が `LD` (LD コマンドを実行した出力)になってしまうからだそうでした。[/追記]

usa:r35664 2012-05-16 15:45:00 +0900

exts.mk を生成する ext/extmk.rb のほうで今度はシングルクオートを使わずにダブルクオートを(既にダブルクオートでくくられたRubyの文字列リテラル内なのでエスケープして)出力するようにしています。これは Windows でシングルクオートが解釈されないからだそうです。

yugui:r35665 2012-05-16 15:47:49 +0900

configure.in でクオートの対応関係がおかしくなっていたのを修正。

nobu:r35666 2012-05-16 18:05:59 +0900

shell の test で論理積を -a を使うところ and と書いてあったのを修正しています。