ruby-trunk-changes 2022-06-10

今日は YJIT のトレース情報を得るメソッドの追加や TracePoint をブロックを使って定義したメソッドを target とした時にメモリリークすることがあった不具合の修正などがありました。

[27eb36596a] Jeremy Evans 2022-05-26 17:45:36 UTC

IO#readlines や IO#foreach などが第4引数を受付けてしまう(しかし使ってない)のを修正しています。4つ引数を渡すと ArgumentError が発生するようにしています。なにかの名残りで rb_scan_args() が 1つの必須引数と 3つの省略可能引数を受付けるように呼ばれていたようです。 [ruby-core:108503] [Bug #18771]

[1b5828f9a6] git 2022-06-09 15:22:27 UTC

version.h の日付更新

[473ee328c5] "Eileen M. Uchitelle" 2022-06-09 16:59:39 UTC

YJIT のトレース情報をダンプする RubyVM::YJIT.dump_exit_locations というメソッドを新設して --yjit-trace-exits オプションをつけて実行された時に exit した位置(この exit はプロセスの終了じゃなくて JIT コンパイルされた処理から抜けるという意味かな)の情報をダンプするようにしています。 https://github.com/ruby/ruby/pull/5970

[adcfd69690] Alexander Ilyin 2022-06-09 18:40:21 UTC

String の rdoc 用コメントの markup の間違いを修正しています。 https://github.com/ruby/ruby/pull/5984

[c2468fd88b] Burdette Lamar 2022-06-09 20:03:21 UTC

標準添付ライブラリ fileutils の rdoc 用コメントの手直し。 https://github.com/ruby/fileutils/pull/82

[e69e47f8d6] "Eileen M. Uchitelle" 2022-06-09 21:59:41 UTC

https://github.com/ruby/ruby/pull/5970 の RubyVM::YJIT.dump_exit_locations の追加時に追加した YJIT のテストで toplevel return する条件に RubyVM::YJIT.trace_exit_locations_enabled? を加えてしまっていたので、起動する子プロセスで判定させるように修正しています。 https://github.com/ruby/ruby/pull/5995

[cedc36ec57] Takashi Kokubun 2022-06-09 23:17:25 UTC

MJIT のテスト test/ruby/test_mjit.rb で不要になった shellwords の require を削除しています。

[e75cb61d46] Alan Wu 2021-07-14 23:44:26 UTC

複数の TracePoint をブロックを渡して Module#define_method などで定義したいわゆる bmethod の呼び出しを target として指定して同時に有効化するとメモリリークが発生していた不具合を修正しています。 [ruby-core:104548] [Bug #18031]

ruby-trunk-changes 2022-06-09

今日は GC.stat_heap の返す Hash のキー追加や C のバックトレース取得の不具合修正などがありました。

[a07acbe417] Burdette Lamar 2022-06-08 12:34:47 UTC

標準添付ライブラリ fileutils の rdoc 用コメントに fileutils のドキュメントのサンプル全体で使うという態でメソッド定義をしておいてサンプルでそのメソッドを呼ぶという例の書きかたをしています。うーん、これありなのか? メソッド単体でみた時に自己完結してないのは。

[fafe68185c] Peter Zhu 2022-06-08 14:03:00 UTC

GC.stat_heap が返す Hash オブジェクトのキーに :force_major_gc_count を追加しています。

[d1b6c8a1cc] Peter Zhu 2022-06-08 15:25:31 UTC

fafe68185c1c39949d69754cfac5a15c3438ec08 とも関連して構造体 rb_size_pool_t のメンバー force_major_gc_count を Variable Width Allocation が有効でないビルドの時にも定義するようにしています。

[08a6ec341e] git 2022-06-08 15:26:19 UTC

version.h の日付更新

[8d57336360] Peter Zhu 2022-06-08 15:05:53 UTC

gc.c の gc_sweep_finish_size_pool() で空きを作るために major GC をトリガーする条件を強めて、GC しても page が増えない heap で誤って GC を起動してしまうことがあったみたいなのでこれを避けるためとのこと。rb_size_pool_t::allocatable_pages ってなにが入ってるんだろう。

[5a4f997b2e] Koichi Sasada 2022-06-08 07:14:20 UTC

デバッグログ用のマクロからの出力を絞る環境変数 DEBUG_LOG_FILTER に関数名やファイル名での指定をするための func: や file: といった prefix の対応を追加しています。

[da883af42a] Takashi Kokubun 2022-06-08 17:49:00 UTC

MJIT で MinGW 以外の Windows 環境では JIT コンパイルで .c のソースファイルから一旦 .o ファイルを作るのをやめて共有ライブラリへ直接コンパイルするようにしています。 https://github.com/ruby/ruby/pull/5987

[9b7208fca1] Burdette Lamar 2022-06-08 20:37:57 UTC

標準添付ライブラリ fileutils の rdoc 用コメントの手直し。

[67a9845a7a] Kazuhiro NISHIYAMA 2022-06-09 00:30:56 UTC

5a4f997b2e8e819ed40731cd769826112072a9d4 での ruby_debug_log_filter() の引数追加に vm_debug.h での宣言を追随させています。

[2931957d6f] Takashi Kokubun 2022-06-09 03:47:40 UTC

MJIT のテストで macOS で作られる .bundle.dSYM/ が残るために失敗するテストを skip するようにしています。

[90b240d127] Takashi Kokubun 2022-06-09 05:38:50 UTC

MJIT で JIT コンパイルのために生成するソースコードで ISEQ_BODY() というマクロを利用するようにリファクタリングしています。

[bda4d91f05] Yusuke Endoh 2022-02-28 07:56:30 UTC

doc/case_mapping.rdoc の Unicode の仕様へのリンクの URL とタイトルを修正しています。 [ruby-core:107624] [Bug #18590]

[4e21b19a61] Jean Boussier 2022-06-08 13:44:32 UTC

標準添付ライブラリ timeout の利用する Thread を 1つにした変更で Process.clock_gettime を利用するようにしてましたが、これがテストで mock された時にうまく動かなくなるので Method オブジェクトを取り出して定数に格納しておいてそれを利用するように変更しています。うーんなるほどなぁ……。しかしそれはテストのほうをなんとかして欲しい気もする。

[940c8b093d] xtkoba 2021-04-30 14:03:02 UTC

addr2line.c で C のバックトレースを得る時に Dl_info のメンバーが NULL になることがあるのに対応するようにしています。 [ruby-core:103491] [Bug #17810]

ruby-trunk-changes 2022-06-08

今日は String#@+ メソッドの YJIT による最適化の追加などがありました。

[c4bf24ee46] Peter Zhu 2022-06-06 19:41:59 UTC

gc.c の heap_prepare() という関数で free_pages が確保できるまで呼び元でループしていたのを関数内で lazy sweep の完遂、新規の mark & sweep の GC の開始、RGEnGC の major GC の実施、と free_pages が確保できるまでより徹底的な GC を実施し、それでもだめだったら新しい page を要求するという処理を書くようにしています。元の実装がこれと同等だったのかよくわかりませんが、ループするよりこっちのほうが(分岐は多くなるけど)明示的でわかりやすいですね。

[deff9e2699] Daniel Berger 2022-06-06 05:46:01 UTC

rubygems の警告メッセージに "WARN" という文字列を埋め込むのにわざわざ変数に代入して埋め込んでたので直接文字列リテラルに書くようにリファクタリングしています。

[1598c9458a] Noah Gibbs 2022-06-07 15:20:57 UTC

String#@+ メソッド(String の単項演算子 +)の YJIT での特別対応による最適化を追加しています。 https://github.com/ruby/ruby/pull/5982

[bdc6e991f5] git 2022-06-07 15:21:12 UTC

version.h の日付更新

[19c6aaca93] Jean Boussier 2022-06-07 15:18:50 UTC

9125374726fbf68c05ee7585d4a374ffc5efc5db で追加した GVL 確保/解放時のコールバック関数登録の C API で登録したコールバックを thread_sched_to_running_common() 内で呼ぶ位置を関数の先頭に移動して Scheduler が未初期化の時? にフックが呼ばれてなかったのを修正しています。

[bf4684d999] Peter Zhu 2022-06-07 18:15:59 UTC

internal/imemo.h に rb_imemo_new() という関数の prototype 宣言が重複して宣言されてたので1つ削除しています。

[ccfbcc7302] Nobuyoshi Nakada 2022-06-08 02:55:21 UTC

LoadError#path や #path= の定義のための rb_attr() に渡す真偽値を TRUE/FALSE といった定数マクロに変更しています。昨日の dbfb3b1917dbe89816ffeea6046d2743c32bf6b6 で C のソースコードの解析時にこれらマクロに対応するようにしたので rdoc を気にして 0/1 にしていたところをマクロにできた、ということみたいです。

[790825db44] Takashi Kokubun 2022-06-08 04:30:22 UTC

make benchmark で利用する benchmark-driver のバージョンを v0.15.18 に更新して、benchmark/README.md のドキュメントに書かれている usage を更新しています。

[6a6531d3e0] Alexander Ilyin 2022-06-08 08:04:18 UTC

README.md の不具合報告先の URL がリンク切れになっていたので修正しています。

ruby-trunk-changes 2022-06-07

今日は Range#cover? の endless Range での挙動の変更や Module#undefined_instance_methods というメソッドの新規追加など多くの変更がありました。

[66a9e452bb] Nobuyoshi Nakada 2022-06-06 12:19:24 UTC

標準添付ライブラリ rdoc の ri のテストで pager コマンドのダミーとしてなにもしないコマンド ":;" を渡していたのを Windows 環境では type nul というのを渡すようにしています。また他の環境でも true コマンドを指定するようにしています。

[6fc16e748e] Alexander Ilyin 2022-06-06 14:16:36 UTC

標準添付ライブラリ open-uriURI.open の rdoc 用コメントのマークアップのタグ閉じ漏れの修正。

[f2f8c0b39b] git 2022-06-06 15:07:09 UTC

version.h の日付更新

[b737998d25] Burdette Lamar 2022-06-06 15:37:18 UTC

標準添付ライブラリ fileutils の rdoc 用コメントの追記。

[7cda7fbbdc] Jeremy Evans 2022-06-06 16:57:32 UTC

Module#undefined_instance_methods というメソッドを追加して Module#undef で未定義にされたメソッドの一覧が取得できるようにしています。 [ruby-core:76732] [Feature #12655]

[c5475f4269] Jeremy Evans 2022-04-22 02:46:17 UTC

Range#cover? が endless Range を receiver と引数の両方に渡した場合に期待と異なる結果を返すことがあったので修正しています。コミットログだと beginless range のほうの挙動を変更したというふうに読めるけど実装は逆で開始点が同じ endless range 同士が true を返すようになっていますね。 [ruby-core:105176] [Bug #18155]

[653e517eef] Noah Gibbs 2022-06-06 17:47:24 UTC

YJIT の Rust 実装に取り込む C のシンボルや型を追加しています。 https://github.com/ruby/ruby/pull/5943

[c85d1cda86] Jeremy Evans 2022-03-12 05:43:47 UTC

Module#const_source_location を autoload が設定されていたのに直接ロードされて定義された定数に対して呼ぶとファイル名が取得できていなかったのを修正しています。 [ruby-core:107846] [Bug #18624]

[ec3542229b] Jeremy Evans 2022-06-06 20:50:03 UTC

正規表現リテラル内にはコメントが書ける場合がありますが、そこでバックスラッシュで始まる文字列がエスケープシーケンスとして解釈されて parse error になる場合があったので無視させるようにしています。見慣れない部分ですが正規表現のパーサーのほうも変更されていますね。 [ruby-core:105972] [Bug #18294]

[cfcf33f127] Jun Aruga 2022-05-24 14:00:53 UTC

いろんなコンパイラオプションを試す GitHub Actions の workflow .github/workflows/compilers.yml で MJIT のテストが失敗していたのを gcc-11 への -Wl,-z,now というオプションを LDFLAGS に渡すようにして skip していたテストを戻しています。 [ruby-core:108549] [Bug #18781]

[dbfb3b1917] Nobuyoshi Nakada 2022-06-07 00:18:35 UTC

標準添付ライブラリ rdoc の C のソースコードを parse するための正規表現を定数に切り出し rb_attr() および rb_define_attr() の引数に渡す真偽値を 0 か 1 以外のマクロ定数や予約語も受付けるように拡張しています。

[9d927204e7] Yusuke Endoh 2021-11-30 07:27:12 UTC

Exception#inspect が例外メッセージも含んだ文字列を返すため改行をそのまま出力していたのをエスケープして埋め込むように変更しています。 [ruby-core:105276] [Bug #18170]

[082c2d1b05] Nobuyoshi Nakada 2022-06-07 02:44:47 UTC

dbfb3b1917dbe89816ffeea6046d2743c32bf6b6 で rdoc の C ソースコードの parse 用の正規表現を切り出した定数を rdoc によるドキュメント化をさせないように :stopdoc: タグを追加しています。

[b9f030954a] Yusuke Endoh 2022-06-07 02:50:58 UTC

9d927204e7b86eb00bfd07a060a6383139edf741 で Exception#inspect の改行をエスケープしたのを revert しています。

[11b9dd8ccb] Hiroshi SHIBATA 2022-06-07 06:24:48 UTC

標準添付ライブラリ did_you_mean を upstream から最新版をマージしています。

[f075be3dcb] Yusuke Endoh 2022-06-07 08:40:03 UTC

標準添付ライブラリ error_highlight で Exception#to_s を再定義していたのを Exception#detailed_message を再定義するように変更しています。 https://github.com/ruby/did_you_mean/pull/177

[b1e6e58cd1] Jean Boussier 2022-06-07 08:51:28 UTC

9125374726fbf68c05ee7585d4a374ffc5efc5db で追加した GVL の確保/解放のコールバック関数登録の C API のテストが CI で不安定なので fork した子プロセスで Kernel#exit! で終了させたり、子プロセス内で assert_predicate を呼んでたのをチェック対象を pipe 経由で親プロセスに渡してそこで assertion メソッドを呼ぶようにするなどの変更をしています。

[f50432fba8] David Rodríguez 2022-06-07 08:46:30 UTC

bundler のテストで実行時間を測っているテストで許容される実行時間を伸ばしています。実行時間をテストに入れるというの環境の依存が大きくてメンテ大変そう。

ruby-trunk-changes 2022-06-06

今日は標準添付ライブラリ cgiJRuby 対応や RbConfig::CONFIG の項目追加などがありました。

[d8790ecd04] nick evans 2022-06-05 17:33:49 UTC

rbconfig.rb の RbConfig::CONFIG に "COROUTINE_TYPE" というキーを追加して configure 時の Fiber 用の coroutine 実装の選択結果を取得できるようにしています。 https://github.com/ruby/ruby/pull/5976

[a56a7119ac] Nobuyoshi Nakada 2022-06-06 02:16:18 UTC

configure に不要な coroutine_type の代入があったのを削除しています。

[93555e013c] git 2022-06-06 02:40:14 UTC

version.h の日付更新

[5267829641] Kazuhiro NISHIYAMA 2022-06-06 03:00:05 UTC

doc/contributing/testing_ruby.md の make test-all に指定のテストメソッドだけ実行させるサンプルの typo を修正。

[5d014bcb61] Yusuke Endoh 2022-06-06 03:52:15 UTC

9125374726fbf68c05ee7585d4a374ffc5efc5db で追加した GVL 確保/解放のコールバック関数を登録する C API のテストで Thread を生成して短時間 sleep させていたところでテストの安定性のため sleep する時間を 10倍に伸ばしています(それでも 0.5 sec とかの短時間)。

[4bc7cef866] Pavel Rosický 2021-09-23 22:33:36 UTC

標準添付ライブラリ cgi の .gemspec ファイルで spec.files を git ls-files コマンドの結果から抽出するように書かれてたのを Dir.glob を使った書きかたに変更し、さらに JRuby 対応のための分岐を追加しています。

[f4173ff2fa] Hiroshi SHIBATA 2022-06-06 09:19:15 UTC

doc/standard_library.rdoc の debug.gem を default gems のセクションから bundled gems のセクションに移動しています。

[ba38318827] David Rodríguez 2022-06-03 07:49:59 UTC

rubygemsrubygems/requirement.rb を常に require してたのを autoload を使って遅延ロードするように変更しています。

ruby-trunk-changes 2022-06-05

今日はちいさなリファクタリングだけでした。

[ed2dd17294] Nobuyoshi Nakada 2022-06-05 05:21:01 UTC

例外メッセージを表示用に整形する Exception#detailed_message のキーワード引数 highlight の処理をする check_highlight_keyword() で if 文による分岐をシンプルな論理演算と RBOOL() マクロの利用にリファクタリングしています。

[5ce0be022f] git 2022-06-05 06:18:26 UTC

version.h の日付更新

ruby-trunk-changes 2022-06-04

今日は主に GVL の確保/解放のコールバック関数を登録する C API の追加や標準添付ライブラリ rdoc の ri の実装のリファクタリングなどがありました。

[9125374726] Jean Boussier 2022-01-27 16:12:22 UTC

rb_internal_thread_add_event_hook() と rb_internal_thread_remove_event_hook() という C API を追加して内部的な Thread の切り替え時に GVL の確保前後と解放後に呼び出される C のコールバック関数を登録できるようにしています。ただし Windows 版では C API は用意されるものの中身は空になっています。コールバック関数から ruby のメソッド呼び出しや例外発生などはできないという規約とのこと。チケットのほうをみると Thread を使ったアプリケーションのチューニングのためのメトリクスを得るためということみたいです。 [ruby-core:106069] [Feature #18339]

[e4fe347302] Alan Wu 2022-03-29 17:38:55 UTC

rb_vm_bugreport() でバックトレースなどの表示中に再度異常終了が発生して無限再帰状態に陥るのを防ぐために static 変数を導入して同じ箇所に再入したらすぐに処理を抜けるようにする guard を追加しています。

[c19a842e1c] git 2022-06-03 17:50:50 UTC

version.h の日付更新

[76479de159] Nobuyoshi Nakada 2022-06-04 07:21:35 UTC

標準添付ライブラリ rdoc の lib/rdoc/ri/driver.rb に win32console を require してるところがありましたが使ってないとのことで削除しています。

[323acd263a] Nobuyoshi Nakada 2022-06-04 05:39:07 UTC

標準添付ライブラリ rdoc の lib/rdoc/ri/driver.rb でドキュメント表示用に起動する pager コマンドの存在チェックをしてたのを冗長とのことで削除しています。

[d4c7e4d5bb] Nobuyoshi Nakada 2022-06-04 07:13:36 UTC

標準添付ライブラリ rdoc の ri のテストで pager コマンドを使ったテストメソッドの先頭に "_" をつけて実行されないようにしていたのを元に戻しています。ひとつコメントを消し忘れてるみたいだけどわざとかな。

[9a7be959b1] Nobuyoshi Nakada 2022-06-04 07:14:26 UTC

標準添付ライブラリ rdoc の 323acd263aff3cc29786a55d4604f240a9cbab46 の変更で不要になった RDoc::RI::Driver#in_path? メソッドの実装も削除しています。

[2e6aee6ef2] Nobuyoshi Nakada 2022-06-04 07:51:59 UTC

標準添付ライブラリ rdoc の .gemspec ファイルで spec.extra_rdoc_files に加えるため列挙していたドキュメントファイル群を spec.files から拡張子で自動的に抽出するように変更しています。

[5460675bbc] Nobuyoshi Nakada 2022-06-04 11:32:23 UTC

標準添付ライブラリ rdoc の lib/rdoc/ri/driver.rb でコマンド実行の JRuby 向けの独自の実装をしていたのを常に IO.popen を利用するように変更しています。