ruby-trunk-changes 2020-06-17

今日は標準添付ライブラリ shellwords の例外メッセージの修正や、Struct のメソッドの実装に invokebuiltin 命令を使うようにする変更(のリトライ)などがありました。

[68e4310344] Akinori MUSHA 2020-06-16 14:15:51 UTC

標準添付ライブラリ shellwords の rdoc 用コメント内のサンプルで cat コマンドを起動する時のコマンドラインにファイル名との間に "--" を入れるようにしています。オプションが終了したことを明示するための記法だと思います。また同じくサンプルで grep を起動してるところでパターンをオプション -e を使って指定するようにしています。Shellwords.escape しても外部からの入力をコマンドに渡すのは安全ではないよということも追記しています。そりゃそうだ。

[b877928ca5] Akinori MUSHA 2020-06-16 14:23:13 UTC

標準添付ライブラリ shellwords の Shellwords.split の rdoc 用コメントのサンプルで発生する ArgumentError のメッセージを修正しています。

[eaf76be087] "S.H" 2020-06-16 17:13:54 UTC

numeric.c の rb_int_odd_p() および int_even_p() で引き数が T_FIXNUM でない時は T_BIGNUM のはずということで else if の条件部を削ってかわりに assert() でチェックするようにして、どっちでもなかった時の rb_funcall() で "%" メソッド呼び出しに fallback するパスを消しています。ふーむ。 `Integer.instance_method(:odd?).bind(foo).call` みたいなので落とせないかなと思ったけど foo が Integer を継承したクラスのインスタンスじゃないといけないので普通だと T_FIXNUM/T_BIGNUM 以外のタイプのオブジェクトは作れなさそう。 https://github.com/ruby/ruby/pull/3220

[b50e74b4f8] git 2020-06-16 17:14:20 UTC

version.h の日付更新

[4dba8b4027] Alan Wu 2020-06-16 21:45:45 UTC

Moduel を include した時に作られる IClass を作成する rb_include_class_new() で引き数の module は T_ICLASS ではないはずということで、分岐してたところを RUBY_ASSERT() によるチェックに変更しています。

[b06d7c5521] Koichi Sasada 2020-06-16 22:18:35 UTC

iseq.c の rb_iseq_new_with_callback() で RubyVM::InstructionSequence.translate というメソッドが定義されてたらそれを通して ISeq の書き換えに対応するための iseq_translate() を通してから返してましたが、rb_iseq_new_with_callback() という関数ではこれは不要として削ってます。

[ccb7a4b9f2] Nobuyoshi Nakada 2020-06-15 01:00:12 UTC

318d52e820c9ed1bc4c12aa97af49a89953649bc で revert した 19cabe8b09d92d033c244f32ff622b8e513375f1 の Struct のメソッド実装に invokebuiltin を使うようにした変更のリトライ。内容は全く同じみたいですね。

[af6e63a9df] 卜部昌平 2020-06-17 00:58:35 UTC

proc.c の rb_method_name_error() で T_MODULE/T_CLASS の時の s への代入がその後 goto で移動した先ですぐ再代入されるので無意味だったので削っています。

[7325bed2b4] Kazuhiro NISHIYAMA 2020-06-17 03:08:34 UTC

標準添付ライブラリ webrickWEBrick::HTTPServer のテストでエラー時に Encoding.find("filesystem") の値をエラーメッセージに埋め込むようにしています。 e698bf1a7f06452c9509f33e865cc9797dde15b9 の修正時に追加したテストがうまくいなかったみたいで CI でのデバッグのため。