ruby-trunk-changes 2022-06-24

今日は rubygems/bundler の更新や古い GCC での警告抑制のための修正のほか ISeq の mark 処理高速化のための内部構造の変更などがありました。

[2f7c0f656e] Nobuyoshi Nakada 2022-06-22 10:38:17 UTC

.github/workflows/compilers.yml で LDFLAGS の設定を append_configure という環境変数経由でしていたのを直接 LDFLAGS 環境変数に設定するように変更しています。

[961543945f] Nobuyoshi Nakada 2022-06-22 11:20:48 UTC

parse.y で警告抑制のために #pragma を使う RBIMPL_WARNING_PUSH() や RBIMPL_WARNING_IGNORED() マクロを使って -Wpsabi の警告オプションをファイル内で無効にするようにしています。古い GCC で誤って警告が出ることがあるみたいです。

[41cdf9b114] Nobuyoshi Nakada 2022-06-23 11:30:57 UTC

.github/workflows/compilers.yml のビルド中に make showflags を実行して各種ツールチェインのオプションを表示するようにしています。

[b180ffa622] Nobuyoshi Nakada 2022-06-23 13:51:31 UTC

addr2line.c、io_buffer.c、thread_win32.c で古い GCC での警告抑制のための各種修正。

[962a3247b1] John Hawthorn 2022-03-12 03:21:50 UTC

doc/syntax/modules_and_classes.rdoc で protected メソッドの呼び出せる条件について呼び元の self についての記述があったのを削除しています。

[6fd9cb8087] git 2022-06-23 20:51:07 UTC

version.h の日付更新

[e23540e566] Aaron Patterson 2022-06-17 22:28:14 UTC

ISeq の GC の mark 処理を高速化するために rb_iseq_body_t 内に保持されている VALUE の位置を bitmap として保持するようにリファクタリングしています。 [ruby-core:109042] [Feature #18875]

[eb1a84a9c3] Alan Wu 2022-06-23 22:12:25 UTC

YJIT を有効にしてビルドしていない時は --help で表示する usage に YJIT 関連の --features などを表示しないようにしています。

[8d63a04703] Aaron Patterson 2022-06-23 22:46:53 UTC

e23540e5666664e23f2adecdc2cc591f3ff6fe2f で導入した struct rb_iseq_constant_body::mark_offset_bits に要素が 1つだけしか必要なかったらメモリ領域をヒープから確保しないようにしています。

[0b58059f15] Aaron Patterson 2022-06-23 23:02:42 UTC

e23540e5666664e23f2adecdc2cc591f3ff6fe2f で導入した struct rb_iseq_constant_body の bitmap が結果的に不要だったら NULL クリアして解放しておくようにしています。

[333754ace8] Alan Wu 2022-06-24 00:27:02 UTC

bootstraptest/test_yjit.rb にブロック渡しで定義されたいわゆる bmethod が外のスコープの変数を上書きする時の挙動の YJIT でのテストを追加しています。

[12a5fa408b] David Rodríguez 2022-06-23 09:22:36 UTC

rubygems と bundler を upstream から最新版を取得しています。

ruby-trunk-changes 2022-06-23

今日は TracePoint の b_return イベントフックで例外発生させた時の不具合修正などがありました。

[744d17ff6c] Alan Wu 2021-07-08 22:23:39 UTC

TracePoint の b_return イベントのフックから例外を発生させると無限ループ状態になってしまう不具合を修正しています。イベントフック呼び出し時に control frame を pop する指定を忘れてたみたいです。 [ruby-core:104767] [Bug #18060]

[2361a1a53e] Nobuyoshi Nakada 2022-06-23 07:02:33 UTC

variable.c の autoload_apply_constants() という関数の変数 autoload_const の宣言に初期化子を追加しています。

[c25c1d4e54] Nobuyoshi Nakada 2022-06-23 07:45:05 UTC

thread_win32.c の rb_internal_thread_add_event_hook() と rb_internal_thread_remove_event_hook() に明示的に return 文が書かれてなかったので追加しています。

[0b11eac2d6] git 2022-06-23 07:45:43 UTC

version.h の日付更新

[4f5eb48dea] David Rodríguez 2022-06-21 18:02:17 UTC

budler の bundle cache サブコマンドなどの --no-install オプションが効かなくなっていた不具合を修正しています。

[6f229da2c0] David Rodríguez 2022-06-21 16:45:45 UTC

bundler の Bundler::Standalone#paths で spec.require_paths をすりかえる時の ruby のバージョン番号を実行時の RbConfig::CONFIG["ruby_version"] から Gem.ruby_api_version および Gem.extension_api_version というメソッドを利用するようにして、 Gem.extension_api_version のほうは RbConfig::CONFIG['ENABLE_SHARED'] もチェックしてディレクトリ名に -static という suffix がつくように対応しています。

ruby-trunk-changes 2022-06-22

今日は tool/lib/vcs.rb の環境依存のエラー対策や protected メソッドの呼び出しのインラインキャッシュ対応追加などがありました。

[1002998c6d] Burdette Lamar 2022-06-21 13:42:27 UTC

標準添付ライブラリ fileutils の rdoc 用コメントに関連(類似)する別のメソッドへの参照を追加しています。

[2e81fd764b] Burdette Lamar 2022-06-21 14:16:20 UTC

標準添付ライブラリ fileutils の rdoc 用コメントの File#chmod メソッドへの参照にクラス名も含めるようにしています。

[1f067e775d] Benoit Daloze 2022-06-21 16:40:28 UTC

Kernel#require_relative の rdoc 用コメントで相対パスが現在のスクリプトが存在しているディレクトリからの相対パスであることをはっきりさせています。

[102a97e096] git 2022-06-21 16:41:02 UTC

version.h の日付更新

[fdd1102550] Burdette Lamar 2022-06-21 17:23:06 UTC

標準添付ライブラリ fileutils の rdoc 用コメントで FileUtils#cp_r と #install が所有者や mode もコピーするかどうかの点で違うことを追記しています。

[0dcd25b711] Nobuyoshi Nakada 2022-06-22 00:30:05 UTC

tool/lib/vcs.rb でエラーメッセージを /dev/null などのデバイスにリダイレクトしてメッセージを消してたのを debug 実行時にはやめるようにしています。

[bc77cda8fd] Nobuyoshi Nakada 2022-06-22 00:32:01 UTC

tool/lib/vcs.rb で ChangeLog 生成のためにコミットログを取得する時に --date オプションが使えるかどうかの確認のために呼んでみる時にログを1件だけ取得するように指定を追加しています。

[7fd51c0241] Nobuyoshi Nakada 2022-06-22 00:33:25 UTC

tool/lib/vcs.rb で git コマンド実行の時に環境の設定の影響を受けないように HOME、XDG_CONFIG_HOME、GIT_SYSTEM_CONFIG、 GIT_CONFIG_SYSTEM などの環境変数を削除または /dev/null などの nul デバイスに置き換えるようにしています。

[87a560a057] Jemma Issroff 2022-06-21 20:12:27 UTC

misc/lldb_cruby.py の lldb_inspect コマンドで T_STRUCT 型オブジェクトの対応がなかったので追加しています。

[a580dd7737] John Hawthorn 2022-06-16 20:28:39 UTC

メソッド呼び出しの処理 vm_call_method() で protected のメソッドの呼び出し時に VM_CALL_FCALL つまり receiver が省略された関数っぽいメソッドの呼び出し方で呼ばれてた時も fastpath の最適化された処理に入るようにしています。

[9312f4bf62] John Hawthorn 2022-03-11 19:48:02 UTC

a580dd77377c87754b437efb1a02cccc1554dafd とも関係ありそうですが protected メソッドの呼び出しで method entry がインラインキャッシュに乗らないようになってたのをこれも対象にするようにしているそうです。

[0c1f64396f] John Hawthorn 2022-06-16 04:58:16 UTC

YJIT の実装でも protected メソッドの呼び出しが receiver なしで呼ばれている場合に不要なチェックを省くようにしています。

[812354ace4] Takuya Noguchi 2022-06-22 02:40:13 UTC

bundler の bundle add サブコマンドの man ページの余計なカンマを削除しています。

[e6f92cada1] Nobuyoshi Nakada 2022-06-15 16:15:31 UTC

.github/workflows/compilers.yml の環境変数の指定のしかたを少し変更しています。

ruby-trunk-changes 2022-06-21

今日は GCC 12 によるビルドのサポートのための警告抑制などがありました。

[2d4a41df6b] Stan Lo 2022-06-20 13:27:12 UTC

irb の組み込みコマンド ls, show_source などで環境変数 USE_COLORIZE による色付けの抑制が効くようにしています。

[31b2cd38c5] Chris Seaton 2022-06-14 15:08:36 UTC

rb_bug() による異常終了時に MJIT や YJIT が有効になっているかどうかを出力に含めるようにしています。 ruby -v オプションによる出力と同様のものを出力するようにしています。

[eed24b5ee0] Jun Aruga 2022-06-20 13:34:32 UTC

GitHub Actions のいろんなコンパイラオプションを試す workflow の make test-annocheck を実行する時のビルド時に -Wa,--generate-missing-build-notes=yes という警告オプションを追加して、f8b6d4f4d1b0eb0b3220fc83f157bd33ddcc5d4e で追加した annocheck の --skip-gaps とその前からあった --skip-notes オプションは削っています。

[850b54612c] git 2022-06-20 21:57:36 UTC

version.h の日付更新

[596f4b0d3a] Jeremy Evans 2022-06-20 22:17:23 UTC

Regexp#source の rdoc 用コメントにエスケープシーケンスや正規表現のメタキャラクタをエスケープするバックスラッシュはそのまま文字列にも含まれるけど正規表現リテラルの閉じる "/" などをエスケープするためのバックスラッシュは残らないというのを追記しています。まあ要はそのまま Regexp.new に渡すことができるってことですね。 [Feature #18838]

[a343952d19] Nobuyoshi Nakada 2022-06-21 00:36:37 UTC

bootstraptest/test_io.rb のテストで FreeBSD でエラーになるものがあるみたいで実行しないように分岐(or による制御)を追加しています。

[f44547c999] Yusuke Endoh 2022-06-13 06:47:19 UTC

regparse.c に GCC 12 での警告の抑制のため #pragma を使ってこのファイルでだけ -Warray-bounds、-Wstringop-overflow、-Wrestrict などの警告オプションを無効化するようにしています。

[a0b24f5926] Nobuyoshi Nakada 2022-06-21 03:08:48 UTC

拡張ライブラリ io/wait の不要な関数の前方宣言を削除しています。

[7ef67bf9a2] 卜部昌平 2022-06-21 04:07:46 UTC

GitHub Actions のいろんなコンパイラを試す workflow に GCC 12 によるビルドを追加しています。

[641a732909] git 2022-06-21 07:05:34 UTC

gems/bundled_gems および NEWS の bundled gems のバージョンリストで minitest のバージョンを 5.16.1 に更新しています。

[441cfa966c] Hiroshi SHIBATA 2022-06-21 11:38:42 UTC

doc/standard_library.rdoc に標準添付ライブラリ reline が抜けてたので追加しています。

[a9db5be0ca] Hiroshi SHIBATA 2022-06-21 11:41:05 UTC

doc/standard_library.rdoc および doc/maintainers.rdoc に標準添付ライブラリ error_highlight について追記しています。

[15769832b2] Hiroshi SHIBATA 2022-06-21 11:43:42 UTC

doc/standard_library.rdoc と doc/maintainers.rdoc に標準添付ライブラリの ruby 版 readline について追記しています。

ruby-trunk-changes 2022-06-20

今日は主に Regexp.new の第2引数による正規表現オプションに文字列での指定を受付けたり、不正な値が渡された時に警告を出すようにする変更と、ruby のビルドに GCC3 をサポートしないようにする変更などがありました。

[4aebbf44e9] Nobuyoshi Nakada 2022-06-19 14:32:47 UTC

GVL のイベントコールバック関数を登録する C API のテスト用の拡張ライブラリで関数ポインタを引数に渡すのに関数名の前に * をつけていたのを修正しています。& じゃなくて * か。これどういう意味になるんだっけ?

[da362fee59] Nobuyoshi Nakada 2022-06-19 14:33:26 UTC

同じく GVL のイベントフックのコールバック関数登録の C API テストで sleep する時間を EnvUtil を用いて環境変数でスケーリング可能にしています。

[aeab405878] Josh Nichols 2022-05-13 21:22:54 UTC

bundler の Bundler::SpecSet#for で依存関係解決のための候補の配列を gem 毎に別に持つようにしてパフォーマンス改善しています。

[6622a41891] git 2022-06-19 17:34:57 UTC

version.h の日付更新

[cd3a5cd0e3] Nobuyoshi Nakada 2022-06-19 17:32:17 UTC

Regexp.new の rdoc 用コメントの call-seq に省略可能な第3引数 encoding の記述がなかったので追加しています。この引数知らなかったなぁ。

[150bd6e242] Soutaro Matsumoto 2022-06-20 02:44:47 UTC

gems/bundled_gems の rbs のバージョンを 2.5.1 に更新。 https://github.com/ruby/ruby/pull/6041

[271bcc0c1c] git 2022-06-20 02:45:22 UTC

150bd6e2427a8a6178aa5f8ebc39ce6e59601e1f に追随して NEWS の bundled gems のバージョンリストの rbs の項目も更新しています。

[ec5c56412f] Nobuyoshi Nakada 2022-06-18 04:46:40 UTC

configure で GCC のバージョン 3 をサポート外としてエラーにするよう更新しています。 [ruby-core:108998] [Feature #18839]

[8d689294d0] citrusmoose 2022-06-16 19:13:17 UTC

bundler の Bundler::Standalone#paths で gem の require_paths 内の拡張ライブラリ用のファイルパスの ruby の version 部分の変数展開を抑制して実行時の ruby のバージョンで展開されるようにする変換を追加しています。

[078db98da4] Yusuke Endoh 2022-06-20 08:39:58 UTC

eca31d24d606a73def3674938112dc3c5b79c445 で Module#autoload の警告を追加したため警告が出るようになった Module#autoload のテストを一時的に $VERBOSE を nil にして警告抑制するようにしています。 [ruby-core:108749] [Bug #18813]

[914c26eab3] Nobuyoshi Nakada 2022-06-20 08:47:44 UTC

Regexp#timeout= や Regexp.new の timeout キーワード引数の rdoc 用コメントで Integer も受け付けると書いてたのを Float または nil と記述を変更しています。実際には Integer を渡しても変換してくれるようになってるとは思いますが。

[7f8a915715] Nobuyoshi Nakada 2022-06-20 03:53:41 UTC

cd3a5cd0e33f7b2495c5b3421e7f1d124de8c343Regexp.new の rdoc 用コメントの call-seq に省略可能な第3引数を追加しましたが、その引数名を encoding から n_flag に変更しています。また timeout キーワード引数の指定方法についてサンプルを追加しています。

[f8b6d4f4d1] Jun Aruga 2022-06-20 08:46:24 UTC

GitHub Actions のいろんなコンパイラオプションをためす workflow の make test-annocheck を実行する時に --skip-gaps オプションを追加しています。

[15db2e9496] Yusuke Endoh 2022-06-20 10:25:11 UTC

特殊変数 __ENCODING__ のテストで警告が出るのを抑制するため一時的に $VERBOSE を nil に設定しておくようにしています。

[a58611dfb1] Nobuyoshi Nakada 2022-05-24 07:48:34 UTC

true または false を期待しているキーワード引数などをチェックする rb_bool_expected() という関数に第3引数を追加して、真偽値以外が渡された時に例外ではなく警告の出力に留めることができるようにしています。従来の呼び元は全て TRUE を渡して呼ぶようにしているのでこのコミット時点では挙動の変更はありません。

[ab2a43265c] Nobuyoshi Nakada 2022-05-24 07:51:15 UTC

a58611dfb1bfc74fb1a51a9cd0ca8ac690c2f1f4 で引数を追加した rb_bool_expected() を Regexp.new の第2引数のチェックに利用するようにしています。従って nil/true/false じゃない時に警告メッセージを出力するように変更しています。別の分岐で Integer の場合もあるので Regexp.new の引数としては整数も受け付けてますね。 [ruby-core:108590] [Feature #18788]

[39dc455b51] Nobuyoshi Nakada 2022-06-19 06:41:24 UTC

ab2a43265cfdda288d1baaa29936fd408c2a42bcRegexp.new の第2引数に Integer/nil/true/false 以外を渡した時の警告出力について rubyspec を追随させてます。 [ruby-core:108590] [Feature #18788]

[1e9939dae2] Nobuyoshi Nakada 2022-06-16 09:53:35 UTC

ab2a43265cfdda288d1baaa29936fd408c2a42bc に続いて Regexp.new の第2引数の文字列でのオプション指定も受付けるように拡張しています。正規表現リテラルの後につけるオプションと同様の文字で指定できるようです。 [ruby-core:108590] [Feature #18788]

[883d13dc41] Nobuyoshi Nakada 2022-06-19 06:43:27 UTC

1e9939dae24db232d6f3693630fa37a382e1a6d7Regexp.new の第2引数に文字列を受け付ける変更に追随して rubyespec にテストを追加しています。 [ruby-core:108590] [Feature #18788]

[4a6facc2d6] Nobuyoshi Nakada 2022-06-20 04:35:21 UTC

Regexp.new の rdoc 用コメントおよび doc/regexp.rdoc に Regexp.new の第2引数での正規表現オプションの文字列での指定について追記しています。 [ruby-core:108590] [Feature #18788]

[c46824d094] Jean Boussier 2022-06-20 11:03:39 UTC

GVL のイベントフックのコールバック関数登録の C API のテストで da362fee59b2bff30eb8d63ee15724f5c3aac957 で sleep する時間を EnvUtil を使って環境変数で変更できるようにしていたのを revert して、そもそも sleep しないようにしています。sleep いらんかったんかい。

ruby-trunk-changes 2022-06-19

今日は Module#autoload で設定したスクリプトが意図したのと違う名前空間に定数を定義した時の警告メッセージの追加や拡張ライブラリ etc のドキュメントの修正などがありました

[eca31d24d6] Jean Boussier 2022-06-18 08:29:52 UTC

Module#autoload が load したスクリプトで設定されたのと同名の定数が定義されたけど意図した名前空間ではないところに定義されたという場合(でも上の階層なので参照はできる)警告を出力するようにしています。 [ruby-core:108749] [Bug #18813]

[c594370c6e] Nobuyoshi Nakada 2022-06-19 01:26:21 UTC

拡張ライブラリ etc の Etc::Passwd や Etc::Group の rdoc 用コメントに各メンバーが利用可能な条件となる C のマクロ名が書いてありましたがユーザーにはあまり関係ないことなので削っています。

[cc67a11768] Nobuyoshi Nakada 2022-06-19 01:43:43 UTC

拡張ライブラリ etc の Etc::Passwd の rdoc 用コメントの getpwent への参照が間違ってたのを修正しています。

[ea38758322] Nobuyoshi Nakada 2022-06-19 01:45:11 UTC

拡張ライブラリ etc の Etc::Passwd の rdoc 用コメントのマークアップの修正。

[95a25e0441] git 2022-06-19 01:47:48 UTC

version.h の日付更新

[5047283070] Nobuyoshi Nakada 2022-06-19 02:05:31 UTC

GitHub Actions と Travis-CI, AppVeyor でテストをスキップする条件としてコミットログが "[DOC]" で始まっていたら、というのを途中にでも含まれていたらスキップするように条件を緩和しています。

[5f8c73405e] Nobuyoshi Nakada 2022-06-19 01:59:03 UTC

標準添付ライブラリ etc の rdoc 用コメントのマークアップ修正。

ruby-trunk-changes 2022-06-18

今日は macOS で compaction がデバッガで実行する時にうまく動かない不具合の対応などがありました。

[c34a5469c8] Jean Boussier 2022-06-17 08:09:02 UTC

GVL の確保/開放のコールバック関数を登録する C API のテストで Thread#status をチェックする assertion を追加しています。

[721e012d42] Matt Valentine-House 2022-06-17 10:40:11 UTC

misc/lldb_cruby.py の lldb_inspect などで T_ARRAY 型オブジェクトの embed されている時の要素数を得るのに使う flags のビット数が Variable Width Allocation 有効時に拡張されたのに追随させています。

[9327b6f222] Burdette Lamar 2022-06-17 13:36:20 UTC

標準添付ライブラリ fileutils のセクションの移動をしています。

[2790bddda6] Peter Zhu 2022-06-17 13:44:17 UTC

compile.c で未使用になっていた iseq_alloc() の宣言を削除しています。

[7f05f7378d] Nobuyoshi Nakada 2022-06-17 14:27:16 UTC

iseq.c で "<compiled>" という fstring を rb_iseq_compile_with_option() の関数内の複数の箇所で初期化していのを関数の先頭で変数に格納して使いまわすようにリファクタリングしています。

[05ffc037ad] KJ Tsanaktsidis 2022-05-22 23:30:26 UTC

Compaction のために移動したオブジェクトへの参照を検出するための write memory barrier が macOS で debugger を使っている状態では発生するシグナルの違いでうまく働かないという問題があるらしく、macOS では compaction 実行時に EXC_BAD_ACCESS のエラーハンドラを一時的に無効化するという対処を入れています。

[b184cdfd74] git 2022-06-17 15:10:38 UTC

version.h の日付更新

[566c5447ae] John Hawthorn 2022-06-17 18:26:51 UTC

yjit.rb の YJIT.dump_exit_locations メソッドで File.write を使っていたところを File.binwrite を使うように修正しています。

[41a024f2b9] Alan Wu 2022-06-17 22:12:55 UTC

yjit.c のコメントの ruby 実装の関数名などのシンボルの rb_ prefix についてのコメントを削ったりしています。

[4b7c4bb92e] Alan Wu 2022-06-17 22:13:19 UTC

tool/extlibs.rb で例外を Exception#full_message を使って警告メッセージとして出力してたのは BASERUBY が古い時に NoMethodError になるので defined? でチェックして分岐するようにしています。

[cab10a2c50] Nobuyoshi Nakada 2022-06-18 01:20:46 UTC

gc.c の lock_page_body()/unlock_page_body() から共通部分を protect_page_body() という関数に切り出すリファクタリングWindows 版とそれ以外とで if 文の条件部だけを preprocessor 分岐で分けていたのでブロックの開始 brace の対応がおかしくなってエディタなどが混乱するのを避けるためみたいです。

[e77d2c296e] Nobuyoshi Nakada 2022-06-17 14:33:23 UTC

configure で GCC の 5 でのみ -Wno-maybe-uninitialized オプションを指定して警告抑制していたのを GCC 4 でも抑制するようにしています。

[e711711539] Nobuyoshi Nakada 2022-06-18 04:40:46 UTC

configure で GCC 利用時にバージョンが古すぎるとエラーにする処理を移動して、エラー時にその GCC バージョン番号も表示するようにしています。