ruby-trunk-changes 2023-08-18

今日は主に yarp のビルド/パッケージ作成関係のビルドプロセスのための変更や YJIT の最適化、拡張ライブラリ io/console の IO#getpass の修正などがありました。

[30a5b94517] Maxime Chevalier-Boisvert 2023-08-17 14:11:17 UTC

YJIT の VM 命令 setlocal での side exit 抑制のために複数のクラス候補に対応する対応を追加。 https://github.com/ruby/ruby/pull/8227

[75a4767525] Ngan Pham 2023-08-13 02:16:20 UTC

bundler で Gemfile の ruby のバージョン指定に .ruby-version ファイル を指定するオプションの対応を追加しています。

[81d715099c] Kevin Newton 2023-08-15 13:18:44 UTC

yarp の更新を同期しています。

[40002dd7dc] Takashi Kokubun 2023-08-17 00:57:34 UTC

yarp に upstream からマージしています。

[f50e814dae] Takashi Kokubun 2023-08-17 17:01:54 UTC

yarp に upstream からマージしています。

[818998b41b] Takashi Kokubun 2023-08-17 17:27:32 UTC

tool/sync_default_gems.rb の yarp の更新時に無視するファイルのパターンの正規表現から .gitignore と .github/ のぶんは .git.* で吸収されるので削除しています。

[52506cbf51] Peter Zhu 2023-08-16 17:54:55 UTC

rb_objspace_t::total_allocated_objects という構造体メンバーを rb_size_pool_t::total_allocated_objects に移動しています。 Variable Width Allocation による slot サイズの異なる heap 毎にカウントして必要な時に総和を取るようにしています。これに伴ない GC.stat_heap の返す Hash に total_allocated_objects という項目を追加しています。

[5db8b9b366] Peter Zhu 2023-08-16 18:05:32 UTC

52506cbf516da1a606fad6a6779ab6136c4f353b と同様に rb_objspace_t::total_freed_objects という構造体メンバを rb_size_pool_t::total_freed_objects に移動して slot サイズ別の heap ごとにカウンタを持つようにして、GC.stat_heap に :total_freed_objects という項目を追加しています。

[57ec167306] Takashi Kokubun 2023-08-17 20:57:11 UTC

tool/sync_default_gems.rb の yarp の同期時に無視するファイルのパターンに rust/ ディレクトリ配下のファイルを追加しています。

[9683eb06cf] Alan Wu 2023-08-17 20:18:12 UTC

YJIT の respond_to? の実装で rb_f_notimplement() 関数によってメソッド定義されているメソッドの場合に false を返すようにする対応を追加しています。

[5d48825d55] Alan Wu 2023-08-17 20:46:56 UTC

YJIt の String#<< メソッドの独自実装で String を継承したクラスのインスタンスの場合に型チェックが間違ってたのを修正しています。

[67b5f63e97] Takashi Kokubun 2023-08-17 21:39:04 UTC

yarp のソースコードのうち自動生成するものはコミットせずに common.mk に生成するルールを対あしています。 https://github.com/ruby/ruby/pull/8228

[72a16c61dc] Takashi Kokubun 2023-08-17 21:52:22 UTC

common.mk の yarp 関連のファイルへの main ターゲットからの依存関係を追加しています。うまく再生成されなかった?

[78e7fd7b49] Takashi Kokubun 2023-08-17 22:03:01 UTC

72a16c61dc6c6f5b55cd6b33d64a06baf919c93f と同様に common.mk で srcs から yarp の自動生成されるファイルへの依存関係を追加しています。パッケージ作成時にもソースコードなどを生成しておくようにするため。

[e504c36894] Takashi Kokubun 2023-08-17 22:06:57 UTC

tool/sync_default_gems.rb で yarp の yharp/enc/ 配下のファイルに yp_ という prefix を追加する処理を書いてたのが不要になったみたいで削除しています。

[e913431687] Martin Emde 2023-08-15 17:39:46 UTC

rubygems のパッケージファイルの解析処理で意図せず EOF があった時に Gem::Package::FormatError 例外を発生させて不正なパッケージとして検出できるようにしています。これまで使ってた UnexpectedEOF という例外クラスは削除しています。

[434cbc05f3] Takashi Kokubun 2023-08-18 00:54:42 UTC

tool/sync_default_gems.rb のヘルプメッセージに -a オプションの説明を追加しています。

[ad2bad4ab4] Takashi Kokubun 2023-08-18 00:58:32 UTC

tool/sync_default_gems.rb で default gems の upstream から cherry-pick する処理で rubygems の場合に自動的に conflict 解消を試す処理を conflict がない時に通らないようにしています。

[43802a088e] Olivier Lacan 2023-08-18 00:28:16 UTC

拡張ライブラリ io/console の IO#getpass の rdoc 用コメントにサンプルコードを追加しています。

[540cf43205] Nobuyoshi Nakada 2023-08-18 01:33:25 UTC

拡張ライブラリ io/console で IO#getpass メソッドが定義できるかどうか ENABLE_IO_GETPASS というマクロで分岐していたのを消して常に定義するようにしています。

[528da4347c] Nobuyoshi Nakada 2023-08-18 01:36:37 UTC

拡張ライブラリ io/console の IO#getpass の実装でプロンプト表示後に rb_io_flush() を呼んでバッファリングの設定によらず出力させるようにしています。

[cff8058701] Nobuyoshi Nakada 2023-08-18 02:46:04 UTC

拡張ライブラリ io/console の IO#getpass の実装で入力を受け付けた後で改行が出力されるのを rb_ensure() で大域脱出時にも出力するようにしています。

[818ba30ee9] Nobuyoshi Nakada 2023-08-18 03:19:25 UTC

拡張ライブラリ io/console の実装で入力の末尾の改行コードを削除する処理で String#chomp! メソッドを rb_funcall() で呼んでたところで引数に $/ の値(rb_default_rs) を明示的に渡すようにしています。

[412defc7ad] Nobuyoshi Nakada 2023-08-18 03:46:43 UTC

818ba30ee9e188c59385a56bc7560f43e90bce94 の続きで拡張ライブラリ io/console の文字列の末尾改行を消すための String#chomp! メソッド呼び出し時に rb_default_rs を渡すためにポインタを取得するのを事前に変数に格納しておいてそのポインタを使うようにしています。よくわかりませんが TruffleRuby 対応のためみたいです。TruffleRuby ではマクロで関数呼び出しになってるとかかな。

[7a2aeadb78] Takashi Kokubun 2023-08-18 04:45:34 UTC

tool/sync_default_gems.rb の同期処理のコードにコメントを追加しています。

[6a6dacb0d1] Takashi Kokubun 2023-08-18 05:04:24 UTC

tool/sync_default_gems.rb の upstream からの cherry-pick 処理での conflict 解消の処理に yarp 向けの新規ファイル追加時のセクションを追加しています。

[2046e054bc] Takashi Kokubun 2023-08-18 07:07:01 UTC

common.mk の yarp の自動生成ファイルのルールなどのところで {$(VPATH)} を利用するようにしています。 Windows の nmake のためかと思ったら OpenBSD 向けだそうです。

[aba26a8804] Takashi Kokubun 2023-08-18 07:34:36 UTC

common.mk の依存関係を再生成しています。

[e327bf32bd] Takashi Kokubun 2023-08-18 07:48:13 UTC

win32/Makefile.sub にも yarp の自動生成されるファイル群のためのルールを追加しています。 https://github.com/ruby/ruby/pull/8244

[6fff5c5ba2] Takashi Kokubun 2023-08-18 08:07:05 UTC

tool/update-deps で yarp の一部のソースコードへの依存関係を出力しないようにしています。

[57dfd5c245] Takashi Kokubun 2023-08-18 08:12:13 UTC

直近の yarp の自動生成ファイル群についての OpenBSD 向けの変更などを revert しています。 https://github.com/ruby/ruby/pull/8244

[20106fe227] License Update 2023-08-18 03:21:41 UTC

rubygems保有するライセンス一覧の定数に新たなライセンス名を追加しています。