ruby-trunk-changes 2023-04-27

今日は主に VM 命令列の最適化処理で特定の構文をコンパイルするとハングアップする不具合の修正や Marshal.load の freeze キーワード引数の対応の修正などがありました。

[1883dc5bde] Gary Tou 2023-04-26 03:22:10 UTC

defined? の実装 vm_defined() 関数で引数が super の時にメソッド定義の親クラスを辿るところで NULL の可能性を考慮するようにしています。 BasicObject のインスタンスにメソッドを追加してそこで defined?(super) を使うと異常終了する問題があったみたいです。

[5dd46a345a] Gary Tou 2023-04-26 03:22:48 UTC

1883dc5bde27caec44154b7ce1f06b07f95eab3d の修正に対応する BasicObject のメソッド内での defined?(super) のテストを追加しています。

[96a2e27185] Gary Tou 2023-04-26 13:05:30 UTC

1883dc5bde27caec44154b7ce1f06b07f95eab3d の修正の再修正。 VALUE の値を NULL との比較していたのをシンプルに真偽値としてチェックするようにしています。

[78be6696d8] Gary Tou 2023-04-26 13:08:16 UTC

5dd46a345a7f02a55ef26302ae4d52473c433da0 で追加したテストの後始末でメソッドを undef_method するのをメソッドが定義済みの時だけにするよう後置 if を追加。

[6339cb70c3] Jean Boussier 2023-04-26 12:17:27 UTC

Marshal.load のキーワード引数 freeze に true が指定された時に marshal_dump/marshal_load メソッドで処理をカスタマイズしている場合のロードされたオブジェクトも freeze しておくようにしています。 [ruby-core:112304] [Bug #19427]

[fe0b23b42f] Stan Lo 2023-04-26 15:05:59 UTC

標準添付ライブラリ irb の lib/irb/lc/ja/encoding_aliases.rb というファイルを削除して、クラス変数として定義していた Hash オブジェクトを IRB::Locale::LEGACY_ENCODING_ALIAS_MAP という定数に定義するように変更しています。

[3340a24634] Stan Lo 2023-04-26 16:39:14 UTC

irbIRB::Locale のテストをさらに追加しています。

[92466e440d] Stan Lo 2023-04-26 16:52:47 UTC

3340a24634ea505c374b677a3cc9061f4428784e で追加した標準添付ライブラリ irbIRB::Locale#find のテストで結果のチェックを緩めています。

[adaff1fc49] Alan Wu 2023-04-20 13:44:02 UTC

ext/Setup のコメントを外して一部の拡張ライブラリを静的リンクするようにビルドした場合にビルドエラーになっていたようでその修正をしています。よくわかりませんが EXTSTATIC マクロで preprocessor 分岐していたところをやめて常に EXTSTATIC 有効な状態にしているようです。 790cf4b6d0475614afb127b416e87cfa39044d67 で静的にリンクした拡張ライブラリの Module#autoload での対応の修正した時に入った不具合みたいです。 [ruby-core:113195] [Bug #19592]

[12070005d4] Alan Wu 2023-04-17 22:46:49 UTC

GitHub Actions のいろんなコンパイラオプションを試す workflow に ext/Setup で拡張ライブラリ etc を静的リンクするように指定してビルドするテストを追加しています。

[cbfb5fbb25] Takashi Kokubun 2023-04-27 01:06:16 UTC

RJIT の control frame を積む処理でローカル変数のインデックス計算に間違いがあったのを修正しているようです。

[417eb83b48] Takashi Kokubun 2023-04-27 01:19:44 UTC

RJIT の JIT コンパイルを開始するかどうかの呼び出し回数のしきいちのデフォルト値を変更しています。

[dd406c5a91] KJ Tsanaktsidis 2023-04-18 05:47:54 UTC

addr2line.c の DWARF フォーマット対応で DW_FORM_GNU_ref_alt と DW_FORM_GNU_strp_alt というレコードの種類の対応を追加しています。実際に使うことはないけど正しく読み飛ばすためみたいです。

[b0cb54a378] Nobuyoshi Nakada 2023-04-27 03:32:39 UTC

構造体 struct RTypedData の宣言でメンバーに const を追加しています。

[c7bacf84f0] Nobuyoshi Nakada 2023-04-24 13:21:57 UTC

while true && true; end という文を書くと ISeq へのコンパイル時点でハングアップするという不具合を修正しています。 命令列の peephole optimization する処理で無限ループ状態に陥っていたみたいです。 [ruby-core:113308] [Bug #19611]

[a58cae77f7] Stan Lo 2023-04-27 11:07:01 UTC

標準添付ライブラリ irbIRB::MagicFile.open というクラスメソッドを利用していたところを File.open に置換しています。 Encoding の決定のために magic comment を読む処理を含んでいたので利用していたみたいですがヘルプファイルは共に UTF-8 になっているので不要になったとのこと。