ruby-trunk-changes 2022-06-08

今日は String#@+ メソッドの YJIT による最適化の追加などがありました。

[c4bf24ee46] Peter Zhu 2022-06-06 19:41:59 UTC

gc.c の heap_prepare() という関数で free_pages が確保できるまで呼び元でループしていたのを関数内で lazy sweep の完遂、新規の mark & sweep の GC の開始、RGEnGC の major GC の実施、と free_pages が確保できるまでより徹底的な GC を実施し、それでもだめだったら新しい page を要求するという処理を書くようにしています。元の実装がこれと同等だったのかよくわかりませんが、ループするよりこっちのほうが(分岐は多くなるけど)明示的でわかりやすいですね。

[deff9e2699] Daniel Berger 2022-06-06 05:46:01 UTC

rubygems の警告メッセージに "WARN" という文字列を埋め込むのにわざわざ変数に代入して埋め込んでたので直接文字列リテラルに書くようにリファクタリングしています。

[1598c9458a] Noah Gibbs 2022-06-07 15:20:57 UTC

String#@+ メソッド(String の単項演算子 +)の YJIT での特別対応による最適化を追加しています。 https://github.com/ruby/ruby/pull/5982

[bdc6e991f5] git 2022-06-07 15:21:12 UTC

version.h の日付更新

[19c6aaca93] Jean Boussier 2022-06-07 15:18:50 UTC

9125374726fbf68c05ee7585d4a374ffc5efc5db で追加した GVL 確保/解放時のコールバック関数登録の C API で登録したコールバックを thread_sched_to_running_common() 内で呼ぶ位置を関数の先頭に移動して Scheduler が未初期化の時? にフックが呼ばれてなかったのを修正しています。

[bf4684d999] Peter Zhu 2022-06-07 18:15:59 UTC

internal/imemo.h に rb_imemo_new() という関数の prototype 宣言が重複して宣言されてたので1つ削除しています。

[ccfbcc7302] Nobuyoshi Nakada 2022-06-08 02:55:21 UTC

LoadError#path や #path= の定義のための rb_attr() に渡す真偽値を TRUE/FALSE といった定数マクロに変更しています。昨日の dbfb3b1917dbe89816ffeea6046d2743c32bf6b6 で C のソースコードの解析時にこれらマクロに対応するようにしたので rdoc を気にして 0/1 にしていたところをマクロにできた、ということみたいです。

[790825db44] Takashi Kokubun 2022-06-08 04:30:22 UTC

make benchmark で利用する benchmark-driver のバージョンを v0.15.18 に更新して、benchmark/README.md のドキュメントに書かれている usage を更新しています。

[6a6531d3e0] Alexander Ilyin 2022-06-08 08:04:18 UTC

README.md の不具合報告先の URL がリンク切れになっていたので修正しています。