今日は Ractor の削除したメソッドの一時的復活や Object Shapes の最適化のための内部実装の変更、ZJIT の対応命令追加などがありました。
[34b407a4a8] Peter Zhu 2025-06-02 19:02:59 UTC
prism の RubyVM::InstructionSequence.new でのエラー時のメモリリークの修正。 [ruby-core:122382] [Bug #21394]
[5f247416b6] harasho 2025-05-29 05:05:28 UTC
prism の prism/config.yml 更新。
[ea8b53a539] Peter Zhu 2025-06-02 20:31:28 UTC
RUBY_ABI_VERSION マクロの値をインクリメントしています。そして GC の実装で rb_gc_impl_writebarrier() に即値(SPECIAL_CONST_P() が真の VALUE)を渡しても無視するように分岐を追加して呼び元での分岐をなくしています。
[e27404af9e] Jean Boussier 2025-06-03 07:26:15 UTC
Object Shapes で rb_shape_t を示す shape_id_t 型をアーキテクチャによらず 32bits の整数にしています。shape_id は attr_index_t 内に埋め込む都合から数値としての上限は 16 bits で表現できる範囲なので無駄に大きな型を使わないようにしているようです。 https://github.com/ruby/ruby/pull/13341 / [Feature #21353]
[7a40f1f06c] Peter Zhu 2025-06-03 15:23:25 UTC
Ractor の解放時のメモリリークの修正。
[89d49433a9] Peter Zhu 2025-06-03 15:33:03 UTC
Ractor の開放時の関連する Ractor::Ports の解放漏れの修正。
[553753cd3e] Jean Boussier 2025-06-03 08:31:58 UTC
non-blocking Fiber 用の Scheduler のフックメソッドに fiber_interrupt が追加されて未定義だとエラーが出るようになったので、テストで使っている Scheduler にもメソッド定義するようにしています。中身は空ですが。
[0ecb689617] Nobuyoshi Nakada 2025-06-04 02:38:45 UTC
構造体 rb_callcache_t や struct iseq_inline_iv_cache_entry のメンバーでビット列の埋め込みの表現を upper/lower から former/latter と変更しています。エンディアンによらない表現ということかな。
[a84f734343] Hiroshi SHIBATA 2025-06-04 03:47:09 UTC
lib/cgi/util.rb の require された時の警告メッセージに CGI.parse 利用時には cgi.gem を使うようにサジェストする文言を追加しています。
[50400f3bb2] Hiroshi SHIBATA 2025-06-04 04:53:00 UTC
拡張ライブラリ etc の Ractor 対応テストで古い ruby 向けに Ractor#join メソッドの alias を定義する対応を revert しています。
[04b26db5ef] Hiroshi SHIBATA 2025-06-04 05:07:26 UTC
tool/lib/core_assertions.rb の assert_ractor に Ractor の同期機構が 3.5(master) の変更前の古い物だったら alias 定義するスクリプト片を子プロセス起動時に差し込むようにしています。
[803526786a] Hiroshi SHIBATA 2025-06-04 05:10:31 UTC
標準添付ライブラリ time の Ractor 対応テストで古い ruby 向けに Ractor#join メソッドの alias を定義する対応を revert しています。
[ac1dfee44a] Hiroshi SHIBATA 2025-06-04 05:24:43 UTC
拡張ライブラリ date の Ractor 対応テストで古い ruby 向けに Ractor#join メソッドの alias を定義する対応を revert しています。
[a88ff32559] Hiroshi SHIBATA 2025-06-04 05:33:00 UTC
標準添付ライブラリ etc の Ractor 対応テストで古い ruby 向けに Ractor#join メソッドの alias を定義する対応を revert しています。
[6b7e3395a4] Hiroshi SHIBATA 2025-06-04 05:36:22 UTC
拡張ライブラリ psych の Ractor 対応テストで古い ruby 向けに Ractor#join メソッドの alias を定義する対応を revert しています。
[625d6a9cbb] Jean Boussier 2025-05-27 13:53:45 UTC
Object Shapes の shape が freeze されているかどうかを type メンバーで持たせてたのを shape_id_t のビットに埋め込んで構造体をみなくても判定できるようにしています。
[bbd5a5a81d] Jean Boussier 2025-05-28 07:34:37 UTC
625d6a9cbb0ed617b28115e4e3cb063e52481635 の続きで Object Shapes で shape_id_t に埋め込むようにした frozen のフラグを落としてアクセスするためのマクロ RBASIC_SHAPE_ID_FOR_READ() を追加してインスタンス変数などの参照時にこれを利用するようにしています。
[6b8dcb7c8f] Jean Boussier 2025-06-03 20:11:10 UTC
Object Shapes の GC の mark 処理でバッファのオフセットを最後1つ突き抜けて mark していた不具合を修正しています。
[1f4913db97] Hiroshi SHIBATA 2025-06-04 05:29:53 UTC
標準添付ライブラリ did_you_mean の Ractor 対応テストで古い ruby 向けに Ractor#join メソッドの alias を定義する対応を revert しています。
[206110a2a8] Jean Boussier 2025-06-03 13:52:29 UTC
インスタンス変数が定義済みか確認する rb_ivar_defined() 関数で T_CLASS/T_MODULE 型オブジェクトの時は Ractor 向けに? VM 全体のロック取得するようにしています。
[47f55b4b44] Nobuyoshi Nakada 2025-06-04 03:54:39 UTC
rubyspec の C API テスト用の拡張ライブラリで UNREACHABLE_RETURN() マクロを使って到達しないことを明示するようにしています。コンパイラの警告除去のため。
[c5f7d274d7] Nobuyoshi Nakada 2025-06-04 04:35:39 UTC
configure でコンパイラが GCC の時に 64 bits 整数の atomic な操作の組み込み関数をサポートしているかを別途チェックするようにしています。
[7ddc5e6187] Nobuyoshi Nakada 2025-06-04 04:49:16 UTC
compile.c の iseq_set_local_table() で ALLOC_N() マクロの警告抑制のために ASSUME() マクロを使ってコンパイラに前提を伝えるようにしています。
[9fddb8d954] Nobuyoshi Nakada 2025-06-04 04:50:53 UTC
thread.c の rb_gc_set_stack_end() で警告抑制のため局所的に -Wdangling-pointer を無効化する #pragma 利用する preprocessor 条件を __has_warning() を使ってたのを __GNUC__ をチェックするようにしています。 __has_warning() は GCC では使えなかったとのこと。
[8070d5d97d] Koichi Sasada 2025-06-04 09:17:13 UTC
Ractor#take の削除の影響が大きかったので組み込みでも Ractor#take を Ractor#value の alias として定義して残すようにしています。2025年8月いっぱいまで残してまた消す予定とのこと。
[6f0f84e5dd] Alan Wu 2025-05-28 21:40:54 UTC
ZJIT で VM 命令 opt_aref_with の対応を実装しています。
[8d14d6ea2d] Alan Wu 2025-05-29 16:35:46 UTC
ZJIT でメソッド呼び出しの receiver と引数の VALUE をマシンスタック上に? 置いて VM スタックを使わないような最適化? をしているようです。
[caa6ba1a46] Yusuke Endoh 2025-06-04 07:44:28 UTC
debugger などの実装のために提供されているバックトレース取得用の C API で rb_debug_inspector_backtrace_locations() が返すバックトレース情報が rescue/ensure のブロックに対応するフレームが除外されていたので、詳細情報を得るためのバックトレースのインデックスを正しく計算できない状態だったので削る前のバックトレース商法を返すようにしているそうです。
[8d49c05c13] Yusuke Endoh 2025-06-04 08:26:06 UTC
gems/bundled_gems の debug のテストに使う commit hash の指定を追記しています。
[675f33508c] Jean Boussier 2025-06-04 07:05:55 UTC
Object Shapes の TOO_COMPELX の状態を構造体の type メンバーで持たせていたのを frozen と同じく shape_id_t 内にビットフラグとして埋め込むようにして、構造体を得なくても id だけで判定できるようにしています。
[a87b089349] Stan Lo 2025-06-04 11:14:44 UTC
ZJIT の Rust 実装内のテストで ruby スクリプト片として Array#size を使うべきとろこ #length を呼んでいたのを修正しています。
[a4dc778a5e] Naoto Ono 2025-06-04 11:59:40 UTC
GitHub Actions の launchable と通信ができなかったり重くて時間がかかる時にすぐあきらめるように環境変数 LAUNCHABLE_COMMIT_TIMEOUT を設定しておくようにしています。 https://github.com/ruby/ruby/pull/13513