ruby-trunk-changes 2019-07-11

今日は Integer()/Float()/Complex()/Rational() などのメソッドや IO#read_nonblock, IO#write_nonblock などで exception キーワード引数に明示的に nil を渡した時の挙動の変更や、文法の flip-flop に deprecated 警告をだすのをやめる変更などがありました。

[12762b76cb] Aaron Patterson 2019-07-10 16:12:28 UTC

6bd49b33c859e3893318b8ceb1f3e0dd0988144f で GC.compact で gc_compact_after_gc() を呼び出す間に GC を抑制するために during_gc 変数を直接代入してましたが rb_gc_disable() および rb_gc_enable() を使うように修正しています。

[d57ce99b7d] git 2019-07-10 18:37:22 UTC

version.h の日付更新

[50d85436f8] Tanaka Akira 2019-07-11 00:18:41 UTC

標準添付ライブラリ webrick で レスポンスが call メソッドを呼ぶ形式(たぶん Proc?)の時に Tempfile を使って一時ファイルに一度書き出してサイズを取得して Content-Length ヘッダにセットするようにしています。コミットログによると HTTP/1.0 に則ったクライアントが WEBrick::HTTPProxyServer に接続してきた時に Content-Length がないと問題になることがあったみたいです。

[26d674fdc7] Nobuyoshi Nakada 2019-07-11 02:58:35 UTC

gc.c の rb_memerror() にて fprintf(3) のフォーマット指示子に PRI_PIDT_PREFIX を使うようにして x64-mingw での警告除去。

[d34303ad10] Tanaka Akira 2019-07-11 04:04:07 UTC

test/webrick/test_httpproxy.rb の未使用の変数除去。

[d77b84ca82] Nobuyoshi Nakada 2019-07-11 05:05:34 UTC

RubyVM.resolve_feature_path という require した時にどのファイルがロードされるかをエミュレートするメソッドを $LOAD_PATH のオブジェクトの特異メソッドとして定義するように移動しています。確かに RubyVM にあるのはちょっと違和感ありましたね。 [ruby-core:92986] [Feature #15903]

[4e038a7e64] Nobuyoshi Nakada 2019-07-11 05:29:35 UTC

r63667 (bae638ad5b782c44c80efe33834cb9039279af46) の flip-flop を deprecated の警告を出力するようにしたのを revert しています。 Matz が RubyKaigi 2019 のキーノートであきらめたって言ってましたね、確か。 [ruby-core:39915] [Feature #5400]

[71ead07872] aycabta 2019-07-11 08:21:00 UTC

標準添付ライブラリ reline の Reline.dig_perfect_match_proc= に渡された引数が Proc オブジェクトじゃなかったら ArgumentError を発生させるようにしています。 call メソッドがなかったら、みたいなのもありかなって気はしますがまあ。

[cd069df365] Nobuyoshi Nakada 2019-07-11 10:45:03 UTC

rubyspec の File::Stat#inspect のテストで expected の構築時に Time を文字列化するのに(暗黙的な) to_s ではなく inspect を使うように変更しています。

[3e7d002118] Nobuyoshi Nakada 2019-07-11 10:20:53 UTC

Integer(), Float(), Complex(), Rational() などの変換系のメソッドの exception キーワード引数や IO#read_nonblock, IO#wite_nonblock の exception キーワード引数は false でなかったら真と扱かってしまってたので、明示的に nil を渡した時に例外が発生してたので、共通して処理する関数 rb_opts_exception_p() を導入して true/false 以外を渡した時に ArgumentError を発生させる挙動にするようにしています。 [ruby-core:93552] [Bug #15987]

[4018eee431] git 2019-07-11 11:14:57 UTC

3e7d002118a92fad5934e11c75be6768a1476c1b のインデントのタブを空白に展開。

[c2723e59c2] Nobuyoshi Nakada 2019-07-11 11:19:53 UTC

3e7d002118a92fad5934e11c75be6768a1476c1b で追加した opts_exception_p() で例外発生時のメッセージに渡す引数の数が間違ってたのを修正しています。 [ruby-core:93552] [Bug #15987]

[f74e23af32] Nobuyoshi Nakada 2019-07-11 11:21:50 UTC

c2723e59c2a66a3d2fc8849b3b25c04c9333230a のさらに再修正。そもそもメッセージに埋め込むオブジェクトを間違えてました。 [ruby-core:93552] [Bug #15987]

[8745fa2ff0] Nobuyoshi Nakada 2019-07-11 12:05:25 UTC

3e7d002118a92fad5934e11c75be6768a1476c1b で拡張ライブラリ bigdecimal では古い ruby 向けにコンパイルした場合に opts_exception_p がなくて代替の関数を定義する場合の実装でそもそもキーワード引数が指定されなかった時の挙動が抜けてたのを修正しています。 [ruby-core:93552] [Bug #15987]