ruby-trunk-changes 2022-08-20

今日は主に Kernel#sprintf や String#% での "%c" 指示子の扱いの変更や Method の同値性チェックの挙動の変更(元に戻す)などがありました。

[4177f60eed] Kaíque Kandy Koga 2022-08-18 17:54:36 UTC

misc/lldb_rb/commands/command_template.py のコメントの typo 修正。

[ce384ef5a9] Nobuyoshi Nakada 2022-08-19 15:16:43 UTC

Kernel#sprintf や String#% のフォーマット指示子 %c でマルチバイト文字を埋め込む時に Encoding の判定を埋め込むほうの文字列のもので判定するように修正しています。 [ruby-core:109428] [Bug #18955]

[1ef49de834] Nobuyoshi Nakada 2022-08-19 16:04:02 UTC

ce384ef5a95b809f248e089c1608e60753dabe45 の続きで Kernel#sprintf や String#% のフォーマット指示子 %c に対応する文字列に複数の文字を含む文字列を渡しても例外にしないようにしています。 [ruby-core:109428] [Bug #18955]

[745de85a7e] git 2022-08-19 18:57:35 UTC

version.h の日付更新

[8f4a53d051] Takashi Kokubun 2022-08-19 21:45:51 UTC

fc4acf8cae82e5196186d3278d831f2438479d91 のインデント修正を git blame に無視させるために .git-blame-ignore-revs に追記しています。

[d2483393cb] Nobuyoshi Nakada 2022-08-19 16:43:04 UTC

Kernel#sprintf や String#% でフォーマット指示子 %c に対応する引数に負の整数を渡した時にオーバーフローした整数として扱ったメッセージを出してしまっていたので "invalid character" として ArgumentError 例外を発生させるようにしています。 [ruby-core:109429] [Bug #18956]

[43e8d9a050] Nobuyoshi Nakada 2022-08-19 14:39:52 UTC

string.c の rb_must_asciicompat() という ASCII 互換の Encoding をもつ文字列であることをチェックする関数で rb_enc_get() でそもそも Encoding が取れないという場合の例外発生を追加しています。そもそも String や Symbol じゃなかった時ということかな。

[1a2f99275b] Nobuyoshi Nakada 2022-08-19 14:53:33 UTC

Kernel#sprintf や String#% でフォーマット文字列が ASCII 非互換な Encoding の文字列だと例外を発生させるようにしています。あれ、これだめなのか。チケットをみると元々 UTF-16 などではちゃんと動いてなかったみたいですね。そうなのか。 [ruby-core:109431] [Bug #18958]

[6f3857f6a7] Jeremy Evans 2021-06-18 23:05:15 UTC

Encoding::Converter.new の newline キーワード引数および File.open の newline キーワード引数に :lf と :lf_newline という Symbol を受付けるように(というか無視されないように)しています。 [ruby-core:75767] [Bug #12436]

[01e8d393bc] nick evans 2022-04-03 13:54:18 UTC

.gdbinit の rp_class と rb_ps_vm コマンドを実装にあわせて修正しています。そういえば最近は lldb のほうが主にメンテされてて gdb のほうはあんまり変更がなかったような気がしますね。

object.c の rb_class_new_instance() という C API を rb_class_new_instance_kw() に委譲するように書き変えています。内容が完全に同じみたいですね。

[485019c2bd] Takashi Kokubun 2022-08-20 06:57:17 UTC

MJIT に関連した関数名や変数名などを mjit_exec() → jit_exec() のように m を削るよう改名しています。また mjit_exec_slowpath() は mjit_check_iseq() と改名しています。 https://github.com/ruby/ruby/pull/6262

[b32a3f1275] Nobuyoshi Nakada 2022-08-20 07:25:30 UTC

C API rb_econv_append() のための拡張ライブラリを利用したテストを追加しています。

[8212aab81a] Jeremy Evans 2021-12-27 17:39:15 UTC

method entry を検索する mnew_internal() で VM_METHOD_TYPE_ZSUPER タイプの method entry をスキップする処理を削除しています。そのかわり ZSUPER を無視したい場合用に zsuper_ref_method_def() という関数を新設して一部ではこちらを使うようにしています。 ff42e2359bdbf37e1721a82b4cfd95b31f494f3f で Method/UnboundMethod の private?/protected?/public? メソッドを削除してたのとも関係ありそうですが owner メソッドが誤った Class/Module を返すのを修正するものみたいです。 [ruby-core:106828] [Bug #18435] [ruby-core:108235] [Bug #18729]

[209631a45f] Benoit Daloze 2022-08-15 14:01:33 UTC

Method#== による同値性チェックが継承したメソッドの可視性のみ変更している時の method entry を別のものと判定するようになっていたのを同一視するように ZSUPER をスキップした method entry に解決してから比較するようにしています。 [ruby-core:106828] [Bug #18435] [ruby-core:108235] [Bug #18729] [ruby-core:108378] [Bug #18751]