ruby-trunk-changes r48364 - r48381

今日もダミーサーバを立てるテストのチェック強化や Etc.getlogin の再修正、prelude.c の生成方法の変更などがありました。

nobu: r48364 2014-11-10 23:24:53 +0900

r48360 の追加修正。 拡張ライブラリ etc の Etc.getlogin で環境変数 USER がセットされていた時の文字列変換処理が抜けてたので追加しています。 [ruby-core:66163] [Bug #10493]

akr: r48365 2014-11-10 23:40:00 +0900

net/ftp のテストで立ち上げるダミーサーバのスレッドで例外を rescue して無視していたのをやめています。その結果みつかった sock.read_timeout の NoMethodError 修正のためメソッド呼び出しを削除しています。 oh...

akr: r48366 2014-11-11 00:22:29 +0900

net/imap のテストでも起動するダミーサーバのスレッドでの例外を assert_join_threads を使って検出するようにしています。

svn: r48367 2014-11-11 00:22:42 +0900

version.h の日付更新。

hsbt: r48368 2014-11-11 09:39:00 +0900

r48356 の rdoc の更新で DL が known class に追加されていたのを削除しています。 拡張ライブラリ dl は削除されたので。

ko1: r48369 2014-11-11 10:42:01 +0900

Symbol#== での Symbol の比較を独自の関数で実装していたのを rb_obj_equal を利用するようにしています。関数の内容は全く同じなのですが、rb_obj_equal() は VM の命令の実装である opt_eq_func() で特別扱いされていて、メソッドを検索してみてこの関数が使われる場合はメソッド呼び出しを呼ばずに直接比較されるので、これにより高速化できるということです。 これは omniref といういろんなプロジェクトのソースコードを参照してコメントをつけたりできるサイトでの議論で発覚したとのこと。 https://www.omniref.com/ruby/2.1.4/symbols/Symbol/%3D%3D#line=8361

naruse: r48370 2014-11-11 14:08:59 +0900

RubyGems の Gem::Command::ContentsCommand#files_in_default_gem で spec.files を sort していたのをやめています。 show_files メソッドで表示する時にもソートされているし、ここではソートされていないブランチもあるので互換性のため合わせるとのこと。

naruse: r48371 2014-11-11 15:22:34 +0900

r48370 のテストでデバッグ用のコードが入り込んだままだったのを削除しています。

naruse: r48372 2014-11-11 15:27:34 +0900

template/unicode_norm_gen.tmpl でブロックパラメータで外のローカル変数を遮蔽している警告を除去。

nobu: r48373 2014-11-11 18:09:14 +0900

tool/compile_prelude.rb から prelude.c のテンプレート部分を template/prelude.c.tmpl に抽出して tool/generic_erb.rb でコード生成するようにしています。

nobu: r48374 2014-11-11 18:09:59 +0900

r48373 の続きで common.mk でターゲット preludes の依存関係に prelude.c を追加しています。

nobu: r48375 2014-11-11 18:10:03 +0900

tool/make-snapshot で -exported で既に export 済みのソースツリーからスナップショットを作る時で -patch_file でパッチを当てない場合は途中メッセージを出して待たせているところを待たせないようにしています。あー、これ待たせてるのってタイムスタンプのためなんですね。 export してきたりパッチを当てた場合は mtime が更新されてるので、少し時間を置いてから処理を始めるようにしているんですね。

nobu: r48376 2014-11-11 18:46:32 +0900

r48373 で prelude.c を自動生成するようにしたのを nmake でも動くように再修正しています。いつも nmake では苦労している感じですね。

nobu: r48377 2014-11-11 19:18:13 +0900

r48372 で template/unicode_norm_gen.tmpl の警告除去のための変更で、ブロック引数に &:hex を渡すようにしたのが CentOS 5 のシステムの ruby 1.8.5 だと動かないので、ブロック付きの呼び出しに戻してブロックパラメータ名を変えるように再修正しています。

nobu: r48378 2014-11-11 19:29:00 +0900

r48373 からの prelude.c の生成の変更で Windows 版(つまり nmake 向け)の prelude.c のパスの指定は Makefile.in と win32/Makefile.sub でそれぞれ PRELUDE_C 変数に適切に設定するようにすることで差異を吸収するように再修正しています。 r35135 と同様ということで過去の記事を検索したところ、namke で VPATH がソースディレクトリのファイルを検索してくれないので newline.c や miniprelude.c も同様にしていたようです。

akr: r48379 2014-11-11 22:08:01 +0900

net/http の https proxy のテストでも assert_join_threads を使ってダミーサーバの Thread のエラーをチェックするようにしています。

akr: r48380 2014-11-11 22:33:46 +0900

net/pop のテストでも assert_join_threads を使ってダミーサーバのエラーをチェックするようにしています。

akr: r48381 2014-11-11 22:51:39 +0900

標準添付ライブラリ resolv のテストでも assert_join_threads を使ってダミーサーバのエラーをチェックするようにしています。 ていうか DNS のダミーサーバがテストに書かれてるんですね。