今日は YJIT の不具合修正や定数の inline cache のための専用の VM 命令の導入、Complex の coerce の対応の強化などがありました。
[462a8be511] Nobuyoshi Nakada 2022-09-01 10:54:46 UTC
ee09f75a6ba2c485260f07eb7d9382850def56bf で切り出した VCS#revision_header メソッドの未使用の引数 changed を削除して他の引数を省略可能にしています。パッケージ作成のための revision.h 生成の時の呼び出し時に省略するため。
[4144abee42] Takashi Kokubun 2022-09-01 18:55:39 UTC
YJIT 用のコマンドラインオプション --yjit-dump-disasm=all を指定した時に outlined cb なるコード部分もダンプするように対応しているようです。 https://github.com/ruby/ruby/pull/6309
[419118473e] git 2022-09-01 18:56:03 UTC
version.h の日付更新
[064944c902] Takashi Kokubun 2022-09-01 20:38:38 UTC
YJIT の arm64 アーキテクチャでレジスタの使いまわしで SEGV が発生することがあった不具合を修正しています。 https://github.com/ruby/ruby/pull/6312 [ruby-core:109789] [Bug #18985]
[7064d259bc] Takashi Kokubun 2022-09-01 21:12:24 UTC
NEWS の YJIT の項目に arm64 サポートの追加と Rust のバージョンの要求について追記しています。 [Feature #18481]
[679ef34586] John Hawthorn 2022-08-10 17:35:48 UTC
定数の inline cache の解決をするための専用の VM 命令 opt_getconstant_path というのと導入して opt_getinlinecache/opt_setinlinecache を組み合わせて実現しているのを 1命令で実行するようにしています。効率化というよりも命令列で参照している定数を知るために opt_getinlinecache/opt_setinlinecache の間に putobject しているところの値を知る必要があって大変なので、VM 命令列を1度スキャンするだけで定数名がわかるようにしたいというのが動機みたいです。
[1cc97412cd] John Hawthorn 2022-07-27 01:19:44 UTC
679ef34586e7a43151865cb7f33a3253d815f7cf の変更で未使用になった関数 rb_iseq_each() の定義を削除しています。
[fc2d9fedc2] John Hawthorn 2022-08-25 22:01:27 UTC
iseq_peephole_optimize() による VM 命令列の peephole 最適化で getblockparam のあとに分岐の命令(branchif/branchunless)が置かれてた時に getblockparam を getblockparamproxy に置き換えるようにしています。ブロック引数の Proc オブジェクト化を遅延するため。
[9b48edd932] Kevin Newton 2022-09-02 02:14:23 UTC
YJIT の x86_64 アーキテクチャ向けの機械語生成の最適化。 https://github.com/ruby/ruby/pull/6314
[fb5fa84f83] Takashi Kokubun 2022-09-02 03:05:13 UTC
.cirrus.yml で test/ruby/test_gc_compact.rb のテストを除外して別コマンドで分けて実行するようにしていたのをやめています。 https://github.com/ruby/ruby/pull/6310
[e896b33860] Takashi Kokubun 2022-09-02 03:05:49 UTC
.cirrus.yml で YJIT を有効にしたテストを arm64 環境で実施するようにしています。 https://github.com/ruby/ruby/pull/6313
[a9b59e24f4] Nobuyoshi Nakada 2022-08-31 01:59:05 UTC
complex.c の f_zero_p() という関数の戻り値を int から bool に変更し、safe_mul() の引数の int も bool に変更しています。
[9212d96307] Nobuyoshi Nakada 2022-08-31 02:01:59 UTC
Complex#<=> で d5f50463c2b5c5263aa45c58f3f4ec73de8868d5 で Numeric でない値を渡された時の coerce 呼び出し対応した続きで real? に false を返すようなオブジェクトの時の対応を追加しています。 [ruby-core:109311] [Bug #18937]
[b5cf356447] Nobuyoshi Nakada 2022-08-31 04:20:40 UTC
9212d963070612e669c40e5fde7954f19d648002 のテストで使うクラスを Numeric を継承するように修正しています。また Complex.polar の実装や Complex を生成する f_complex_new2() で引数に Complex が渡された時も assert() で異常終了させず対応するようにしています。
[92d2476208] Nobuyoshi Nakada 2022-09-02 05:49:42 UTC
compile.c、marshal.c、proc.c のコーディングスタイルの修正のみ。
[e7a8e3e91f] Hiroshi SHIBATA 2022-09-02 06:25:46 UTC
spec/README.md に make test-bundler-parallel というターゲットと特定のファイルのみテスト実行する指定のしかたについて追記しています。
[740d530bb0] Hiroshi SHIBATA 2022-09-02 06:30:46 UTC
spec/README.md に syntax_suggest のテストを実行する make test-syntax-suggest とこれも特定のファイルのみテスト実施する方法について追記しています。
[f069bc79f2] git 2022-09-02 06:57:18 UTC
spec/README.md のファイル末尾に改行がなかったので追加しています。
[7ff50ee35c] Hiroshi SHIBATA 2022-09-02 05:25:51 UTC
標準添付ライブラリ reline の Reline::GeneralIO に hide_cursor と show_cursor というクラスメソッドを追加しています。 Reline::ANSI などに追加されたメソッドに追随が漏れてたみたいですね。
[0d2422cf63] Hiroshi SHIBATA 2022-09-02 05:26:17 UTC
標準添付ライブラリ reline の Reline::LineEditor#padding_space_with_escape_sequences というメソッドでダイアログ内の文字列の末尾に空白を追加する時にその数の計算結果が負になってしまったら無視して 0 にしておくようにしています。 Aracritty という端末? でこの問題が起きるそうです。