ruby-trunk-changes 2023-03-19

今日は主に freeze したオブジェクトが Variable Width Allocation の slot サイズが変化した時に freeze 状態が消える不具合の修正やヒアドキュメントのインデントの処理の修正、RJIT の対応 VM 命令追加や最適化などがありました。

[cb22d78354] Peter Zhu 2023-03-17 14:12:37 UTC

freeze したオブジェクトが Variable Width Allocation による slot サイズの変化したうえで別の slot サイズの heap への移動をした場合に freeze 状態が保存されていないという不具合を修正しています。 移動時のフラグの問題じゃなくて Object Shapes の情報を探索する時の不具合だったみたいですね。 [ruby-core:112930] [Bug #19536]

[e8e7ff1333] tomoya ishida 2023-03-18 14:37:05 UTC

標準添付ライブラリ reline のダイアログ表示で端末の幅を越える行があった時の不具合修正。

[67dd52d59c] Nobuyoshi Nakada 2023-03-18 16:35:21 UTC

ヒアドキュメントのトークンに空白が含まれていた場合(クオートしてトークンを書くと空白が入ることがありえる)インデントの扱いに影響してしまっていた不具合を修正しています。 [ruby-core:112940] [Bug #19539]

[9f8e914943] Takashi Kokubun 2023-03-19 04:14:35 UTC

RJIT で VM 命令 checkkeyword の JIT コンパイル対応を追加。

[81e19b7d99] Takashi Kokubun 2023-03-19 04:20:37 UTC

RJIT で VM 命令 getglobal の JIT コンパイル対応を追加。

[2eefd71e0f] Takashi Kokubun 2023-03-19 04:24:28 UTC

RJIT で VM 命令 newrange の JIT コンパイル対応を追加。

[4e440d6990] Takashi Kokubun 2023-03-19 04:26:08 UTC

doc/rjit/rjit.md を doc/rjit/README.md とファイル名を変更し、GitHub Actions の RJIT のテスト用の workflow で disasm のために libcapstone-dev をインストールしておくようにしています。

[d189f8d870] Takashi Kokubun 2023-03-19 04:27:07 UTC

RJIT 用の構造体 struct rjit_options を struct rb_rjit_options と改名しています。

[9c2792c3d3] Takashi Kokubun 2023-03-19 04:37:16 UTC

RJIT で VM 命令 toregexp の JIT コンパイル対応を追加。

[4a8de3fa88] Takashi Kokubun 2023-03-19 04:39:24 UTC

9c2792c3d3933d7afeca9c46be9954057d06c5eb の RJIT の toregexp 命令対応の変更漏れを追加。

[8510f33cc1] Takashi Kokubun 2023-03-19 04:42:10 UTC

RJIT で VM 命令 intern の JIT コンパイル対応を追加。

[71bcab4519] Takashi Kokubun 2023-03-19 04:49:42 UTC

RJIT で VM 命令 setclassvariable の JIT コンパイル対応を追加。

[d07d1c7162] Takashi Kokubun 2023-03-19 05:03:33 UTC

GitHub Actions の RJIT 用 workflow で利用する Ubuntu のバージョンを 22.04 に更新しています。

[cc9330f8c0] Takashi Kokubun 2023-03-19 05:13:40 UTC

RJIT で VM 命令 opt_case_dispatch の JIT コンパイル時に Hash オブジェクトを利用したテーブル参照による最適化を利用するようなコードを生成する実装を追加しています。

[824cf88969] Takashi Kokubun 2023-03-19 05:57:31 UTC

RJIT で Kernel#is_a? メソッドをメソッド呼び出しにせず直接実装を生成する最適化を追加しています。

[ca9355e173] Takashi Kokubun 2023-03-19 06:13:25 UTC

同じく RJIT で Kernel#instance_of? の呼び出しに対してメソッド呼び出しせず直接同等の処理をするコード生成する最適化を追加しています。

[106cca5111] Takashi Kokubun 2023-03-19 06:24:57 UTC

RJIT で String#empty? に対してメソッド呼び出しせずに処理生成する最適化を追加しています。

[32e0c97dfa] Takashi Kokubun 2023-03-19 06:33:10 UTC

RJIT で String#bytesize の呼び出しに対してメソッド呼び出しせずに直接処理を生成する最適化を追加しています。

[c4e2718763] Takashi Kokubun 2023-03-19 06:42:58 UTC

RJIT の C Binding で USE_RVARGC=0 でビルドした時のために struct RString の embed フィールドの情報は無視するようにしています。

[9654a28cc5] Takashi Kokubun 2023-03-19 07:06:03 UTC

rjit_c.rb で RubyVM::RJIT::C.obj_is_kind_of メソッドの定義が重複していたのでひとつ削除しています。

[e7342e76df] Nobuyoshi Nakada 2023-03-15 05:35:32 UTC

doc/syntax/literals.rdoc にヒアドキュメント内のインデントでのタブの扱いについて追記しています。なるほどー、ヒアドキュメント内の行頭でタブ使わないほうがいいですね。使うにしても一貫して使うべき。 [ruby-core:112744] [Bug #19485]