ruby-trunk-changes 2022-11-04

今日は主に標準添付ライブラリ erb の escape_html の実装の独自の拡張ライブラリ化、YJIT の不具合修正、irb のテストのリファクタリングなどがありました。

[0468136a1b] Peter Zhu 2022-11-02 19:21:50 UTC

string.c の str_alloc() という関数の定義を削除して 2箇所の呼び元にそれぞれインラインで展開して、str_alloc_heap() で返す文字列オブジェクトは flags に STR_NOEMBED を立てて返すようにして、str_alloc_heap() の呼び元であらためて立ててたのをやめるようにしています。

[68ef97d788] Takashi Kokubun 2022-11-03 15:42:28 UTC

YJIT の Rust 実装でメモリ書き込み時のカーソルの更新処理が YJIT 用 GC の導入により不具合が発生していたようなので修正しています。 https://github.com/ruby/ruby/pull/6664

[c5d6a483f5] Stan Lo 2022-11-03 16:32:10 UTC

標準添付ライブラリ irbIRB::RubyLex#set_input のキーワード引数 context を必須キーワード引数に変更しています。そして nil が渡された時の対応を削除していますが、明示的に nil を渡すことも可能なのでそれ消さなくてもなーという気はします。

[00f559641a] Stan Lo 2022-11-03 17:12:31 UTC

irbIRB::RubyLex のテストで irb/ruby-lex のみ require していたのを irb 全体を require するように変更しています。

[124f10f56b] Takashi Kokubun 2022-11-03 17:33:49 UTC

YJIT の Rust 実装のメソッド呼び出しのコンパイルで使っていた不要な型 CapturedSelfOpnd を削除しています。 https://github.com/ruby/ruby/pull/6661

[611b5e7f40] Takashi Kokubun 2022-11-03 17:34:46 UTC

irbc5d6a483f5f771aa904ea85dad35a368ddf8047a でのテストの変更で IRB::Context を生成するために必要な処理を追加しています。

[ea77aa2fd0] Takashi Kokubun 2022-11-03 17:41:35 UTC

YJIT の実行コード用のメモリ領域の GC の起動回数のカウンタを --yjit-stats をつけなくても利用できるようにしています。 https://github.com/ruby/ruby/pull/6665

[01d7e15757] Takashi Kokubun 2022-11-03 17:42:29 UTC

YJIT の統計情報を出力する --yjit-stats の出力項目に side_exit_count を追加しています。脱最適化というか JIT コンパイルしたコードから抜けて通常のメソッド呼び出しとかに fallback した回数かな。 https://github.com/ruby/ruby/pull/6666

[56884b64de] Takashi Kokubun 2022-11-03 17:41:57 UTC

irb のテストに Gem::Version によるバージョンの比較のために必要だったみたいで require "rubygems" を追加しています。

[5344618cb7] Yusuke Nakamura 2022-11-03 16:13:26 UTC

IO::Buffer#slice のための rdoc 用コメントがメソッド定義に使われてる関数の前じゃないところに置かれていてドキュメント化に失敗していたみたいなので位置を修正しています。

[d24ac6d281] Peter Zhu 2022-11-03 20:58:39 UTC

doc/contributing/building_ruby.md の configure コマンド実行の例に --prefix オプションを追加しています。正確には他のところには元からついているのですが --disable-install-doc をつける例のところに付いてなかったので一緒につけてもいいということを明示するために追加しているようです。

[a13836e70d] Takashi Kokubun 2022-11-03 22:09:51 UTC

irb にはコマンドの alias を定義することができるそうで、その文字列に記号を含めることができるようにしています。

[a923203811] Stan Lo 2022-11-03 22:13:07 UTC

標準添付ライブラリ irb のテストのテストクラスに共通の TestIRB::TestCase という親クラスを定義して入出力の Encoding の変更を復旧させる処理をまとめています。

[1956fb9b78] Takashi Kokubun 2022-11-04 00:26:50 UTC

make benchmark で利用する benchmark-driver のバージョンを更新しています。

[570dee15a6] Nobuyoshi Nakada 2022-11-04 06:17:49 UTC

tool/sync_default_gems.rb でコミットログの整形のための --message-filter オプションつきで起動された時のモードでメッセージを標準入力から読むと固定せず ARGF から読むことで引数でファイル指定する呼びかたもできるようにしています。呼ぶほうは変わってないので手元でデバッグ的に実行するためかな。

[b6d7e98f25] Nobuyoshi Nakada 2022-11-04 06:18:36 UTC

tool/sync_default_gems.rb で upstream からコミットを cherry-pick してくる時に元のコミットの GitHub の URL を埋め込むのを Co-Author-By の記述の前にするための正規表現の前方先読みがログ本文がない時に空振りすることがあったみたいなので前に入れるため正規表現を修正しています。

[dc5d06e9b1] Takashi Kokubun 2022-11-03 05:28:45 UTC

標準添付ライブラリ erb に拡張ライブラリ erb.so を追加して ERB::Escape という Module を定義しています。この実装は標準添付ライブラリ cgi の GCI.escapeHTML の内容をコピーしてきているようです。なおなければないで元の ERb::Util.html_escape が実行されるだけなので拡張ライブラリがビルドできなくても動作はするみたいです。

[20efeaddbe] Takashi Kokubun 2022-11-04 06:26:53 UTC

dc5d06e9b145f7d5f8c5f7c3757b43f2d68833fd で移植してきた標準添付ライブラリ erb の拡張ライブラリによる escape_html の実装で引数を to_s メソッドを rb_funcall() で呼び出して変換していたのを rb_convert_type() で必要に応じて呼ぶように最適化しています。 [ruby-core:110603] [Feature #19102]

[ccf32a5ca4] Takashi Kokubun 2022-11-04 06:34:09 UTC

20efeaddbe246f3b2eaee4f17f54a814777176a8 の続きで標準添付ライブラリ erb の拡張ライブラリでの escape_html の実装で変更が不要な時に文字列オブジェクトのコピーを生成しないようにしています。 [ruby-core:110603] [Feature #19102]

[2bb89b7f11] Samuel Williams 2022-11-04 07:13:48 UTC

Fiber のマシンスタック領域のメモリ解放の実装で madvise(2) の引数になにを使うかを preprocessor で分岐してるところで、まず WASI 版では madvise() が未サポートなので呼び出さないようにして、また POSIX_MADV_DONTNEED という定数マクロがあればそれを優先していたのを最後に回して各プラットフォームの独自の定数のほうを使うようにしています。 https://github.com/ruby/ruby/pull/6671 [ruby-core:110594] [Bug #19101]

[7e3af23d1d] Nobuyoshi Nakada 2022-11-04 07:22:21 UTC

b6d7e98f2540500f072c5cc0f136cae69f80055c での tool/sync_default_gems.rb の commit url を Co-Author-By の前に入れるための置換時に前の行の有無を判定するためのグループのインデックスが間違ってたのを修正。

[cb18deee72] Nobuyoshi Nakada 2022-11-04 08:38:28 UTC

拡張ライブラリ socket の extconf.rb で mkmf.rb の checking_for メソッドを利用してメッセージを強化しています。また macOS で netinet6/in6.h がない? ので netinet/in.h というヘッダから内容を一部変更して作成するという処理(こんなことしてたのか)のが netinbet/in.h が /usr/include/ からなくなっているバージョンがあるみたいで clang -include コマンドを利用して実体のファイルパスを探して読み込むように対応しています。

[ed9d761217] Nobuyoshi Nakada 2022-11-04 09:19:30 UTC

tool/mkconfig.rb で変数などを展開する処理で $(target_cpu)、$(target)、$(host_os)、$(host_cpu) などの変数名に対応するようにしています。

[b83074dac7] Nobuyoshi Nakada 2022-11-04 11:43:12 UTC

irb のテストで警告を抑制するために局所的に IRB.conf[:VERBOSE]=false をセットしておくようにしています。