ruby-trunk-changes 2021-06-01

今日は主に MJIT の実用的アプリ向けの性能チューニングのためのパラメーター変更や CI でのエラーのデバッグのための変更などがありました。

[3954799071] David Rodríguez 2021-05-27 10:06:23 UTC

tool/sync_default_gems.rb の bundler の同期処理で bundler.gemspec ファイルを書きかえる処理で "extra_rdoc_files" を含んでいる行を読み飛ばすようにしてたのを LICENSE.md にマッチした行を読み飛ばすように変更しています。コミットログをみると遅いからみたいなことが書いてますが、うーん、どういうことだろ?

[ff6f4e631c] Jun Aruga 2021-05-31 14:21:10 UTC

Travis-CI で使うシェルスクリプト tool/ci_functions.sh のコメントの修正。

[c9ab8fe2b1] aycabta 2021-05-31 14:34:17 UTC

標準添付ライブラリ rdoc の不正なファイルリストへの対処のテストは Windows では動かないので omit で省略するようにしています。

[07c05b6fe9] Takashi Kokubun 2021-06-01 04:12:27 UTC

MJIT で ISeq を JIT compile するかどうかの判定に struct rb_iseq_constant_body::iseq_size が 1000 以上だったらコンパイルしないという制限を加えていたのが、実用上は性能向上を抑制してしまっていたみたいなので制限をやめています。

[45651e800b] git 2021-06-01 04:14:56 UTC

version.h の日付更新

[e9e3b65d83] Takashi Kokubun 2021-06-01 04:50:37 UTC

GitHub Actions の MJIT テスト用の workflow で configure 時に cppflags=-DVM_CHECK_MODE オプションを渡すようにしています。

[2209e152c0] Takashi Kokubun 2021-06-01 04:57:56 UTC

tool/ruby_vm/views/_mjit_compile_send.erb で GitHub Actions で発生する SEGV のデバッグのために 1行で書いてるコードを複数行に細かくわけて書いてどこで SEGV しているのか調べられるようにリファクタリングしています。

[028f1887c2] Takashi Kokubun 2021-06-01 05:00:14 UTC

MJIT の JIT compile の結果の cache サイズの指定する --jit-max-cache オプションのデフォルト値を 100 から 10000 に増やしています。これもそのほうが現実的なアプリケーションで性能が出るみたいです。 参考URL: https://k0kubun.medium.com/ruby-3-jit-can-make-rails-faster-756310f235a

[b9019c1ae8] Takashi Kokubun 2021-06-01 05:46:56 UTC

b9019c1ae860ee92a162d5fc2af55c10768980deGitHub Actions の MJIT 用 workflow で configure に cppflags=-DVM_CHECK_MODE を追加してたのを revert しています。

[0d32a18f5b] Takashi Kokubun 2021-06-01 05:56:15 UTC

rb_mjit_header.h のタブを空白に展開する tool/mjit_tabs.rb で vm_sync.h と vm_sync.c を処理除外するファイルに追加しています。

[e1b03b0c2b] Takashi Kokubun 2021-06-01 07:15:51 UTC

e9e3b65d836b5796882b5bf28717e4586366ceec の MJIT 用の GitHub Actions の workflow で configure に cppflags=-DVM_CHECK_MODE を渡すのを再度復活させて、GET_EC() で rb_execution_context_t を取得する時に NULL だったら異常終了するようにしています。デバッグのためと思われます。 https://github.com/ruby/ruby/pull/4543

[1055b37ef5] "S.H" 2021-06-01 07:32:24 UTC

rb_define_class_variable() の内容が rb_cv_set() とまったく同じなのでこれに委譲するようにリファクタリングしています。 https://github.com/ruby/ruby/pull/4492

[a2cf0607b0] "S.H" 2021-06-01 07:34:56 UTC

rb_class_path_cached() という関数も rb_mod_name() と全く同じ内容なのでこれに委譲するようにリファクタリングしています。 https://github.com/ruby/ruby/pull/4485

[45662c54c9] "S.H" 2021-06-01 07:37:24 UTC

internal/string.h から string.c 以外で使われてない rb_str_initialize() の宣言を削除しています。 https://github.com/ruby/ruby/pull/4465

[588446c39c] "S.H" 2021-06-01 07:37:45 UTC

内部では使用されていない rb_ary_ptr_use_start() の宣言を internal/array.h から削除しています。 https://github.com/ruby/ruby/pull/4427

[b70fdf1b55] "S.H" 2021-06-01 16:37:45 UTC

からっぽのコミットですが、コミットログをみると https://github.com/ruby/ruby/pull/4400 をマージしたものみたいで、 これが 1055b37ef56ff786b5dfd407c23dcf585eb86748 でマージされた https://github.com/ruby/ruby/pull/4492 と全く同じ内容なのでマージするために rebase? された時に空のコミットになってしまったみたいです。

[d627b75e01] "S.H" 2021-06-01 16:59:33 UTC

re.c の rb_reg_eqq() と rb_check_regexp_type() という関数が外で使われてないので static 修飾子を追加しています。 https://github.com/ruby/ruby/pull/3153

[c57610dcd5] "S.H" 2021-06-01 08:00:45 UTC

hash.c の rb_hash_reject_bang()、rb_hash_reject()、rb_hash_values_at()、rb_hash_assoc()、rb_hash_rassoc() などのメソッド定義に使っている関数に static 修飾子がついてなかったので追加しています。 https://github.com/ruby/ruby/pull/3138

[6e7e9a80ad] Hiroshi SHIBATA 2021-06-01 10:38:02 UTC

assert_all? という assertion メソッド(ユーティリティ)の定義を tool/lib/test/unit/assertions.rb から tool/lib/test/unit/core_assertions.rb に移動しています。 default gems (csv) から利用するためみたいです。