ruby-trunk-changes 2024-02-21

今日は YJIT の最適化や TracePoint の :thread_end イベントの発火がされないケースがある不具合の修正などがありました。

[c22cb960cf] Hiroshi SHIBATA 2024-02-20 11:52:04 UTC

gems/bundled_gems の debug のテストに使う commit hash を更新しています。

[835fa98a62] Nobuyoshi Nakada 2024-02-20 14:03:13 UTC

コマンドラインオプションの -W でカテゴリごとの警告の有効化/無効化を反映させるためのビットフラグの初期化を --dump フラグの処理の前に移動しています。 prism 利用時の experimental 警告の抑制がきくようにするためみたいです。

[c184aa8740] Peter Zhu 2024-02-16 18:35:33 UTC

rb_method_entry_t および T_IMEMO 型オブジェクトの GC の mark 処理で GC.compact による参照の更新対応の実装を rb_gc_mark_and_move() という関数を使いまわすようにしているそうです。処理の共通かな?

[c0e5de9567] Takashi Kokubun 2024-02-20 17:13:36 UTC

tool/missing-baseruby.bat で BASERUBY として要求する最低バージョンのメッセージを 2.7.0 から 3.0.0 に更新しています。

[2e2e3d89af] Alan Wu 2024-02-20 18:29:02 UTC

YJIT で C 実装のメソッドに対する **nil での空のキーワード引数を渡す呼びかたへの対応を追加しているようです。

[77c1233f79] Jeremy Evans 2024-01-30 18:31:27 UTC

メソッドの引数の処理で不要な中間オブジェクトの生成を抑制するために VM 命令に pushtoarraykwsplat というのを追加しています。うーん徹底してますね。速くするためなんでしょうが。

[b3c13de858] Koichi Sasada 2024-02-20 06:31:24 UTC

prism を parser として使うテストで Encoding.locale が UTF-8 じゃない時に通らないものをチェックして実行しないようにしています。

[d4b4b53bc0] Burdette Lamar 2024-02-20 21:10:52 UTC

File の rdoc 用コメントに改行についてのセクションを追加してリンクを追加したりしています。 https://github.com/ruby/ruby/pull/9970

[9216a2ac43] Takashi Kokubun 2024-02-20 21:42:29 UTC

YJIT の実装で C 実装のメソッドの C の関数を直接呼ぶ時に例外が発生しない(leaf)かどうかを引数の型のチェックなども含めて実行時に確認するようにしてより強く最適化するようにしているようです。 https://github.com/ruby/ruby/pull/10002

[8e1090487e] Alan Wu 2024-02-20 21:20:02 UTC

YJIT で ruby 実装の組み込みメソッドへ *nil や **nil で空の引数やキーワード引数を渡す時のスタック処理の不具合修正。

[35fdf1a624] Alan Wu 2024-02-20 21:21:32 UTC

bootstraptest の YJIT の冗長なテストを削除。

[97d4363d3b] Peter Zhu 2024-02-16 20:12:53 UTC

GC.latest_compact_info の rdoc 用コメントのキーの説明部分のマークアップを変更しています。

[e7ab5d891c] yui-knk 2024-02-10 01:05:18 UTC

正規表現リテラルのために専用の AST のノードタイプ NODE_REGX を追加しています。 AST から ruby のオブジェクトを直接持つのを除外する一環でしょうか。

[776dbbba72] yui-knk 2024-02-20 14:52:23 UTC

parse.y で %type の先頭に ripper 向けにコメントを書く必要があったのが昨日の ripper の実装の大幅変更で不要になったようなので削除しています。

[ce4142bcb7] Takashi Kokubun 2024-02-21 01:23:08 UTC

YJIT の VM 命令 concatstrings の実装で rb_str_concat_literals() を呼ぶために leaf 用の準備をしていたけど leaf ではなかったので jit_prepare_call_with_gc() のほうを呼ぶほうにしています。 https://github.com/ruby/ruby/pull/10035

[5fb574ae4e] yui-knk 2024-02-18 22:55:21 UTC

parse.y の Hash リテラルの重複したキーの警告のための処理で NODE_LIT ノードを考慮する必要がなくなったそうなので実装をシンプルに作りなおしています。 NODE_LIT はまだあるけど magic comment の shareable_constant_value でだけ使われるとのこと。

[2a6917b463] Alan Wu 2024-02-20 21:45:59 UTC

Hash リテラルの ISeq へのコンパイル時の処理でリテラル判定する関数に Hash の値のほうもキーとして扱ってしまっていたのを修正しています。キーのほうは frozen_string_literal でなくても freeze されてるのでそれに合わせた判定をしてしまってたようです。

[1c97abaaba] John Hawthorn 2024-02-12 05:43:38 UTC

rb_vm_t 構造体に ci_table という st_table のメンバーを追加してここで VM 全体で共有する struct rb_callinfo のキャッシュを持ち同じ内容の callinfo は使いまわすようにしているようです。肥大化したりしないのかなと思ったけど開放時には削除処理もしていて、しかしその時に参照カウンタとかの管理はしていないので、callinfo 自体 T_IMEMO 型のオブジェクトで GC の対象なのでその回収時に ci_table の登録から削除するということですね。

[081ee3d355] John Hawthorn 2024-02-15 23:32:01 UTC

1c97abaabae6844c861705fd07f532292dcffa74 の変更により eval でキーワード引数を含むメソッド呼び出しをコンパイルし続けると callinfo が T_CLASS/T_MODULE に溜まり続けるメモリリークが修正されたのでそれに対応するテストを追加しています。

[a605234bfa] Yusuke Endoh 2024-02-20 07:16:28 UTC

NEWS に例外メッセージのクオート記号の変更とバックトレースのメソッドに Class/Module 名も含めるようにした変更について追記しています。 [Feature #16495] [Feature #19117]

[08753f2037] Hiroshi SHIBATA 2024-02-20 07:47:48 UTC

rubygems と bundler のドキュメントやコメント内のリンクの http を https に変更しています。

[d0786cde3f] Hiroshi SHIBATA 2024-02-20 10:12:44 UTC

bundler の man ページの更新。

[91cb303531] yui-knk 2024-02-18 09:33:29 UTC

Universal Parser の構造体 rb_parser_config_t から不要な関数ポインタのメンバーを削除しています。

[d578684989] Koichi Sasada 2024-02-20 10:09:23 UTC

M:N Threads が有効な時に native thread を現在の Thread で専有するための? C API rb_thread_lock_native_thread() を追加しています。 https://github.com/ruby/ruby/pull/10031

[c8fb4f308b] Nobuyoshi Nakada 2023-11-01 14:45:48 UTC

rubygems の専用の YAML 実装で Hash の値が nil の場合にキーごと削除するようにする変更を加えています。 libyaml がバージョンによっては値が nil の Hash をうまく扱えないみたいです。

[fc1a7a46dc] Hiroshi SHIBATA 2024-02-21 05:27:58 UTC

c8fb4f308bc24c75c2713129a0972ffcd8742b3f の再修正で Hash の値が nil のものを消すのに dup+delete_if を使ってたのを Hash#compact を使うように変更しています。Hash#compact ってキーじゃなくて値のほうが nil の要素を消すのか。

[1fa4d15ca7] Nobuyoshi Nakada 2024-02-21 06:45:53 UTC

テスト用の tool/lib/test/unit の Test::Unit::TestCase の __name__ の alias として method_name というメソッドを生やしています。 test-unit.gem との互換性のためとのこと。

[6ecb14df2c] Nobuyoshi Nakada 2024-02-20 17:32:24 UTC

rubygems のテスト用の helper メソッドで終了時に一時ディレクトリの削除確認を追加し、一時ファイルが残ってたのを修正しているようです。

[b1431ce427] Yusuke Endoh 2024-02-21 08:14:49 UTC

dmydln.c/dmyenc.c/dmyext.c などの拡張ライブラリの静的リンク時のためのソースコードの先頭にコメントで miniruby と本番の ruby どちらで使われるのかといった説明を追記しています。

[6aa5067ab9] Nobuyoshi Nakada 2024-02-21 10:28:23 UTC

6ecb14df2cda223e2280891150b3f41c1eb2edf0rubygems のテストでの一時ディレクトリ削除のチェックする assertion の追加を revert しています。どこで消し漏れているか確認するために入れたものだったみたいです。

[fd91354628] Yuta Saito 2024-02-21 10:17:13 UTC

template/exts.mk.tmpl に EXTOBJS に複数のエントリがあった時の処理に理由をコメントとして追記しています。

[78d9fe6947] Samuel Williams 2024-02-21 11:32:59 UTC

TracePoint の Thread が終了する時のイベント :thread_end の発火が例外で終了した時に行なわれていなかったのを修正しています。 https://github.com/ruby/ruby/pull/10039 [ruby-core:116890] [Bug #20286]

[04729fe68d] Samuel Williams 2024-02-21 11:33:18 UTC

78d9fe69479d32214a52ad7291c3973f1b6b7f6f の追加修正? で non-blocking Fiber 用の scheduler のセットをする rb_fiber_scheduler_set() で既存の scheduler を終了させる処理中の例外を捕捉する rb_ensure() を追加しています。 https://github.com/ruby/ruby/pull/10042 [ruby-core:116890] [Bug #20286]

ruby-trunk-changes 2024-02-20

今日は主に ripper の内部実装の大きな変更や rubygems の設定ファイルの項目追加などがありました。

[0501ecddac] "dependabot[bot]" 2024-02-19 15:30:28 UTC

rubygems の rust 製拡張ライブラリの gem のテストのためのプロジェクトの rb-sys パッケージのバージョン更新。

[4ba76d4847] "dependabot[bot]" 2024-02-19 15:12:39 UTC

rubygems の rust 製拡張ライブラリの gem のテストのためのプロジェクトの rb-sys パッケージのバージョン更新。

[cdf39ed673] Hiroshi SHIBATA 2024-02-20 00:55:29 UTC

tool/sync_default_gems.rb で prism の同期時に lib/prism/prism.so などの拡張ライブラリファイルを削除するようにしています。

[4e864d0a82] Nobuyoshi Nakada 2024-02-20 04:14:09 UTC

cdf39ed6731ebdc621809a8ba7ea46877a4835f5 の再変更で tool/sync_default_gems.rb でそもそも全てのプロジェクトで同期時に拡張ライブラリファイルはコピーしないように一括削除処理を追加しています。

[83148f8342] Hiroshi SHIBATA 2023-03-10 03:21:46 UTC

rubygems の設定ファイルに install_extension_in_lib という設定を追加して gem のインストール時に lib/ の配下に拡張ライブラリをインストールするかどうかを指定できるようにしているようです。

[94dd4dc3b2] Hiroshi SHIBATA 2023-03-10 03:39:05 UTC

83148f83420a66ceaacb1f24bfcdc51516f5e0d7 で導入した rubygems の設定の install_extension_in_lib のデフォルト値を false にしています。望ましくない挙動をデフォルトで off にしたいということみたいです。

[27501a5509] Hiroshi SHIBATA 2023-03-10 03:43:49 UTC

rubygems のテストで Gem.configuration.install_extension_in_lib を変更する場合に後で元の設定に戻すようにしています。

[a551d93655] Hiroshi SHIBATA 2023-03-10 03:57:54 UTC

94dd4dc3b2da1828b71bdf716918d2b789486651 とは逆に rubygems の設定 Gem.configuration.install_extension_in_lib のデフォルト値を true に変更しています。あれ。

[018261eb92] Hiroshi SHIBATA 2023-03-10 04:28:10 UTC

rubygems のテストに Gem.configuration.install_extension_in_lib の設定ファイルからのセットについてのテストを追加しています。

[f2d453347f] Hiroshi SHIBATA 2023-03-10 04:28:50 UTC

rubygems のテストのメソッド順の変更のみ。

[f75b9dbf7d] Hiroshi SHIBATA 2023-03-17 11:47:00 UTC

94dd4dc3b2da1828b71bdf716918d2b789486651 で削除した Gem.install_extension_in_lib メソッドを互換性のために復活させています。

[89cfc15207] yui-knk 2024-01-12 01:46:17 UTC

拡張ライブラリ ripper の実装で構文解析用の node のスタックと ruby のオブジェクトを入れておくためのスタックを分離するという大きな方針の変更をしているそうです。このため parse.y の ripper 向けのコメント内の実装部分も全体的に変更されています。本体用と ripper 向け実装を分けるためのコメントの記法もちょっとわかりやすくしているっぽい? [ruby-core:116670] [Feature #20257]
これによりいくつか ripper の挙動の不整合が修正されるみたいです。 [Bug 10436] [Bug 18988] [Bug 20055]

[2a4b6ed37c] yui-knk 2024-02-16 08:33:39 UTC

parse.y に 20dbc7a5f4098ec7612192c2b65bdc970eab6055 で skip したテストのための workaround を入れています。 https://github.com/ruby/ruby/pull/9923

Universal Parser 用の構造体 rb_parser_config_t から不要になった関数ポインタのメンバーを削除しています。

[474f41880f] yui-knk 2024-02-19 09:07:04 UTC

parse.y に未使用関数の警告除去のため UNIVERSAL_PARSER マクロでの preprocessor 分岐を追加しています。

[fa3d6aafb7] Hiroshi SHIBATA 2024-02-20 07:57:45 UTC

標準添付ライブラリ uri の rdoc 用コメント内の URL の schema が http だったところを https に変更しています。また RFC へのリンクが切れてたものを修正しています。

[7cb8fd7800] yui-knk 2024-02-18 09:14:42 UTC

parse.y から ripper 向けの ripper_validate_object() という関数の定義を ext/ripper/ripper_init.c.tmpl に移動しています。

[e3917fc7da] Nobuyoshi Nakada 2024-02-20 11:07:07 UTC

GC.compact のテストでもう利用しなくなったユーティリティメソッドを削除しています。

[386b956ad8] Nobuyoshi Nakada 2024-02-20 11:08:52 UTC

GC.compact のテストでもうひとつ未使用になってたユーティリティメソッドを削除しています。

ruby-trunk-changes 2024-02-19

今日は主に irb の組み込みコマンド help の仕様変更や例外メッセージのクオートの変更に関連して bundled gems や irb のテストの修正などがありました。

[07c774e85c] Stan Lo 2024-02-18 18:21:00 UTC

irb の組み込みコマンド help に引数を追加して指定されたコマンドのヘルプを表示するようにしています。 https://github.com/ruby/irb/pull/877

[11a6bb8195] Hiroshi SHIBATA 2024-02-19 01:47:42 UTC

25d74b9527cd525042ad0b612b794fa331d3a318 の例外メッセージ内のクオートの変更で同時に変更したテストのうち irb のテスト部分を revert しています。default gems だから upstream で新旧両対応するためかな。

[9ec9910081] Stan Lo 2024-02-15 17:09:11 UTC

やはり irb のテストで例外メッセージのクオートの変更のために ruby のバージョンで分岐してチェックするようにしています。正規表現で両対応はしなかったんですね。 https://github.com/ruby/irb/pull/874 [ruby-core:96742] [Feature #16495]

[7e577e150a] Stan Lo 2024-02-16 14:30:22 UTC

irb の debug 統合でバックトレースのメソッド名にクラス名も含まれるようになったのに対応する修正。 https://github.com/ruby/irb/pull/876

[c14d295afd] Hiroshi SHIBATA 2024-02-19 02:05:13 UTC

拡張ライブラリ openssl のテストメソッド名の修正。

[1dca87cf53] Hiroshi SHIBATA 2024-02-19 02:34:28 UTC

irb のテストで明示的に require "rubygems" するのを test/irb/helper.rb に集約しています。

[0972cfb795] git 2024-02-19 04:28:46 UTC

NEWS の bundled gems のバージョンリストの test-unit のバージョンを更新しています。

[3d4f5e7671] Hiroshi SHIBATA 2024-02-16 09:39:23 UTC

rubygems のテストで rake 用タスクのテストを skip する時の警告メッセージを削除しています。

[b4be283485] Douglas Eichelberger 2024-02-17 22:31:58 UTC

bundler の bundle gem で生成するプロジェクトの rubocop 用の設定のテンプレートからいくつか設定を削っています。

[cb9e0a4537] Hiroshi SHIBATA 2024-02-19 04:55:06 UTC

make test-all 実行時にファイル指定で rubygems のテストの実行除外のオプションをつけていたのが 3d4f5e7671271335429e33605366f792bc84a2a2rubygems のテストの警告削除をしたので不要になったので削っています。

[a52fc5df7a] Hiroshi SHIBATA 2024-02-19 04:35:14 UTC

bundler のテストでディレクトリ作成のために存在チェックしたうえで Dir.mkdir してたのを FileUtils.mkdir_p を利用するように変更しています。

[fcc55dc226] Nobuyoshi Nakada 2024-02-19 05:07:49 UTC

Hash リテラルのキーの Symbol にソースエンコーディングに対して不正なバイト列になる文字列を使った時に SyntaxError にするようにしています。またこのため parse.y で使う ruby 本体の API を減らしているようです。 [ruby-core:116838] [Bug #20280]

[b1d70e4264] Nobuyoshi Nakada 2024-02-19 05:46:40 UTC

fcc55dc2261b4c61da711c10a5476d05d4391eca で parse.y から使うために導入した rb_str_valid_encoding_p() はやっぱり削除して rb_parser_enc_str_coderange() を使うように変更しています。これも parse.y からの依存を減らすためですね。 [ruby-core:116838] [Bug #20280]

[d9b61e228f] Nobuyoshi Nakada 2024-02-19 05:53:15 UTC

irb のテストに fcc55dc2261b4c61da711c10a5476d05d4391eca で SyntaxError を発生させるようにした不正なバイト列の Symbol を parse した時のテストを一時的に skip しています。

[8c5b7eb05f] Nobuyoshi Nakada 2024-02-19 07:30:20 UTC

rubyspec でも fcc55dc2261b4c61da711c10a5476d05d4391eca で変更した不正なバイト列の Symbol リテラルを使ったテストがあったので 3.4 からは実行しないようにしています。 [ruby-core:116838] [Bug #20280]

[96ede4d192] Hiroshi SHIBATA 2024-02-19 08:13:22 UTC

gems/bundled_gems の typeprof のバージョンを 0.21.11 に更新しています。

[fabec3909c] git 2024-02-19 08:14:17 UTC

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

[391b0bf07b] Hiroshi SHIBATA 2024-02-19 08:29:36 UTC

gems/bundled_gems の debug.gem のテストに使う commit hash の指定を更新しています。

ruby-trunk-changes 2024-02-18

今日は主に ruby 実装の組み込みメソッドの定義で別のメソッドに依存しているものを予約語や C 実装の呼び出しを利用するようにした変更などがありました。

[3dccb716da] Nobuyoshi Nakada 2024-02-17 14:28:00 UTC

ブロックを受け取る組み込みメソッドで ruby 実装になっているもののうち block_given? を使っているものは defined?(yield) を使うようにしています。また Enumerator を返すメソッドでは to_enum メソッドを使うかわりに Primitive.cexpr! で C の実装の SIZED_ENUMERATOR() マクロを利用するように変更しています。メソッド呼び出しはメソッドが再定義されている可能性があるためとのこと。なるほど。

[104100f554] Nobuyoshi Nakada 2024-02-17 15:18:19 UTC

tool/mkrunnable.rb からファイル操作に関するモジュールやメソッドの定義を tool/lib/path.rb という別ファイルの Path モジュールとして切り出しています。

[87c4c6c082] Nobuyoshi Nakada 2024-02-18 06:07:42 UTC

104100f554d94cde9d6d7e7843992970c35b93cf で切り出した tool/lib/path.rb を tool/rbinstall.rb からも再利用するようにしています。そして実行ファイルのインストール先を CPU アーキテクチャ毎のサブディレクトリの下に入れるようにしているようです。

[120c291faf] Nobuyoshi Nakada 2024-02-18 06:08:27 UTC

87c4c6c0823b3eabe34c42860388e3cbdd634cc3 の続きで tool/rbinstall.rb で pkg-config 用のファイルへの symbolic link を従来の位置に作るようにしているようです。

ruby-trunk-changes 2024-02-17

今日は irb の debug 連係の機能追加やリファクタリング、YJIT のメソッド引数処理の強化などがありました。

[c5f22b5b75] Peter Zhu 2024-02-15 21:09:57 UTC

rb_ast_t からの参照を GC.compact で移動できるように rb_ast_update_references() で参照の更新に対応しています。

[b315826377] Stan Lo 2024-02-16 16:12:50 UTC

irb の debug.gem との連係でなにも入力して改行した時に前のコマンドを繰り返す挙動を実装しているようです。 https://github.com/ruby/irb/pull/856

[4411cdeef9] Peter Zhu 2024-02-16 16:44:27 UTC

gc.c の rb_iseq_mark_and_move() の prototype 宣言の引数名の typo 修正。

[f5801e2bf4] Stan Lo 2024-02-16 16:47:32 UTC

irb の組み込みコマンドに使うクラス名の名前空間を変更してそれに対応してディレクトリ名も変更しています。 https://github.com/ruby/irb/pull/873

[8414c26f0d] Kevin Newton 2024-02-14 15:32:09 UTC

prism を利用して parse する時の警告の category を experimental に指定しています。

[6084adbc6f] Takashi Kokubun 2024-02-16 17:44:11 UTC

Travis-CI の設定で make test-spec の実行に tool/travis_wait.sh を wrapper として使いタイムアウトに対処するようにしています。

[24645cff0d] Peter Zhu 2024-02-16 18:27:16 UTC

gc.c の push_mark_stack() で不要な変数代入を削除しています。

[bac692f508] Jun Aruga 2024-02-15 23:19:43 UTC

GitHub Actions の workflow に working-directory という step を追加しています。よくわからないですが "No such file or directory" というエラーが発生するのに対処するためとのこと。

[fbe63047cb] Alan Wu 2024-02-16 19:47:16 UTC

common.mk の依存関係の再生成。

[c4e30d2865] Alan Wu 2024-02-16 01:29:06 UTC

YJIT でメソッド呼び出し時の m(**nil) のような keyword rest 引数に nil を渡す記法の対応を追加しています。なんか既に対応してた気がするけど。

[b4327c1158] Alan Wu 2024-02-16 19:31:52 UTC

YJIT で空の配列を splat して渡す m(*[]) のようなメソッド呼び出しの対応を追加しています。

[2967b7eb76] Peter Zhu 2024-02-16 20:14:05 UTC

compile.c の iseq_insert_nop_between_end_and_cont() に例外処理用の一時配列の変数を RB_GC_GUARD() で保護して mark 漏れしないようにしています。

[075b6ac8ae] Alan Wu 2024-02-16 20:39:44 UTC

YJIT の --yjit-stats で出力するカウンタのうち不要なものを削除しています。

[3b23b45d48] Nobuyoshi Nakada 2024-02-17 08:16:17 UTC

bootstraptest にバッククオートで括ることで呼ばれるメソッド Kernel#` の再定義をした時のテストを追加しています。これ再定義できるんだ。

[6e4bfb35bb] Nobuyoshi Nakada 2024-02-17 08:21:07 UTC

time.c の time_init_parse() 関数の引数名を変更しています。

[df63e5bef6] Nobuyoshi Nakada 2024-02-17 08:27:02 UTC

time.c にいくつか Doxygen 用? コメントを追加しています。

ruby-trunk-changes 2024-02-16

今日は主に YJIT の最適化、例外メッセージのクオートの変更へのライブラリのテストなどの追随、bundled gems のテストのためのビルドプロセスの修正などがありました。

[e779c194b3] Peter Zhu 2024-02-14 21:25:56 UTC

io.c でコールバック関数に渡すために内部的に使う構造体 struct binwrite_arg から未使用になってたメンバー str を削除しています。

[da7b9478d3] Alan Wu 2024-02-15 16:59:37 UTC

YJIT のメソッド呼び出し時の無名の keyword rest 引数の処理で空の時に空 Hash でなく nil を渡すようにしています。

[4d1b3a2bf3] Peter Zhu 2024-02-15 17:19:45 UTC

string.c の STR_SET_EMBED() マクロで struct RBasic::flags からクリアするビットフラグに STR_SHARED を追加しています。

[fa334ecd40] Cody Cutrer 2024-02-12 17:13:36 UTC

bundler の Bundler::Dsl#eval_gemfile で instance_eval する時にファイル名の指定として渡す Gemfile のファイルパスをフルパスに変更しています。

[bf5cc9ef8c] git 2024-02-15 20:51:11 UTC

NEWS の default gems のバージョンリストの prism のバージョンを更新しています。

[cfe77db00d] Aaron Patterson 2024-02-15 02:03:35 UTC

YJIT で VM 命令の setinstancevariable のコンパイル時の関数呼び出しのためのレジスタ退避を必要な時だけに限定する最適化。

[bda4192e02] Takashi Kokubun 2024-02-15 23:05:26 UTC

cfe77db00d433d75848974cffe5b3b402a127799 の再修正で YJIT での setinstancevariable 命令のコンパイル時のレジスタ退避処理が重複していたところがあったので削っています。

[cdc07236a4] Takashi Kokubun 2024-02-15 23:05:42 UTC

YJIT の Rust 実装のコメントの追記。

[9d81741f27] Takashi Kokubun 2024-02-15 23:27:44 UTC

YJIT の VM 命令 setinstancevariable のコンパイル時に値スタックからオペランドを pop するのを関数末尾に統合しています。

[1c41dc40d8] Hiroshi SHIBATA 2024-02-16 02:08:03 UTC

標準添付ライブラリ forwardable のテストで例外メッセージのクオートの変更に追随してチェックする正規表現を新旧両対応するように修正しています。

[7ac8d3d6ee] Nobuyoshi Nakada 2024-02-15 13:58:58 UTC

コマンドラインオプション --dump=yydebug が指定された時に構築した AST を rb_ast_dispose() を読んで積極的に解放するようにしています。

[574312dead] Nobuyoshi Nakada 2024-02-15 14:30:29 UTC

コマンドラインオプションの処理をする process_options() 関数から --help でのヘルプメッセージ表示の処理を show_help() という関数に切り出すリファクタリング

[df8ae93756] "dependabot[bot]" 2024-02-16 02:24:08 UTC

GitHub Actions の workflows で利用している github/codeql-action アクションのバージョンを更新しています。

[6f224d66a5] Jason Garber 2024-02-01 03:04:50 UTC

bundler で gem の取得元として gitlab: の指定で Gitlab からソースコード取得することもできるようにしているようです。

[0ae4d9c109] Takashi Kokubun 2024-02-16 05:36:38 UTC

GitHub Actions の annocheck によるセキュリティチェックの実行をいろんなコンパイラオプションを試す workflow でも実行していたのをやめて、逆に annocheck 用の workflow で make test, make test-tool を実行していたのをやめています。 https://github.com/ruby/ruby/pull/9990

[7b568b1f78] Hiroshi SHIBATA 2024-02-16 02:16:51 UTC

bundler のテストでメソッドの第1引数にかっこなしで正規表現リテラルを書いていたのが警告になるのでかっこを追加しています。

[cf16a70448] Hiroshi SHIBATA 2024-02-16 02:21:50 UTC

rubygems のテストで例外メッセージのクオートの変更に追随して正規表現で新旧両対応するようにチェックを修正しています。

[785b7ee13d] Takashi Kokubun 2024-02-16 05:41:46 UTC

GitHub Actions の annocheck workflow のジョブ名を変更しています。

[839ccad20b] Nobuyoshi Nakada 2024-02-16 03:22:58 UTC

コマンドラインオプションの処理をする関数 process_options() から --parser オプションに関する処理を別の関数群に切り出すリファクタリング

[e0d068aa9c] Nobuyoshi Nakada 2024-02-16 03:25:48 UTC

さらにコマンドラインオプションを処理する process_options() から特殊変数を操作する処理を process_options_global_setup() という関数に切り出すリファクタリング

[a64e93a896] Nobuyoshi Nakada 2024-02-16 04:12:26 UTC

ruby.c の prism 用の関数で rb_funcall() でメソッド呼び出しする際にメソッド名を rb_intern() で ID 化していたのを rb_intern_const() に修正しています。

[81752d2097] Nobuyoshi Nakada 2024-02-16 05:17:51 UTC

ruby.c の prism 向けの関数でコマンドラインスクリプトとして "-" が指定されていて標準入力から読もうとした時に現在未サポートなので例外を発生させるようにしています。

[bc7266c5ce] Takashi Kokubun 2024-02-16 07:13:45 UTC

リポジトリからのビルド時に必要な BASERUBY の最低バージョンを 3.0 に引き上げています。これを利用して RJIT 用のスクリプトで一部新しめの文法を利用するようにしています。 https://github.com/ruby/ruby/pull/9976

[4047222aca] Hiroshi SHIBATA 2024-02-16 06:39:36 UTC

tool/rbinstall.rb で参照する .gemspecfile の優先順位をダウンロードして展開した gem パッケージの内容のほうを先にみるようにしています。

[9f708d48f6] Hiroshi SHIBATA 2024-02-16 06:43:28 UTC

tool/lib/bundled_gem.rb で bundled gems のインストール時に依存している default gems の依存関係を消すようにしています。

[62ab93357f] Hiroshi SHIBATA 2024-02-16 06:48:00 UTC

spec/bundled_gems.mspec で make test-bundled-gems-spec で net-ftp のテストを除外してたのを戻しています。

[38cc9dacaa] Hiroshi SHIBATA 2024-02-16 06:48:28 UTC

common.mk の make test-bundled-gems-prepare でインストールする gem に ipaddr, forwardable, singleton, ruby2_keywords などを追加していたのを消しています。

[9f4d5eb1f4] Hiroshi SHIBATA 2024-02-16 07:33:25 UTC

tool/rbinstall.rb で bundled gems の gemspec ファイルを探すパスの候補に .bundle/specifications/ の下も追加しています。

[e3f452e5d7] Hiroshi SHIBATA 2024-02-16 08:57:38 UTC

tool/rbinstall.rb のインデントの修正のみ。

[0301473fb5] Hiroshi SHIBATA 2024-02-16 08:59:38 UTC

tool/lib/bundled_gem.rb で default gems のリストを %w リテラルで書いたのにコメントを書いてしまってコメント部分も配列に含まれてしまっていたので通常の配列リテラルで書きなおしています。

[fbc29ce032] Hiroshi SHIBATA 2024-02-16 09:16:15 UTC

spec/bundler/support/builders.rb で Dir.mkdir でディレクトリ作成するのをディレクトリが存在しない時だけにしています。既に存在しているとエラーになるので。

ruby-trunk-changes 2024-02-15

今日は主に全体的に例外メッセージ内でのクオートが `foo bar' のようにバッククオート+シングルクオートが使われていたのを両方シングルクオートにする変更や、例外のバックトレースでメソッド名にクラス名も含めるようにする変更などがありました。

[d0412599e0] tomoya ishida 2024-02-14 13:46:45 UTC

irb の組み込みコマンド show_source などで定数の定義位置を探す実装の再修正? https://github.com/ruby/irb/pull/871

[c84581f1d9] Stan Lo 2024-02-14 13:47:41 UTC

irb の組み込みコマンド help の実装のカテゴリ? を変更しています。以前から deprecated になっていたドキュメント参照のコマンドとしての help をやめて irb そのもののヘルプメッセージを表示するコマンドに変更しているみたいです。

[f1136e73e8] git 2024-02-14 14:59:30 UTC

NEWS の default gems のバージョンリストの prism のバージョンを更新しています。

[65f5435540] Burdette Lamar 2024-02-14 15:47:42 UTC

rdoc 用コメント全体でクラス名のリンク抑制のため +xxx+ でマークアップするようにしています。 https://github.com/ruby/ruby/pull/9955

[ee3b4bec0e] Alan Wu 2024-02-14 16:19:04 UTC

YJIT で Kernel#send メソッドの JIT コンパイル可能かどうかのチェックを変更しています。コミットログによると dynamic synboml をメソッド名の指定に使った時にコンパイルできるようにするみたいです。 https://github.com/ruby/ruby/pull/9956

[7177731282] Takashi Kokubun 2024-02-14 17:09:14 UTC

YJIT 用のコマンドラインオプション --yjit-perf=codegen を追加してコンパイル処理自体のプロファイルを取れるようにしているようです。 https://github.com/ruby/ruby/pull/9957

[1d3b306753] Peter Zhu 2024-02-13 15:21:22 UTC

rb_class_instance_allocate_internal() と rb_class_allocate_instance() という関数の定義を gc.c から object.c に移動しています。

[fadb7d412b] Peter Zhu 2024-02-14 20:37:53 UTC

weakmap.c に #include "ruby/st.h" が 2行重複して書かれてたので1つ消しています。

[7943cb22f6] Aaron Patterson 2024-02-14 19:49:10 UTC

YJIT で関数 rb_str_getbyte() の呼び出しのコード生成時に引数が T_FIXNUM の範囲の整数だとわかっている時は例外が発生しないので leaf として不要なレジスト退避などを省略する最適化。

[c9ed59c2e2] Aaron Patterson 2024-02-14 20:02:58 UTC

7943cb22f667cc4382e8ea3f7ca674c470f601c6 の YJIT の変更のオペランドの型情報のチェックで不要な変数宣言をやめています。

[ae8db4b65a] Peter Zhu 2024-02-14 20:52:15 UTC

gc.c の rb_cc_table_free() という関数が未使用になっていたので削除しています。

[72f8883a2f] Alan Wu 2024-02-14 20:23:38 UTC

YJIT の Rust 実装で長い関数から一部の処理を関数に切り出すリファクタリング

[28709d591d] Peter Zhu 2024-02-14 21:25:05 UTC

gc.c の cc_table_free() という関数から不要な引数 alive を削除しています。

[6f9ca7f453] Alan Wu 2024-02-14 21:50:58 UTC

YJIT の Rust 実装で Context.sp_opnd() という関数の引数の型を変更して呼び元での不要なキャストを減らすようにしています。 https://github.com/ruby/ruby/pull/9968

[d24be39d69] Benoit Daloze 2024-02-14 10:41:33 UTC

spec/ruby のテスト実行中のリソースの leak check を制御する環境変数 CHECK_LEAKS に追加して CHECK_CONSTANT_LEAKS という環境変数で定数の leak check のみ独立して有効にできるようにしています。 https://github.com/ruby/ruby/pull/9548

[95ec71efc5] Benoit Daloze 2024-02-14 10:44:34 UTC

GitHub Actions の workflows で環境変数 CHECK_LEAKS の設定を消していた cf8fb9429511068c69ce70da7f7818c7441c280b を revert しています。

[06ad00adc2] yui-knk 2024-02-14 12:55:30 UTC

同梱している Lrama のバージョンを 0.6.3 に更新しています。

[beeee54880] Takashi Kokubun 2024-02-14 23:57:24 UTC

7177731282bea651385818076d4fa6b9bdf717c0 で YJIT に導入したコード生成処理のプロファイル対応で定義したマクロの定義方法と使いかたを変更しているようです。 https://github.com/ruby/ruby/pull/9971

[c57880e68d] Nobuyoshi Nakada 2024-02-14 08:30:04 UTC

parse.y の ruby_show_error_line() という関数を static 関数から export する関数にして Encoding の設定時のエラーの例外に位置情報を含めるようにしています。

[8b061eeb22] ydah 2024-02-15 06:49:01 UTC

doc/packed_data.rdoc の typo 修正。

[317c1da62b] ydah 2024-02-15 06:49:30 UTC

doc/packed_data.rdoc の typo 修正。

[303852440a] ydah 2024-02-15 06:50:43 UTC

doc/contributing/building_ruby.md の typo 修正。

[aa6d0bc0bd] ydah 2024-02-15 06:51:40 UTC

doc/string/split.rdoc の typo 修正。

[25d74b9527] Yusuke Endoh 2024-01-19 07:03:38 UTC

例外メッセージ内でさらに文字列をクオートする時に `foo bar' みたいにバッククオートとシングルクオートの組み合わせて書くという慣習があったみたいですが、これをやめて両方シングルクオートで書くようにしています。これ自分も若干気持ち悪い慣習だなと思ってたのですが、変更範囲が広くてさらにエラーメッセージをチェックしているテストの追随もあって大きな差分になっています。 [ruby-core:96742] [Feature #16495]

[8259f35adc] Yusuke Endoh 2024-02-15 04:00:32 UTC

25d74b9527cd525042ad0b612b794fa331d3a318 の例外メッセージ内のクオートの方法の変更に追随して spec/ruby でのエラーメッセージのチェックを新旧どちらでも受付けるように正規表現でチェックするようにしています。

[d9234ba87b] Yusuke Endoh 2024-02-15 04:28:56 UTC

おそらく 25d74b9527cd525042ad0b612b794fa331d3a318 の例外メッセージの変更の影響で bundled gems のテストで失敗するものがあるので GitHub Actions でエラーを無視する bundled gems の指定に minitest, test-unit, debug, bigdecimal, drb を追加しています。

[92eab382e4] Yusuke Endoh 2024-02-15 05:09:41 UTC

bundler のテストでも 25d74b9527cd525042ad0b612b794fa331d3a318 の例外メッセージ内のクオート記号の変更に追随するため正規表現でどちらでも受付けるように修正しています。

[76d322b5d2] Hiroshi SHIBATA 2024-02-15 00:49:13 UTC

spec/default.mspec で spec/ruby のテストのうち gems/bundled_gems に記述されている bundled gems のライブラリについてのテストは make test-spec で実行除外するようにしています。

[1e6fffaeeb] Hiroshi SHIBATA 2024-02-15 02:05:35 UTC

common.mk に test-bundled-gems-spec というターゲットを追加して rubyspec のうち bundled gems についてのテストを実行することができるようにしています。

[121dfb38be] Hiroshi SHIBATA 2024-02-15 05:32:08 UTC

spec/default.mspec で定数の再定義の警告抑制のため defined? でチェックしてから代入するようにしています。

[fa7529afd5] Hiroshi SHIBATA 2024-02-15 05:49:56 UTC

spec/ruby のテストのうち bigdecimal によって組み込みクラスの Integer や Rational などのメソッドが拡張される部分のテストをそれらのクラスの spec ではなくて spec/ruby/library/bigdecimal/ の配下に移動して bundled gems のテストの一部として扱われるようにしています。

[4a00fcbd92] Hiroshi SHIBATA 2024-02-15 07:39:14 UTC

spec/ruby の bundled gems の net-xxx のテストのディレクトリ構成を spec/ruby/library/net/xxx/ の配下にしていたのを spec/ruby/library/net-xxx/ の配下になるように変更しています。

[6958e88f29] Hiroshi SHIBATA 2024-02-15 07:59:46 UTC

common.mk の make test-bundled-gems-spec ターゲットの依存関係に $(PREPARE_BUNDLED_GEMS) を追加して bundled gems のダウンロードとインストールを行うようにしています。

[61819c87b2] Yusuke Endoh 2024-01-18 10:35:49 UTC

Thread::Backtrace::Location の実装で構造体内にメソッド名の ID とメソッドの実装のタイプが ISeq (ruby 実装)か C関数実装かのタイプを持っておいてあとでタイプに応じて実装を変更してたのを rb_callable_method_entry_t を直接メンバーとして持つように変更しています。 [Feature #19117] のバックトレースの強化のための準備としての変更みたいです。

[9d1b000bd1] Yusuke Endoh 2024-02-15 05:23:01 UTC

ruby の例外のバックトレースでメソッドのメソッド名だけでなくどのクラスで定義されたメソッドかというのまで表示されるようにしています。なるほどこれは便利そう。 [ruby-core:110683] [Feature #19117]

[8f2c231642] Yusuke Endoh 2024-02-15 07:00:51 UTC

9d1b000bd1bb747bcc49e2d7677fb7c2b31c5a94 の変更でバックトレースの表示が変化してしまうので rubyspec でそれをチェックしているところを正規表現で新旧どちらも受付けるように修正しています。 [ruby-core:110683] [Feature #19117]

[8f926cb8d8] Benoit Daloze 2024-02-15 10:34:41 UTC

common.mk の test-spec-precheck の依存関係から prepare-gems を削除しています。 76d322b5d2566162cdcb926a80be8f596a50f107 で make test-spec で bundled gems のテストは実行しなくなったため。

[8ba053d3fb] Hiroshi SHIBATA 2024-02-15 10:01:44 UTC

spec/ruby の bundled gems になった標準添付ライブラリのテストを ruby の version による guard で実行除外していたのをやめています。これも 76d322b5d2566162cdcb926a80be8f596a50f107 で実行対象から外したためでしょう。

[1e426bd5e5] Hiroshi SHIBATA 2024-02-15 10:26:25 UTC

make bundled-gems-spec の実行対象から net-ftp は外しています。

[4aef875205] Hiroshi SHIBATA 2024-02-15 10:26:58 UTC

spec/default.mspec で定数の再定義の警告抑制のため dsefined? でチェックしてから代入するようにしています。

[18da80e100] Hiroshi SHIBATA 2024-02-15 10:36:07 UTC

rubyspec の net-ftp のテストで新しい ruby で失敗するものがあったので ruby_version_is で 3.0 以前でのみ実行するようにしています。

[0da12fa34e] Hiroshi SHIBATA 2024-02-15 11:07:52 UTC

common.mk の make test-bundled-gems-prepare でインストールする gem のリストに singleton を追加しています。 prime.gem が依存しているとのこと。

[a7718c914a] Yusuke Endoh 2024-02-15 11:04:23 UTC

9d1b000bd1bb747bcc49e2d7677fb7c2b31c5a94 のバックトレースのメソッド名にクラス名も表示する変更で無名クラスのメソッドの場合に inspect 結果が表示されていたのでその時はメソッド名のみの従来と同じ表示にするように変更しています。