ruby-trunk-changes 2024-02-09

今日は主に YJIT の最適化追加、標準添付ライブラリ optparse の不具合修正などがありました。

[443c5c06ac] Soutaro Matsumoto 2024-02-08 14:17:01 UTC

gems/bundled_gems の rbs のバージョンを 3.4.4 に更新しています。 https://github.com/ruby/ruby/pull/9883

[6756dbf3bb] git 2024-02-08 14:17:39 UTC

NEWS の bundled gems のバージョンリストの rbs のバージョンも更新しています。

[01fd262e62] Peter Zhu 2024-02-07 16:30:20 UTC

sym_check_asciionly() という関数に引数 fake_str を追加して渡した文字列オブジェクトが fake string だった時に coderange のチェックの例外メッセージの生成前に文字列オブジェクトを新規生成するようにしています。 GC が発生した時に不正な cfp の mark のため異常終了が発生する可能性があったようです。 [ruby-core:116622] [Bug #20245]

[b74c8abd11] Takashi Kokubun 2024-02-08 15:22:07 UTC

YJIT に Hash#empty? メソッドの最適化実装を追加しています。 https://github.com/ruby/ruby/pull/9875

[c6b391214c] Peter Zhu 2024-02-07 20:52:34 UTC

T_STRING 型のオブジェクトの flags のビットフラグについて説明しているコメントを追加/強化しています。

[50b4ef29b2] Takashi Kokubun 2024-02-08 16:03:07 UTC

YJIT の Rust 実装で VM 命令のコンパイル時に一部 jit_prepare_non_leaf_call() ではなく jit_prepare_call_with_gc() を呼ぶようにしています。不要な処理を削るためみたいです。 https://github.com/ruby/ruby/pull/9874

[3397449846] John Hawthorn 2024-02-08 16:03:59 UTC

YJIT の Rust 実装の統計情報のカウンタのうち --yjit-stats オプションが指定されていなくてもカウントするものにいくつかカウンタを追加しています。 https://github.com/ruby/ruby/pull/9878

[1936278461] Takashi Kokubun 2024-02-08 17:03:47 UTC

YJIT の Rust 実装の修正。 よくわかりませんが Context#upgrade_opnd_type で set_opnd_mapping() の呼び出しを追加しています。 https://github.com/ruby/ruby/pull/9876

[3ecfc3e33e] Kevin Newton 2024-02-08 18:56:05 UTC

prism の更新。 また -e オプションの処理で DATA 定数の定義をする処理を追加しています。これは prism と関係あるんだろうか。

[4a40364c62] Kevin Newton 2024-02-08 18:19:51 UTC

コマンドラインオプションの prism 向け処理で初期化関数 ruby_opt_init() を呼ぶタイミングを早めています。

[5cbca9110c] Takashi Kokubun 2024-02-08 23:47:02 UTC

YJIT の --yjit-trace-exits オプションに引数を渡して特定の exit のカウンタを指定できるようにしているようです。 https://github.com/ruby/ruby/pull/9890

[e2aa00ca66] Takashi Kokubun 2024-02-08 23:52:45 UTC

YJIT の Rust 実装で整数型を変更して不要なキャストを削除しているようです。 https://github.com/ruby/ruby/pull/9893

[2a57e6e6ed] Petrik 2024-02-08 20:58:56 UTC

標準添付ライブラリ rdoc で :nodoc: タグの指定を alias や attr_reader の行のあとに付けた時にも効くようにしています。

[76f0eec20f] Takashi Kokubun 2024-02-09 01:07:15 UTC

benchmark/realpath.yml というベンチマークスクリプトで一時ファイルが残るのを防ぐため teardonw でファイル削除するようにしています。

[0923a98868] Nobuyoshi Nakada 2024-02-08 09:15:08 UTC

st.c で rebuild_table() や rb_st_compact_table() から一部のメンバーの再初期化する関数を切り出したものを呼ぶようにしています。実害はないそうですが CodeQL で検出されて警告されるのでその対策のためとのこと。

[50bcaa6286] Nobuyoshi Nakada 2024-02-09 03:17:31 UTC

標準添付ライブラリ optparse の補完処理の実装で使っている正規表現のバックスラッシュのエスケープ不足を修正しています。

[f7a407cabd] fatkodima 2023-10-14 18:52:01 UTC

標準添付ライブラリ optparse で OptionParser#on で省略を許さない require_exact というオプションを指定した時に --no-xxx のように否定形のオプションも使えるように修正しています。

[33c1e082d0] yui-knk 2024-02-02 15:50:02 UTC

parse.y で AST を構築する時に文字列リテラルなどのために文字列オブジェクトを VALUE 型で直接保持していたのを rb_parser_string_t という parser 専用の型を使って保持するようにしています。 parser の Ruby 本体への依存を減らすための活動の一環ですね。しかしこのために parse.y 内に文字列の操作/チェックのための独自の関数が増えています。

[007c75ce4c] Hiroshi SHIBATA 2024-02-09 05:36:38 UTC

tool/rbinstall.rb で gem のインストール時に拡張ライブラリを含む gem の場合にビルド失敗していたらインストールをスキップするようにしています。

[5e12b75716] Kazuhiro NISHIYAMA 2024-02-09 08:46:24 UTC

GitHub Actions の workflows で paths-ignore の指定を削除しています。無効なところに書かれていたみたいです。

[2c6767b71e] Nobuyoshi Nakada 2024-02-09 03:59:43 UTC

標準添付ライブラリ optparse の OptionParser#on にブロックを渡した時にそのブロックが受け取るブロックパラメーターにデフォルト値が設定されていた時にそれがうまく反映されない不具合を修正しています。明示的に nil を渡してしまうためデフォルト値が使われないので引数を削ってブロック起動するようにしているようです。

[db73226bf6] Nobuyoshi Nakada 2024-02-09 10:03:20 UTC

標準添付ライブラリ optparse でコールバックの Proc に lambda 型の Proc オブジェクトが渡された時に対応するようにしているみたいです。 lambda の Proc は必須の引数を渡さずに呼ぶと普通のメソッドのように ArgumentError を発生させてしまうので wrapper メソッドを作って呼ぶ Proc の Proc#lambda? が真だったら引数の数を調節して呼ぶようにしているようです。 大変そう。