ruby-trunk-changes 2021-07-25

今日は大量の gem がある時などの require のパフォーマンス改善の変更がありました。

[b360588cd3] Nobuyoshi Nakada 2021-07-12 16:03:26 UTC

大量の gem が存在するため $LOADED_FEATURES が大きくなると require が遅くなっていくのを低減するため $LOADED_FEATURE にファイルの拡張子の違いによる優先度を反映したソートをしておくことで不要な繰り返しの探索を避けられるようにしています。同じ feature name だと拡張子が .rb のほうが優先ですが、$LOADED_FEATURES は load した順序そのままなので先に .so などの拡張ライブラリのほうが先にヒットすると再度検索する必要があって遅くなっていたようです。 [ruby-core:92686] [Bug #15856]

[02facb86da] git 2021-07-25 11:07:55 UTC

version.h の日付更新

ruby-trunk-changes 2021-07-24

今日は rb_enc_sprintf() などで文字列オブジェクトを埋め込んだ時のエスケープの挙動の変更などがありました。

[eec45a93ef] Nobuyoshi Nakada 2021-07-24 05:24:18 UTC

文字列を sprintf などで比表示文字をエスケープして表示する時に rb_str_inspect() を利用していたのを rb_str_escape() を利用するように変更しています。クオート文字までエスケープされてしまうのを避けるためみたいです。

[971d24cd97] git 2021-07-24 08:58:57 UTC

version.h の日付更新

ruby-trunk-changes 2021-07-23

今日は finalizer の処理内での例外を警告出力するようにする変更や irb の字句解析の不具合修正などがありました。

[018f3961ae] Peter Zhu 2021-07-22 13:19:04 UTC

gc.c の finalize_list() の中で引数 zombie のオブジェクトの struct RBasic::flags を 0 にクリアしていたのをやめています。この後で呼んでいる obj_free_object_id() の中でもクリアされているので冗長だからみたいです。

[62661dd9e4] Peter Zhu 2021-07-22 13:28:05 UTC

同じく gc.c の finalize_list() で heap_page_add_freeobj() の引数に渡すためのオブジェクトの slot が所属している page を GET_HEAP_PAGE() で取得していたのを既に変数に格納済みのものを使いまわすようにリファクタリングしています。

[86e0eecc84] manga_osyo 2021-07-20 13:25:32 UTC

irb の字句解析器 IRB::RubyLex で :1 のように数字が後続する Symbol リテラルを許容するようにしているようです。が、数字だけの Symbol リテラルってありでしたっけ? 試してみたら SyntaxError になったけど。
と、思ったけど https://github.com/ruby/irb/issues/256 をみると irb で parse が終わらないために評価が始まらなくてそもそも SyntaxError にすらできないという不具合の修正みたいです。

[fc78a08904] git 2021-07-22 18:13:31 UTC

version.h の日付更新

[4da07ac2f3] Nobuyoshi Nakada 2021-07-22 14:21:28 UTC

finalizer の定義時に $SAFE の safe level を保存しておいて実行時に適用するための機構がまだ残っていたのを消しているようです。

[b726c4ee38] Nobuyoshi Nakada 2021-07-22 14:46:03 UTC

ObjectSpace.define_finalizer の実装で同じ finalizer を登録しないようにするチェックで rb_funcall() を利用していたのを直接 rb_equal() を呼ぶようにしています。

[63e5f4df38] Nobuyoshi Nakada 2021-07-22 15:31:20 UTC

gc.c の run_finalizer() で rb_execution_context_t::errinfo の操作に rb_set_errinfo() と rb_errinfo() という API を利用していたのを、ここで扱う ec を変数として持っているので直接構造体のメンバーにアクセスするように変更しています。毎回 GET_EC() するのが無駄だからかな?

[fc4dd45d01] Nobuyoshi Nakada 2021-07-22 15:32:09 UTC

finalizer の処理内で例外が発生した時に警告メッセージを出力するようにしています。 [ruby-dev:51050] [Feature #17798]

[377995035a] Nobuyoshi Nakada 2021-07-22 15:44:19 UTC

fc4dd45d0142221880d1b2c9b54dee0597be2b78 で finalizer 内の例外メッセージを警告出力するようにしましたが $VERBOSE が nil 以外に設定されていた時(-w や -W1 以上のコマンドラインオプションが渡されてた時)のみ出力するようにしています。また GC のテストで警告が出る場合があるものがあったので EnvUtil.suppress_warning で抑制するようにしています。 [ruby-dev:51050] [Feature #17798]

[5385731374] Nobuyoshi Nakada 2021-07-23 03:41:01 UTC

NEWS のリンク用の footer の記述を整形しています。

[8cc18703cf] Nobuyoshi Nakada 2021-07-23 03:41:34 UTC

fc4dd45d0142221880d1b2c9b54dee0597be2b78 の finalizer での例外の警告出力について NEWS に追記しています。 [ruby-dev:51050] [Feature #17798]

ruby-trunk-changes 2021-07-22

今日はヒアドキュメント内での式展開の不具合修正などがありました。

[b940a45357] eileencodes 2021-07-20 17:53:22 UTC

ヒアドキュメント内の式の埋め込みが内容によってうまく展開されないのを修正しています。式展開内に式展開を含む文字列リテラルがあった時など。 [ruby-core:104597] [Bug #18038]

[f5f7010613] git 2021-07-21 17:06:59 UTC

version.h の日付更新

[31144fe987] Peter Zhu 2021-07-21 17:56:32 UTC

gc.c の gc_verify_internal_consistency_() (typo ではない) で objspace_each_objects() を使って全オブジェクトについて呼び出してたのを heap_pages_sorted について直にループして解放済みの slot についても verify_internal_consistency_i() を呼び出すようにしています。コミットログによると tomb heap を対象にするためみたいです。

[a4e39112a8] Nobuyoshi Nakada 2021-07-20 14:21:05 UTC

util.c の ruby_scan_oct() と ruby_scan_hex() の scan したサイズを返す時に int にキャストしていたのを引数の型にあわせて size_t にキャストするように修正しています。

[e3cda75436] Nobuyoshi Nakada 2021-07-22 00:58:23 UTC

hash.c の rb_hash_stlike_update() で ar_update() や st_update() に渡す key が元々 st_data_t なのに st_data_t へのキャストが書かれたままになってたので不要なキャストを削っています。

[e882905d0d] S-H-GAMELINKS 2021-07-11 04:56:03 UTC

range.c の sym_each_i() で rb_yield() が使われていたのをほぼ同じ内容の each_i() に委譲するようにしています。

[d6b8819b79] S-H-GAMELINKS 2021-07-13 11:41:50 UTC

rb_proc_call_with_block() もほぼ同じ内容の rb_proc_call_with_block_kw() に RB_NO_KEYWORDS を最後の引数を渡して委譲するようにリファクタリングしています。

[e4b68ab700] Ulysses Zhan 2021-07-22 05:10:57 UTC

doc/regexp.rdoc のメタキャラクタ "|" についての説明を 3つ以上の正規表現を連結できるというふうに変更しています。まあ 2つの連結が連続してると解釈してもいいので、正直どっちでもいいような気もしますが。

[fc50b2eae5] "S.H" 2021-07-22 06:41:03 UTC

process.c から未使用になってる mutex/cond 関係の関数群の前方宣言を削除しています。

[75f60e5a46] Nobuyoshi Nakada 2021-07-22 02:25:48 UTC

sprintf.c の quad_t 型の定義についての preprocessor 分岐を整理して不要な分岐を消しています。

ruby-trunk-changes 2021-07-21

今日は主に bundled gems の typeprof と rbs の更新がありました。

[bc1323ce5c] Nobuyoshi Nakada 2021-07-20 10:21:37 UTC

object.c の rb_check_to_integer() でオブジェクトのタイプのチェックに RB_INTEGER_TYPE_P() を使うようにリファクタリングしています。

[42745ecae3] Nobuyoshi Nakada 2021-07-20 10:33:25 UTC

rubyspec の IO#close_on_exec= の戻り値をチェックしているテストを削除しています。 [ruby-core:102998] [Feature #17745]

[1c80e0e6b0] Nobuyoshi Nakada 2021-07-21 07:28:04 UTC

gems/bundled_gems の typeprof のバージョンをコミットハッシュ指定にしています。 rbs の 1.3 の対応のために typeprof にも変更が必要になったみたいです。

[b2749e0026] git 2021-07-21 08:40:23 UTC

version.h の日付更新

[04b5e85bfd] Nobuyoshi Nakada 2021-07-20 10:54:59 UTC

util.c の ruby_scan_hex() という関数で strchr(3) を使った実装を ruby_digit36_to_number_table という配列テーブルを利用した実装に変更しています。

[c25cf1eaaa] Nobuyoshi Nakada 2021-07-21 11:44:13 UTC

tool/update-bundled_gems.rb で gems/bundled_gems のコミットハッシュを書く記法の時にはそれを取り除くようにしています。

[fa308a683d] Nobuyoshi Nakada 2021-07-21 11:44:34 UTC

gems/bundled_gems の typeprof と rbs をそれぞれ 0.15.0 と 1.3.1 に更新しています。

ruby-trunk-changes 2021-07-20

今日は irbirb_info コマンドの Windows での端末の言語設定が英語じゃない時の対応などがありました。

[2e67043041] Kazuhiro NISHIYAMA 2021-07-20 05:46:46 UTC

036f26a4e24d7e6e8de30aa7e3cedb19f7da88b0 の switch 文の fall through コメントを UNREACHABLE マクロを置くのに変更しています。

[5e7675d442] git 2021-07-20 05:47:50 UTC

version.h の日付更新

[261dca2ee2] aycabta 2021-07-17 10:49:32 UTC

irb の builtin command irb_info で Windows 版の時に chcp の出力を表示する時に、出力メッセージが英語じゃない場合にそなえて切り出すための正規表現のマッチ条件を緩めています。

ruby-trunk-changes 2021-07-19

今日は標準添付ライブラリ racc の更新などがありました。

[8a6ef5ef8f] Nobuyoshi Nakada 2021-07-18 11:51:30 UTC

Exception#full_message のキーワード引数 highlight に true/false/nil 以外が渡された時の例外発生を rb_bool_expected() という関数を利用するようにして、また rb_bool_expected() のメッセージも少し変更しています。

[a541fe1a75] Burdette Lamar 2021-07-18 22:43:34 UTC

doc/method_documentation.rdoc を doc/documentation_guide.rdoc というファイル名に変更したうえで内容も書き換えてるっぽいです。 https://github.com/ruby/ruby/pull/4600

[bac5ec0f06] git 2021-07-18 22:43:56 UTC

version.h の日付更新

[91ffce8f24] Yusuke Endoh 2021-06-30 04:39:45 UTC

did_you_mean のテストで assert_match の第1引数が正規表現リテラルなので文法の警告抑制のためメソッド呼び出しの明示的なかっこを追加しています。

[ab2bd3ff35] Yusuke Endoh 2021-07-19 01:57:56 UTC

拡張ライブラリ openssl のテストで未使用のローカル変数への代入が警告が出てたので削除しています。

[7217f60bb3] Hiroshi SHIBATA 2021-07-19 02:22:21 UTC

拡張ライブラリ racc の lib/racc/pre-setup という既に使われなくなっているスクリプトを削除しています。

[b5b3cd2722] Hiroshi SHIBATA 2021-07-19 02:28:10 UTC

標準添付ライブラリ racc の lib/racc/rdoc/grammar.en.rdoc というドキュメントのファイルを削除しています。また gemspec ファイルの spec.files に doc/en/grammar2.en.rdoc というファイルパスの指定を追加しています。重複してドキュメントファイルが含まれてたみたいですね。

[dbcfc8d499] Hiroshi SHIBATA 2021-07-19 02:32:25 UTC

同じく標準添付ライブラリ racc の gemspec ファイルの spec.files から sample/ の中の *.y ファイルや RakefileJRuby 向けの .java のファイルを削除しています。

[95dd461387] Hiroshi SHIBATA 2021-07-19 02:32:41 UTC

同じく標準添付ライブラリ racc の gemspec ファイルの spec.files から 7217f60bb344d2e97fb6bf3ae6cf29c7f5ca7dbf で削除した lib/racc/pre-setup も削除しています。

[fa239e0479] Nobuyoshi Nakada 2021-07-19 08:18:51 UTC

common.mk の update-bundled_gems のコマンドで $(IFCONFIG) の変数展開をダブルクオートで囲んでいたのをやめています。unneeded とありますがこれって囲んでても問題はないですよね?

[036f26a4e2] Kazuhiro NISHIYAMA 2021-07-19 08:21:45 UTC

error.c の exc_full_message() で switch 文の例外発生させる rb_bool_expected() のあとに break がないため警告が出てたので /* fall through */ というコメントを追加しています。しかしこれは rb_bool_expected() から戻ってこないことがわかっているからなので break を入れるか UNREACHABLE() を書くのが良いのではないかと。