以下の内容はhttps://ruby-trunk-changes.hatenablog.com/entry/ruby_trunk_changes_20260116より取得しました。


ruby-trunk-changes 2026-01-16

今日は標準添付ライブラリ prism の修正や ZJIT の最適化、Array#map と Array#select が JIT 利用時にだけ Array#<< の再定義の影響を受けていた不具合の修正などがありました。

[11edc286d8] Nobuyoshi Nakada 2026-01-15 11:32:20 UTC

Array#map と Array#select の ruby 実装バージョンで Array#<< メソッドに依存していたので Array#<< の再定義の影響を受けていたので Primitive.cexpr! を利用して C の関数 rb_ary_push() を直接呼び出すようにしています。 Array のイテレータ系メソッドの ruby 実装は JIT が有効な時だけ使っているので JIT 有無で挙動が変わってしまっていたようです。

[065db7cf61] nozomemein 2026-01-09 00:56:11 UTC

ZJIT の中間表現 HIR の命令 ArrayArefFixnum を ArrayAref と改名しています。そしてオペランドの index を Fixnum でなく CInt64 を受け取るように変更しています。

[256c806a1d] nozomemein 2026-01-10 00:13:49 UTC

ZJIT の中間表現 HIR の UnboxFixnum 命令の型推論時にオペランドが定数の場合型(CInt64)だけでなくその値も型情報として保持するようにしています。

[844f072ce1] nozomemein 2026-01-14 06:04:46 UTC

ZJIT で Array#[] に対応する中間表現 HIR の命令 ArrayAref を C の関数を呼んでいたのから直接実装を実行コードで生成するようにインライン化しています。

[ce390f1995] nozomemein 2026-01-14 22:18:31 UTC

ZJIT でおそらく直近の変更で冗長になっていた Fixnum から生の整数への変換を削除しています。

[15939e3c30] Earlopain 2026-01-13 18:35:21 UTC

標準添付ライブラリとしての prism の Prism::Translation::Ripper::Lexer を Ripper を継承したクラスとして定義するようにしています。また ripper を模倣するため? Prism::Translation::Ripper::Lexer::Elem クラスも移植してきています。 irb からの利用のためとのこと。うーんなんか冗長そう。

[c34c7def5a] Earlopain 2026-01-15 20:47:26 UTC

標準添付ライブラリとしての prism の位置情報についての修正。

[6e480e6714] Peter Zhu 2026-01-13 02:20:12 UTC

GC の default 実装で Symbol を GC.compact で移動可能なオブジェクトとして判定するようにしています。

[f7ae32ed3b] Peter Zhu 2026-01-14 22:09:26 UTC

Symbol のうち組み込みの ID を持っているものは GC.compact で移動できないよう pin-down するようにしています。

[5d2fd5088d] Peter Zhu 2026-01-14 22:56:06 UTC

internal/imemo.h 内で STATIC_ASSERT() で同じチェック内容が重複していたのを修正しています。

[81420d6e13] Nobuyoshi Nakada 2026-01-16 02:01:27 UTC

win32/setup.mk の -basic-vars- というターゲットのアクションの一部を -baseruby- と -gmp- という新しいターゲットに分離しています。

[8c39d8d343] Nobuyoshi Nakada 2026-01-16 02:08:53 UTC

win32/setup.mk の -baseruby- ターゲットで BASERUBY 実行前に ./tool に移動するようにしています。

[f7d3f675fe] Nobuyoshi Nakada 2026-01-16 02:12:32 UTC

8c39d8d34313550cb72d491ad2a834c772b44734 の続きで win32/setup.mk の -baseruby- ターゲットで BASERUBY がみつからなかった時のエラーの発生させかたを cmd.exe に対応させるために修正しています。

[a797561e25] Nobuyoshi Nakada 2026-01-16 07:47:34 UTC

.gdbinit や misc/lldb_rb などのデバッガでのカスタムコマンドで T_TYPEDDATA 型オブジェクトのダンプ処理を現状に合わせて修正/強化しています。

[67d4ceb525] Nobuyoshi Nakada 2026-01-16 07:52:32 UTC

RUBY_ABI_VERSION を 1 に上げて構造体 rb_data_type_t の function メンバーに reserved 領域を追加して 7つまで追加の関数ポインタが持てるようにしています。

[16cd9daa39] Nobuyoshi Nakada 2026-01-16 09:27:17 UTC

GitHub Actions で ruby-bench を実行する時に除外するベンチマークに lobsters を再度追加しています。

[f872901bb2] Andrii Furmanets 2026-01-16 10:52:16 UTC

巨大な正規表現のマッチ時に ALLOCA_N() でマシンスタック上に大きな領域を確保しようとしていたのを RB_ALLOCV_N()/RB_ALLOCV_END() を利用してサイズが大きい時はヒープを使うようにしています。

[074a23ab77] Earlopain 2026-01-16 10:52:39 UTC

標準添付ライブラリ prism の ripper 模倣で Ripper.tokenize メソッドを追加しています。




以上の内容はhttps://ruby-trunk-changes.hatenablog.com/entry/ruby_trunk_changes_20260116より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14