ruby-trunk-changes r58746 - r58775

今日は CSV#shift の最適化、erb および cgi での URL のエスケープの ~ の対応の変更などがありました。

usa: r58746 2017-05-16 21:15:48 +0900

make のターゲットの test-rubyspec などの xxx-rubyspec を xxx-spec に改名しています。古いターゲット名も別名として残っています。

eregon: r58747 2017-05-16 21:29:30 +0900

rubyspec の TCPSocket.send のテストで接続できない port 番号として一度 TCPServer で port を開いて空いてる番号を取得してたのを常に 0 を返す SocketSpecs.reserved_unused_port を定義してこれを使うようにしています。 send でも 0 でいいんだ。

eregon: r58748 2017-05-16 21:29:44 +0900

rubyspec の spec/rubyspec/library/socket/fixtures/classes.rb でクラス変数のかわりにクラスのインスタンス変数を利用するようにしています。

nobu: r58749 2017-05-16 22:15:12 +0900

r58746 の make のターゲット名の改名にあわせて defs/gmake.mk の xxx-rubyspec のターゲット名を変更しています。

ko1: r58750 2017-05-16 22:22:42 +0900

r58746 で make のターゲット yes-test-rubyspec は消えてしまっていたので復活させています。

usa: r58751 2017-05-16 22:50:51 +0900

make help のコマンド部の二重引用符内にエスケープされた二重引用符を書いてたのが nmake でエラーになるらしくて中の二重引用符を消しています。

nobu: r58752 2017-05-16 22:51:15 +0900

mspec の raise_error などに複数の例外クラスを指定できるように対応しています。

nobu: r58753 2017-05-16 22:51:17 +0900

r58747 でいじってた TCPSocket.send のテストで macOS では Errno::ECONNREFUSED のかわりに Errno::EADDRNOTAVAIL が発生するそうで、両方許容するようにしています。

nobu: r58754 2017-05-16 22:57:18 +0900

r58752 の mspec の raise_error の複数例外対応を revert して、r58753 の rubyspec の変更は raise_error のブロック渡しを利用してチェックするようにしています。

nobu: r58755 2017-05-16 23:53:04 +0900

system や Process.spawn の :chdir オプションのテストで Windows 環境での Dir.pwdエンコーディングUTF-8 じゃない場合を考慮するようにしています。

nobu: r58756 2017-05-17 00:17:39 +0900

ruby のテスト用の test/unit の Test::Unit#after_worker_down から make の jobserver 用の fd への書き込み処理を flush_job_token というメソッドに切り出して _run_parallel で終了時にも呼び出すようにしています。

svn: r58757 2017-05-17 00:17:40 +0900

version.h の日付更新。

usa: r58758 2017-05-17 00:45:25 +0900

rubyspec の win32ole のテストの fixture で require "win32ole" するようにしています。

nobu: r58759 2017-05-17 00:47:44 +0900

make test-all が prog に依存していたのを program に変更して showflags を省略するようにしています。また make test-spec 時にも ruby に依存関係をつけるようにしています。コミットログによると拡張ライブラリなしでテストするというような感じのことが書いてますがそれは変数 TEST_DEPENDS に all,ext を追加する部分をコメントアウトしているからでしょう。

usa: r58760 2017-05-17 01:16:47 +0900

r58758 で spec/rubyspec/library/win32ole/fixtures/classes.rb に追加した require "win32ole" ですが今度は Windows 以外でエラーになるみたいなので revert してかわりに spec/rubyspec/library/win32ole/win32ole/ole_get_methods_spec.rb の platform_is :windows のブロック内で require するようにしています。

normal: r58761 2017-05-17 07:05:39 +0900

test/test_extlibs.rb で fiddle がビルドされていることを確認するテストを削っています。libffi がなくて失敗するのを避けるためだそうです。

nobu: r58762 2017-05-17 08:09:34 +0900

r58759 で defs/gmake.mk の TEST_DEPENDS に all,exts を追加していたのをやめていたのをやめています。やっぱり必要だったようですね。

usa: r58763 2017-05-17 08:15:56 +0900

rubyspec の Windows 環境での Dir.home のテストで環境変数 HOMEDRIVE と HOMEPATH による指定より HOME による指定を優先するようにしています。

normal: r58764 2017-05-17 08:59:01 +0900

r58761 の fiddle のビルドチェックをやめた変更を revert しています。 へー、fiddle は必須なのか。まあ libffi はバンドルされているので、システムにインストールされていなくても作れるはずということもあります。 [ruby-core:81201] [ruby-core:81203]

nobu: r58765 2017-05-17 09:28:01 +0900

Dir.entries が返す文字列の Encoding のテストで Windows で Dir.entries への :encoding オプション引数に Encoding.default_external を渡していたのを filesystem encoding を指定するように変更しています。うーむ、Windows のファイルパスを返すメソッドのエンコーディング周りはむずかしい。

nobu: r58766 2017-05-17 13:44:12 +0900

.gdbinit の nd_tree コマンドで文字列オブジェクトを生成するのに rb_str_new() を使っていたところを rb_str_tmp_new() を利用するようにしています。 get rid of __extension__ とあるけど rb_str_tmp_new() もどちらも str_new() を呼んでるしなぁ。klass が 0 でないと write barrier かなにかの部分で __extension__ を使ったマクロを使うからかな。

nobu: r58767 2017-05-17 13:47:05 +0900

ruby の実行するスクリプトのファイルパスのエンコーディングを locale encoding にしていたのを、必要ならコーディング変換をかけるようにしています。これも Windows 環境でのファイルパスのエンコーディングにまつわる問題の対処かな。

naruse: r58768 2017-05-17 14:38:37 +0900

正規表現エンジンの Onigmo の 6.1.2 をマージしています。 といっても tool/enc-unicode.rb の変更だけみたいですね。テーブルの作成に使う gperf の出力の変更に対応しているようです。 https://github.com/k-takata/Onigmo/commit/1364ae3488cac0acbf2d61ef3ce2b62fe0c0f528

naruse: r58769 2017-05-17 16:13:47 +0900

vm_dump.c の darwin でのシグナルハンドラの trampoline 対応のコードで rip が NULL の時にアクセスしてしまうことがあった不具合を修正しています。 [ruby-core:81160] [Bug #13566]

hsbt: r58770 2017-05-17 16:56:27 +0900

標準添付ライブラリ csvCSV#shift で String#start_with? や String#end_with? を利用したり、連続するクオート文字を毎回 @quote_char * 2 で生成していたのをインスタンス変数に保持しておくようにしたりして一時オブジェクトの生成を抑制するようにする最適化。

ko1: r58771 2017-05-17 18:31:34 +0900

rubyspec の ruby の -S オプションの挙動についてのテストで PATH に含まれているパスに world writable なディレクトリがあると警告が出るためにテストがこけるので、そのような時は skip するようにしています。

k0kubun: r58772 2017-05-17 20:58:09 +0900

標準添付ライブラリ erb で URL としてエスケープする時に "~" はエスケープしないようにしています。そういえば昔は http://example.com/~user みたいなアドレスがよくありましたね。 https://github.com/ruby/ruby/pull/54 [ruby-core:46168] [Bug #6696]
新しくコミッタになった k0kubun さんのコミットです(書き忘れてたけど昨日の r58735 が初コミット)。

k0kubun: r58773 2017-05-17 21:34:59 +0900

r58772 と同様に標準添付ライブラリ cgiCGI.escape でも "~" は置換しないようにしています。

k0kubun: r58774 2017-05-17 22:21:09 +0900

r58772 と r58773 の変更に対応して rubyspec のテストも修正しています。

k0kubun: r58775 2017-05-17 23:11:01 +0900

r58774 の rubyspec の変更は古いバージョンでは逆にこけるので ruby_version_is で分けるようにしています。ruby 本体にマージされたものはそのバージョンのテストができればいいけど、rubyspec は ruby/spec に upstream があるからこういうことをしないといけないのかなぁ。なんかちょっと大変そうですね。