ruby-trunk-changes 2024-04-25

今日は主に YJIT の Class#superclass の最適化や reline と irb の最適化などがありました。

[480287d140] Peter Zhu 2024-04-23 19:34:03 UTC

共有ライブラリで GC の実装を上書きする機構のリファクタリング。なんか load_external_gc_func() というマクロを定義して文字列リテラルや関数名に特定の suffix を追加して展開しているようにしていますが、この時点では呼んだあとすぐに #undef しているから展開して書いても良さそうだけど後で分岐を追加する予定なのかな。

[afc7799c32] Kevin Menard 2024-04-24 14:31:35 UTC

YJIT に Class#superclass メソッドの呼び出しを rb_class_superclass() 関数の直接の呼び出しに展開する最適化を追加しています。 https://github.com/ruby/ruby/pull/10613

[e5ca3d072f] Stan Lo 2024-04-24 15:59:39 UTC

irbIRB::HelperMethod::Base というクラスに Singleton を include してインスタンスを1つだけ使いまわすようにしています。

[9bba999be7] Stan Lo 2024-04-24 16:01:14 UTC

e5ca3d072fd1076133dc7c3a9a2e399bbfcee443IRB::HelperMethod::Base の singleton 化を revert しています。

[853c0b1a77] Aaron Patterson 2024-04-20 00:02:21 UTC

vm_eval.c のメソッド探索の gccct_method_search_slowpath() という関数から cc_new() を呼んで struct rb_callcache を生成していたのを vm_search_method_slowpath0() の処理を再利用するようにリファクタリングしています。

[057b69cfdf] Peter Zhu 2024-04-24 15:01:09 UTC

b9109b270d129561f06bc2dcd6feaf5c43e82360 で dln_open() で dlopen(3) のエラー内容を返すための引数を追加した時に関数内の自動変数(スタック)上へのポインタを返すので安全でないメモリ領域を読むようになってたので呼び元からバッファを渡してそこにエラーメッセージを格納させるように修正しています。

[5c32a1503f] Peter Zhu 2024-04-24 15:04:06 UTC

dmydln.c の dln_open() 関数でもエラー時に例外を返すのではなくエラーメッセージを引数に渡されたバッファに書き込んで return するように変更しています。

[cf24a0483e] tomoya ishida 2024-04-24 17:33:36 UTC

標準添付ライブラリ reline の LineEditor の行末へ移動する処理で1文字ずつ文字の幅をカウントしていたのを単に String#bytesize でカーソル位置を取得するように最適化しています。

[58847b7df8] Kevin Newton 2024-04-24 16:26:55 UTC

prism の新しい自動生成するソースファイル lib/prism/inspect_visitor.rb を生成するルールを common.mk に追加しています。

[2cc59c1b31] Aaron Patterson 2024-04-24 17:02:06 UTC

853c0b1a776ba67cd20741f631788d8556c854eb の続きで gccct_method_search_slowpath() の引数に struct rb_callinfo を直接渡してスタックから取得する処理を呼び元に釣り出しています。

[73a7e51535] Aaron Patterson 2024-04-24 17:20:07 UTC

853c0b1a776ba67cd20741f631788d8556c854eb および 2cc59c1b3167da6a554c37cf66b3b95633b6ec9f の続きで gccct_method_search() に括り出した struct rb_callinfo を取得する処理を scope_to_ci() という関数に切り出して他のメソッド探索の関数と共有するようにしています。

[4349c7909f] Stan Lo 2024-04-24 18:32:51 UTC

一度 revert された irbIRB::HelperMethod::Base の singleton 化の再適用。 https://github.com/ruby/irb/pull/931

[214811974b] Peter Zhu 2024-04-23 20:32:45 UTC

ruby_mimalloc() の calloc 版である ruby_mimcalloc() という関数を導入して ruby_mimalloc()+MEMZERO() を使ってたところで利用するようリファクタリングしています。

[d3a7e55542] Kevin Newton 2024-04-24 19:45:23 UTC

common.mk の依存関係の再生成。

[0434dfb76b] Aaron Patterson 2024-04-24 20:39:39 UTC

struct rb_callinfo がスタック上に確保されたものか ObjectSpace の slot に確保され GC で管理されるものかどうかチェックする vm_ci_markable() はもう不要になった(常に markable になった)ので削除しています。

[e8bc8f6024] "dependabot[bot]" 2024-04-25 02:29:00 UTC

GitHub Actions の workflows で利用している dependabot/fetch-metadata アクションのバージョンを更新しています。

[d1813609d0] "dependabot[bot]" 2024-04-25 02:28:55 UTC

GitHub Actions の workflows で利用している actions/checkout アクションのバージョンを更新しています。

[01f6ea1583] "dependabot[bot]" 2024-04-25 02:43:48 UTC

GitHub Actions の独自アクションで利用している actions/checkout アクションのバージョンを更新しています。

[67dd9af17e] Eugene Kenny 2024-04-24 11:10:48 UTC

rubygems の再定義する require で bundled gems や default gems についての警告を出力するための lib/bundled_gems.rb で Bootsnap を利用している時に LOADED_FEATURES に含まれるディレクトリパスが gem 判定の誤検出に繋がってたみたいでそれを削る処理を追加しています。 [ruby-core:117674] [Bug #20450]

[03f8477566] Xi Ruoyao 2024-04-24 05:42:09 UTC

標準添付ライブラリ net/http のテストで拡張ライブラリ openssl が OpenSSL 3.3 系とリンクしている時も 3.2 系と同様にテストの失敗があるみたいなので skip する条件を追加しています。

[64bd8e41df] 卜部昌平 2024-04-25 08:08:39 UTC

parse.y の string_literal_head() の戻り値がポインタ型なのに return false しているところがあったので NULL に修正しています。

[5577f138b4] David Rodríguez 2024-04-22 17:52:30 UTC

bundler の bundle help でサブコマンドの別名でも検索できるようにしているようです。

[2871376510] David Rodriguez 2024-04-12 16:20:57 UTC

bundler で環境変数をすりかえるのに ENV.replace を呼ぶところで Windows かどうかで分岐していたのをやめています。 [Bug #16798] の不具合の対策のためだったみたいですが既に全てのサポートされているバージョンで修正済みなので。

[5d2fb5d76b] David Rodriguez 2024-04-12 16:42:06 UTC

287137651078d540a14dfbe78dd99b277f3ac4d2 と同様に bundler で環境変数を Hash に変換する時に Windows での workaround をしていた分岐を削除しています。