ruby-trunk-changes 2022-09-10

今日は主に YJIT の生成するコードの最適化の変更などがありました。

[848037cadd] Kevin Newton 2022-09-09 15:37:41 UTC

YJIT の Rust 実装で aarch64 アーキテクチャ向けの機械語生成時のオペランドを表す構造体(っていうのかな?)を追加してコード整理するリファクタリングをしているようです。 https://github.com/ruby/ruby/pull/6315

[2a08a39d7d] git 2022-09-09 15:38:09 UTC

version.h の日付更新

[5b5c627d37] Maxime Chevalier-Boisvert 2022-09-09 22:41:19 UTC

YJIT の x86_64 向けの機械語生成の冗長な命令を削る最適化をしているようです。 https://github.com/ruby/ruby/pull/6348

[518301883e] Lars Kanis 2022-09-09 17:32:20 UTC

MinGW でのビルドエラー修正のため cygwin/GNUmakefile.in で $(RBCONFIG) に fake.rb を利用するようにしています。 cross compiling でなくても fake.rb が必要になることがあるんですね。

文字列オブジェクトの coderange が ENC_CODERANGE_BROKEN になっていることを判定するマクロ is_broken_string() があるのに直接比較しているところがあったので is_broken_string() を利用するようにリファクタリングしています。

[d319184390] John Hawthorn 2022-09-05 22:20:08 UTC

YJIT の中間 IR 生成時の不要な分岐命令をなくす最適化。

[5e39b3b844] John Hawthorn 2022-09-09 04:51:39 UTC

同じく YJIT で中間 IR を生成する時に不要な分岐命令を抑制する最適化。

[92b907d12d] Benoit Daloze 2022-09-03 13:47:49 UTC

ruby のテスト用のライブラリ test/unit で Warning[:deprecated] = true をセットして deprecated 警告が常に出力されるようにしています。また環境変数 BACKTRACE_FOR_DEPRECATION_WARNINGS が設定されていたらさらに Warning.warn を再定義してバックトレースを標準エラー出力に出力するようにしています。