ruby-trunk-changes 2019-09-02

今日は Dir.glob に NUL 文字区切りの文字列を渡す仕様の変更や、標準添付ライブラリ net/ftp の Net::FTP#features, Net::FTP#options メソッドの追加、VM の最適化命令 opt_regexpmatch1 の削除などがありました。

[ff7c95dfd9] Nobuyoshi Nakada 2019-09-01 09:10:50 UTC

tool/lib/vcs.rb の VCS::GIT#_get_revisions でタグ指定の取得を行えるようにしています。常に対象ブランチの HEAD まで取得していたのでブランチ名と異なってた時にその名前をそのまま ref として使うようにしています。

[b578c63f83] Nobuyoshi Nakada 2019-09-01 09:15:02 UTC

tool/make-snapshot で Makefile に追加するルールに after-update というターゲットで gems/ サブディレクトリ内の symbolic link を解消しています。がこれって同じファイルに2箇所から link されてたら取りあいになりそう。まあそんなことはありえないんだろうけど。

[d8260bc872] Nobuyoshi Nakada 2019-09-01 10:01:19 UTC

tool/lib/vcs.rb の VCS::GIT#export で git notes の fetch をしておくようにしています。 ChangeLog の生成のために必要なので。

[fd4aad6d41] Nobuyoshi Nakada 2019-09-01 13:16:18 UTC

tool/make-snapshot から VCS::GIT#export でチェックアウトする時にディレクトリを分ける処理をなにやらごにょって、同じソースから別のブランチやタグ毎のパッケージを作れるようにしたのかなぁって感じですが、うーん。

[bd785ca077] Nobuyoshi Nakada 2019-09-01 14:24:05 UTC

なんかありそうだなと思ったけど tool/make-snapshot での package コマンドでメソッド終了時に元のディレクトリに戻る Dir.chdir を追加しています。

[188c2b67c9] Yusuke Endoh 2019-09-01 14:27:44 UTC

3be3948870f6589343c4aecb541e22fae7751b47 で Solaris のテストの skip を戻してたのを再度削っています。今度は drb のテストの teardown も変更しているけどこれで直るようには思えないので環境のほうを修正してもらったようです。

[007d6d15f4] Yusuke Endoh 2019-09-01 14:29:39 UTC

drb のテストでダミーのサーバーを起動する時のタイムアウトに Timeout を使ってたのを環境変数による scale がきくように EnvUtil.timeout を利用するようにしています。

[f82cf05626] Nobuyoshi Nakada 2019-09-01 15:41:45 UTC

さらに tool/make-snapshot の package メソッドの後始末で削除する一時ディレクトリが引数 tmp の指定がある時に不具合があった(たぶん元から)のを修正しています。

[b0d885da76] git 2019-09-01 15:42:54 UTC

version.h の日付更新

[85dc89c907] aycabta 2019-09-01 21:37:25 UTC

標準添付ライブラリ reline の Windows 環境のコンソールからの入力の処理で IME を on/off する code への対応を追加しているようです。

[3fde9ef937] Jeremy Evans 2019-09-01 23:08:42 UTC

キーワード引数の keyword splat (**kwargs) 渡しの呼び出し時の警告処理が method_missing に渡される時に keyword splt だというフラグが落ちてたので伝播させるようにしています。

[ca11a7d74e] Jeremy Evans 2019-09-02 01:54:30 UTC

3fde9ef93781585a675b3e7184ad3a51072fb95f で追加したテストメソッドの名前が send 用のテストと重複していたので改名しています。

[f58db5a6f5] Jeremy Evans 2019-09-02 02:46:19 UTC

3fde9ef93781585a675b3e7184ad3a51072fb95f のリファクタリング。 ci_entry_flag への他のフラグの設定の代入文に混ぜるようにしています。

[63ab7046a1] Kazuhiro NISHIYAMA 2019-09-02 01:02:17 UTC

拡張ライブラリ socket の Socket.udp_server_loop_on とかのテストで利用しないようにするアドレスをフィルタリングするところで macOS においてアドレスに POINTOPOINT って名前がついているものも除外するようにしています。

[1f636e74e6] Nobuyoshi Nakada 2019-09-02 03:15:35 UTC

tool/make-snapshot に touch_all という全ファイルの mtime を指定の時刻に変更するメソッドを追加して checkout 後にこれを実行するようにしています。パッケージ作成のために checkout した直後のビルドだと時計の歪みでうまくいかないことがあるのでちょっと待ちを入れてたのですが、これで mtime をローカルの時計の現在時刻 -10秒に変更できたら待ちをスキップできる、ということのようです。

[ff462bc6c3] Takashi Kokubun 2019-09-02 04:46:29 UTC

正規表現ベンチマークに String#=~ を使ってマッチさせるものを追加しています。

[8ad7fafcdd] "Urabe, Shyouhei" 2018-09-19 01:41:56 UTC

Regexp のマッチに使われる VM の最適化 opt_regexpmatch1 を使った最適化は実際には効果がない(むしろ僅かに遅い)というベンチマーク結果を提示して、opt_regexpmatch1 を削除して、"=~" メソッドの呼び出しを iseq_specialized_instruction() で opt_regexpmatch2 命令に変更するようにする最適化で利用するようにしています。

[ec80d5c4f3] "Urabe, Shyouhei" 2018-09-19 02:46:21 UTC

8ad7fafcddece2096b748178df9a3318cb1ba3ae で不要になった関数 vm_opt_regexpmatch1() を削除しています。

[79e3d6bb9e] "Urabe, Shyouhei" 2018-09-19 07:46:44 UTC

8ad7fafcddece2096b748178df9a3318cb1ba3ae での vm_opt_regexpmatch2() の receiver が String の時のチェックで引数が Regexp かどうかのチェックも追加しています。

[83498854eb] Jeremy Evans 2019-08-08 20:09:17 UTC

Enumerator::Lazy#with_index が返すものを Enumerator::Lazy にしています。ずいぶん長く寝かせられてたチケットだなぁ。あと NEWS への追記も必要ですね。 [ruby-dev:47025] [Bug #7877]

[c69545ae32] Takashi Kokubun 2019-09-02 05:33:29 UTC

8ad7fafcddece2096b748178df9a3318cb1ba3ae で opt_regexpmatch1 命令が削除されたので bootstraptest/test_insns.rb の VM 命令を網羅するためのテストを削ったり opt_regexpmath2 用テストとしてメッセージを修正したりしています。

[6724b1f83d] Jeremy Evans 2019-09-02 05:35:38 UTC

と思ったら 83498854eb5a824f1f83c31fac18c9279f9ee10d の Enumerator::Lazy#with_index が revert されました。 rubyspec が通らなかったからとのことで、たぶんテストと一緒にリトライされるのではないかと思います。 [ruby-dev:47025] [Bug #7877]

[e9b271d1e2] Nobuyoshi Nakada 2019-09-02 05:31:22 UTC

NEWS ファイルの行頭に Redmine のチケットの参照を書くと [...] がマークアップとして解釈されてしまうので先頭に別の文字を入れるように改行位置を調整しています。

[633ae3278e] Shugo Maeda 2019-09-02 05:43:35 UTC

標準添付ライブラリ net/ftp に Net::FTP#features と Net::FTP#options メソッドを追加しています。それぞれ ftp の FEAT, OPTS コマンドの発行に対応しています。 [ruby-core:93406] [Feature #15964]

[6f206b8ec6] Nobuyoshi Nakada 2019-09-02 06:08:53 UTC

Dir.glob(Dir#[]) メソッドで複数のパターンを NUL 文字("\0")で区切って列挙する仕様は削除して、NUL 文字が含まれていたら ArgumentError 発生させるように変更しています。まあ NUL 文字区切りできる仕様なんてほとんど知られてないでしょうからこのほうが安全でしょうね。 https://github.com/ruby/ruby/pull/2419 [ruby-core:86377] [Feature #14643]

[8e38d4c78c] Nobuyoshi Nakada 2019-09-02 07:46:28 UTC

Exception のテストで一時ファイルのテスト対象の ruby スクリプトを書いて load する方法でテストしてたものを assert_separately を使って書くように変更しています。

[8b2e1ca10e] Nobuyoshi Nakada 2019-09-02 07:47:12 UTC

Exception#exception メソッドで例外オブジェクトのコピーを作ったあと exc_initialize() を呼んでたのが、これだとバックトレースの情報が消えるので rb_ivar_set() で直接メッセージの内容だけ書きかえるようにしています。 [ruby-core:91232] [Bug #15558]