ruby-trunk-changes 2024-06-17

今日は主に拡張ライブラリ io/console を WASI 環境向けにはビルドしないようにする変更などがありました。

[ef423dd6d4] git 2024-06-15 20:14:58 UTC

NEWS の default gems のバージョンリストの irb のバージョンも更新しています。

[b73dd8f6d0] Yuta Saito 2024-06-17 07:20:53 UTC

拡張ライブラリ io/console の extconf.rb で WASI 環境ではビルドしないようにしています。

ruby-trunk-changes 2024-06-16

今日は prism の更新と irb のバージョン更新がありました。

[ce6a1ba9a1] Stan Lo 2024-06-15 20:13:57 UTC

標準添付ライブラリ irb のバージョンを 1.13.2 に更新しています。 https://github.com/ruby/irb/pull/970

ruby-trunk-changes 2024-06-14

今日は主に parser の不具合修正や YJIT の最適化などがありました。

[5c573b7652] David Rodríguez 2024-06-13 11:21:53 UTC

rubygems の Gem::Specification のソート順を決めるための比較メソッドで default gems かどうかを考慮に入れるようにしているようです。

[c2f8e91815] David Rodríguez 2024-06-13 11:25:16 UTC

rubygems の Gem::Specification の優先度の決定にその gem のパスも考慮するようにしています。デフォルトのところにあるほうを優先するとかそういうことかな。

[a60831f9b6] Jeremy Evans 2024-06-12 23:32:06 UTC

Fiber 用の coroutine の amd64 アーキテクチャ向けの Context.S のソースコードOpenBSD の時に _CET_ENDBR というマクロを利用するようにしています。これを使わないと OpenBSD では不正な命令で SIGILL シグナルが発生してしまうようです。

[9c7374b0e6] tompng 2024-01-15 18:34:53 UTC

文字列のサイズを変更する rb_str_resize() という関数で UTF-16UTF-32 などの非 ASCII-compatible な Encoding (というか終端文字のサイズがマルチバイトな Encoding) では coderange をクリアするようにしています。

[04467218ce] tompng 2024-01-16 16:16:31 UTC

9c7374b0e6cbfb00e4f71d0b2eddba128ba452f7 の rb_str_resize() 変更に対応する拡張ライブラリを使った C API のテストを追加しています。

[28d1685ebb] Alan Wu 2024-06-12 20:23:13 UTC

YJIT の --yjit-stats オプションで出力するメッセージの桁数の調整。

[ffd895156f] Alan Wu 2024-06-11 20:34:08 UTC

YJIT で分岐の不要な部分のコード生成を遅延するような最適化を追加しているようです。

[420ef906bd] Koichi Sasada 2024-06-13 18:44:08 UTC

mspec で例外発生を出力する処理で出力先を標準エラー出力にするようにしています。

[2699e230e4] Alan Wu 2024-06-13 21:43:41 UTC

RBIMPL_ASSERT_TYPE() というマクロの定義が RUBY_DEBUG が真でデバッグ用ビルドの時に Check_Type を使って例外を発生させて、通常ビルド時に RBIMPL_ASSERT_OR_ASSUME() で異常終了させるようになっていたのを常に RBIMPL_ASSERT_OR_ASSUME() を利用するようにしています。デバッグモードでの調査のためには異常終了させるほうが良かったみたいです。

[a8730adb60] Alan Wu 2024-06-13 21:39:17 UTC

rb_str_hash() で文字列が slot に埋め込めてさらに余裕がある時に事前に hash 値を計算してそれも slot に埋め込む実装を使っていた時の hash 値を取り出す実装でメモリアライメントの違反をする可能性があった不具合を memcpy(3) を利用するようにして修正しておます。

[6416ee33eb] Alan Wu 2024-06-13 21:59:40 UTC

a8730adb600cba9b2933f2d0d1c3716a9cbe8c76 と同様に文字列の hash 値を事前に計算して slot に埋め込む時にも memcpy(3) を利用するようにしてメモリアライメント違反になる可能性があった不具合を修正しています。

[b988ae3a06] Dmitry Ukolov 2024-06-13 22:55:01 UTC

RJIT の and/or 演算に対して生成する命令の対応が不足していたのを修正しています。 https://github.com/ruby/ruby/pull/10856

[c093fd86d2] Matt Valentine-House 2024-06-13 19:28:19 UTC

bootstraptest の YJIT のテストで assert_equal に渡す snippet 内で return を書いてしまっていたのを skip に修正しています。

[4ab7cc1818] Matt Valentine-House 2024-06-13 19:39:11 UTC

同じく bootstraptest の YJIT のテストで GC.compact が未実装の環境での skip を追加しています。

[7d6b7669dc] "dependabot[bot]" 2024-06-13 02:39:10 UTC

GitHub Actions の workflows で利用している github/codeql-action アクションのバージョンを更新しています。

[2677ab1607] "dependabot[bot]" 2024-06-14 02:39:50 UTC

GitHub Actions の workflows で利用している github/codeql-action アクションのバージョンを再度更新しています。

[2e59cf00cc] Nobuyoshi Nakada 2024-06-14 05:10:03 UTC

文字列リテラル内で改行とバックスラッシュによる不正なエスケープが並んでいた時に tokenize が意図したものになっていないという不具合を修正しています。 irb なんかで ripper を使って tokenize している時に困るとのこと。 [ruby-core:118314] [Bug #20578]

[0dcb0fdfcd] Alan Wu 2024-06-14 07:05:38 UTC

テスト時の LeakChecker を RJIT が有効な時は無効にしていたのをやめています。 MJIT はコンパイルのために別プロセスを起動していたので無効にしていたけど MJIT から移行した RJIT ではその問題はないので有効にできるはずということみたいです。 https://github.com/ruby/ruby/pull/10998

[7767b60ff2] David Rodríguez 2024-06-13 18:07:18 UTC

rubygems のテストで helper メソッドを利用するようにするリファクタリング

[62fc473224] David Rodríguez 2024-06-13 15:56:17 UTC

rubygems の gem uninstall 時に default gem の実行ファイルを消してしまわないように修正しているようです。

[7f47469105] Nobuyoshi Nakada 2024-06-14 07:13:13 UTC

parse.y の add_delayed_token() という関数に呼び元で __LINE__ を引数として渡していたのが常に同じだったので add_delayed_token() をマクロ化してそのマクロで __LINE__ を渡すようにして呼び元で明示的に渡さなくて良いようにしています。

[a1f72a563b] Nobuyoshi Nakada 2024-06-14 07:46:00 UTC

拡張ライブラリ ripper で Ripper.tokenize した時に改行後の空白が token 化されないことがあるのを修正しています。 [ruby-core:118315] [Bug #20579]

[6a474ef266] David Rodríguez 2024-06-13 18:22:50 UTC

bundler の install 処理時にインストール先の bin/ ディレクトリが書き込み不可能だった時にエラーを起こさず生成をスキップするようにしています。

ruby-trunk-changes 2024-06-13

今日は m(**nil) のように明示的にキーワード引数を受け付けない宣言をしたメソッドに空 Hash を keyword splat で渡した時の不具合修正などがありました。

[6b6fd16219] David Rodríguez 2024-06-11 16:37:53 UTC

bundler の Bundler::CompactIndexClient#info で変数名の typo をしていた不具合を修正。

[1db19a2dbd] Matt Valentine-House 2024-06-11 13:06:51 UTC

Variable Width Allocation による slot サイズごとの heap のサイズの設定のタイミングを早めに移動して ccan_list の初期化のループにまとめています。

[006ff5e29f] Mari Imaizumi 2024-06-12 14:23:12 UTC

標準添付ライブラリ reline のバージョンを 0.5.9 に更新しています。

[22ad7d72e1] git 2024-06-12 14:24:30 UTC

NEWS の default gems のバージョンリストの reline のバージョンも更新しています。

[bb663fe0b2] Matt Valentine-House 2024-06-12 09:25:52 UTC

gc.c で RVALUE_PINNED() という inline 関数を利用するようにしています。

[e006a58f07] Matt Valentine-House 2024-06-12 09:44:47 UTC

gc.c で RVALUE_MARKED() という inline 関数を利用するようにしています。

[cc700c3d8f] Matt Valentine-House 2024-06-12 09:47:44 UTC

gc.c で RVALUE_MARKING() という inline 関数を利用するようにしています。

[4c38b4f70f] Matt Valentine-House 2024-06-12 09:53:31 UTC

gc.c で RVALUE_WB_UNPROTECTED() という inline 関数を利用するようにしています。

[5cf5370116] Matt Valentine-House 2024-06-12 09:56:47 UTC

gc.c で RVALUE_UNCOLLECTIBLE() という inline 関数を利用するようにしています。

[96974c6c0d] Matt Valentine-House 2024-06-12 10:02:55 UTC

gc.c の VALUE の bitmap の状態を参照する inline 関数群の定義の位置の移動と不要になったマクロの削除などのリファクタリング

[783eaf70f8] tomoya ishida 2024-06-12 16:57:52 UTC

標準添付ライブラリ irb のテストで新しいバージョンで SyntaxError になるので skip するようにしていたところで 3.3 でも SyntaxError になるようになったのでチェックを修正しています。 https://github.com/ruby/irb/pull/969

[85190d4130] Aaron Patterson 2024-06-12 16:43:03 UTC

1271ff72d5b627854c6812baefe796a2976cd793 の変更に対応した Warning.warn の呼び出しの挙動に関するテストを追加しています。 [ruby-core:118279] [Bug #20573]

[ce06924a17] Maxime Chevalier-Boisvert 2024-06-12 17:33:27 UTC

YJIT の --yjit-stats で出力する統計情報に Rust 実装の Context の cache hit の回数を出すようにしています。 https://github.com/ruby/ruby/pull/10979

[c81360db75] Jean Boussier 2024-06-12 10:24:38 UTC

rubyspec にも 1271ff72d5b627854c6812baefe796a2976cd793 の変更に対応した Warning.warn の呼び出しの挙動に関するテストを追加しています。 [ruby-core:118279] [Bug #20573]

[94a8f05f00] Gabriel Sobrinho 2024-06-12 17:50:00 UTC

bundler のテストの spec 名の英文修正。

[7c46aa5ed4] Peter Zhu 2024-06-12 19:07:53 UTC

32683aa18db667ac740bc562eca5989640ae1612 のプロセス終了時の解放処理で Array と Symbol の利用をやめて Array と Symbol の解放処理の遅延をしていたのをやめた影響で環境変数 RUBY_FREE_AT_EXIT を指定してプロセス終了時に徹底したメモリ解放をするモードにすると異常終了していたそうで、Symbol が dynamic string だった時に参照している fstring への参照を消すようにしています。 [Bug #20577]

[333d12bb19] "dependabot[bot]" 2024-06-13 02:24:55 UTC

GitHub Actions の独自アクションの定義で利用している actions/checkout アクションのバージョンを更新しています。

[11bfa975f9] "dependabot[bot]" 2024-06-13 02:39:34 UTC

GitHub Actions の workflows で利用している actions/checkout アクションのバージョンを更新しています。

[ab51e5fec4] "dependabot[bot]" 2024-06-13 03:16:52 UTC

GitHub Actions の workflows で利用している ruby/setup-ruby アクションのバージョンを更新しています。

[e4385baaa2] Koichi Sasada 2024-06-13 03:11:32 UTC

96974c6c0de7471a7bb852efc512680371e97972gc.c のリファクタリングで bitmap の参照をする RVALUE_XXXX_BITMAP() 系のマクロ定義を削除していたのをやめてやはりマクロ経由で bitmap 参照するようにしています。また check_rvalue_consistency() から呼ぶ check_rvalue_consistency_force() が inline 関数の RVALUE_XXX() 群を呼んでいるためそこからまた check_rvalue_consistency() が再帰的に呼ばれてしまっていたのでここでマクロを利用するようにしています。

[fc33559c40] Koichi Sasada 2024-06-13 02:48:48 UTC

メソッド定義に明示的に m(**nil) のようにキーワード引数を受け取らないことを明示する宣言をした場合にそれに m(**{}) のように空の Hash を keyword splat して渡してもエラーになってしまっていた不具合を修正しています。 3.3 からの変化とのこと。 [ruby-core:118269] [Bug #20570]

[513520a173] Koichi Sasada 2024-06-13 07:31:23 UTC

e4385baaa2bfe4c0a6540f4c996df4ccff71cdca の続きでもう一カ所 gc_move() から inline 関数の RVALUE_MARKED() を呼ばずに同様の内容を直接展開して check_rvalue_consistency() の再帰呼び出しを避けるようにしています。

[205da89680] Sutou Kouhei 2024-06-13 09:47:55 UTC

拡張ライブラリ stringio のバージョンを 3.1.2 に更新しています。

[8b843b0dc7] git 2024-06-13 09:49:46 UTC

NEWS の default gems のバージョンリストの stringio のバージョンも更新しています。

ruby-trunk-changes 2024-06-12

今日は ISeq の peephole 最適化で命令列へのコンパイルが無限ループに陥ることがある不具合の修正などがありました。

[ad9fe6f376] Matt Valentine-House 2024-06-10 15:41:12 UTC

.gdbinit で misc/gdb.py を読み込むための source コマンドに -s オプションをつけるようにしています。

[3e84da0970] David Rodríguez 2024-06-06 11:38:16 UTC

bundler で Gemfile.lock で指定されている bundler のバージョンを利用する処理を起動方法によらず有効にするようにしているようです。

[9e7ccc00bc] Kevin Newton 2024-06-11 12:28:08 UTC

bundler のテストで prism parser 利用時にエラーメッセージが変わることに対応するように assertion を修正しています。

[89ebe8993f] Kevin Newton 2024-06-08 00:27:02 UTC

GitHub Actions の prism parser を利用したテストの workflow のテスト対象を増やしています。

[32683aa18d] Peter Zhu 2024-06-10 14:02:05 UTC

プロセス終了時の GC の mark のための rb_global_tbl を解放する処理の途中で Symbol と Array オブジェクトを利用しないようにしています。このために終了時に Symbol と Array の解放処理を遅延させていたのを不要にしています。

[568132af16] David Rodríguez 2024-06-06 10:57:26 UTC

bundler の Gemfile.lock に gem をダウンロードする remote に直接パスワードなどが埋め込まれている時の対応をしています。もう現在は未対応だけど古いバージョンの bundler などでは使われているからそれで動くように消さないようにするためって感じのようにみえます。

[39019b6a63] Maxime Chevalier-Boisvert 2024-06-11 16:46:11 UTC

YJIT の Rust 実装で Context の cache のサイズを --yjit-stats で出力するようにしているようです。

[c735f4947e] gartens 2024-06-11 17:12:23 UTC

拡張ライブラリ openssl の OpenSSL::X509::Certificate#sign の引数の digest に nil を渡すのを受付けるようにしています。 鍵の種類によって OpenSSL の X509_sign() に NULL を渡すことができるのでそれを指定できるようにしているようです。 https://github.com/ruby/openssl/pull/761

[ec1ea2c5b9] Takashi Kokubun 2024-06-11 17:17:41 UTC

YJIT の統計情報の num_contexts_encoded というカウンターを --yjit-stats を指定しなくてもインクリメントするカウンタの仲間入りさせています。

[0a6b1a4d9d] Takashi Kokubun 2024-06-11 18:28:03 UTC

tool/redmine-backporter.rb で commit hash に commit: の prefix をつけるための判定に先頭 8文字だけの commit hash にも対応するようにしています。

[1271ff72d5] Aaron Patterson 2024-06-10 23:05:03 UTC

警告の対象のカテゴリが無効なので出力がされない時でも Warning.warn のフックは呼ばれていたのを呼ばないようにしています。 [ruby-core:118279] [Bug #20573]

[206465e84d] Nobuyoshi Nakada 2024-06-11 01:50:19 UTC

parse.y の dispatch_heredoc_end() という関数の定義を本体と ripper 用とで関数ごと分けていたのを関数内の preprocessor 分岐で最小限の分離にして共通部分を共有するようにしています。

[39c9d99f6c] Koichi Sasada 2024-06-12 01:27:25 UTC

rubyspec の一時ディレクトリ作成の処理で tmp("") を呼んでディレクトリ作成をしておくようにしています。並列実行時に誤って一時ディレクトリ作成時に umask 0 が指定された状態になっちゃうことがあったみたいです。なるほど umask のプロセスのグローバルな状態だからか……。

[0bc91fa6df] Nobuyoshi Nakada 2024-06-12 05:46:29 UTC

6086bae5c85cc297003012afc9cf5966fc75746a の mspec での一時ディレクトリ作成時の File.umask のチェックを Windows 環境では行わないようにしています。

[01b13886dc] Nobuyoshi Nakada 2024-06-07 08:01:14 UTC

プロセス終了時に可能なかぎり全てのメモリ領域を解放してメモリリーク検出のツールを使いやすくするための環境変数 RUBY_FREE_AT_EXIT の指定時の警告を experimental カテゴリの警告にしています。 [ruby-core:118226] [Bug #20562]

parse.y に識別子と定数名のいずれかになる ident_or_const というその名の通りのルールを追加しています。

[2eb31a6254] ydah 2024-06-12 06:01:49 UTC

configure.ac のメッセージの typo 修正。

[c56d0adfa6] tomoya ishida 2024-06-12 07:47:58 UTC

irb のテストで IRB モジュールの @existing_rc_name_generators というインスタンス変数をリセットする処理を setup から teardown での後始末に移動しています。 https://github.com/ruby/irb/pull/968

[278a7cb057] Yudai Takada 2024-06-12 10:42:01 UTC

Dir.home の rdoc 用コメントの typo 修正。

[32a555ea53] Nobuyoshi Nakada 2024-06-12 10:03:33 UTC

while と until をネストさせたような構文を書くと ISeq の peephole 最適化でジャンプ先のラベルの差し替えで最適化処理自体が無限ループに陥ってコンパイルが終わらなくなってしまう不具合を修正しています。 [ruby-core:118273] [Bug #20572]

ruby-trunk-changes 2024-06-11

今日は主に標準添付ライブラリ reline の更新や magic comment の shareable_constant_value を利用した時の ISeq の binary フォーマットへの変換の不具合修正などがありました。

[e8bd745c17] tomoya ishida 2024-06-10 13:57:21 UTC

標準添付ライブラリ reline の Reline::Terminfo の定義のために fiddle を require する時の警告を抑制するため一時的に $VERBOSE を nil にセットするようにしています。fiddle の bundled gems 化のために警告を出すようにしたからですね。 https://github.com/ruby/reline/pull/721

[3ebab4b64d] Andrew Konchin 2024-06-07 16:01:53 UTC

spec/ruby に upstream から最新版をマージしています。

[3cc9a12679] Andrew Konchin 2024-06-10 10:19:52 UTC

rubyspec の RUBY_DESCRIPTION 定数についてのテストを RUBY_ENGINE が ruby 以外か RbConfig::TOPDIR が設定されている時? に実行除外するようにしています。コミットログによると YJIT が有効な時に skip しようとしてるみたいですけどそれにしては guard の条件がよくわからないですね。

[1d0d8a89d4] tomoya ishida 2024-06-10 15:31:28 UTC

標準添付ライブラリ reline で Reline::Terminfo が利用できない時 fallback として delete などのキーに対応する エスケープシーケンスを決め打ちで持つようにしています。 https://github.com/ruby/reline/pull/722

[556bbf64e0] Peter Zhu 2024-06-10 15:11:18 UTC

Symbol#inspect の GC 関連の不具合のためのテストを YJIT/RJIT が有効な時に skip していたのを削っています。 1471a160ba1bbdca9d6c4b21260793c1414253f3 が修正になったみたいです。

[f0001a4fa7] Jean Boussier 2024-06-10 13:12:54 UTC

magic comment の shareable_constant_value が指定されていてリテラルを Ractor 間で共有できるオブジェクトにするため特殊なメソッドを呼ぶための VM が内部的に使う rb_mRubyVMFrozenCore が ISeq 内に埋め込まれていたので、ISeq のバイナリフォーマットへの読み書き時にうまく処理されなかったので VM_SPECIAL_OBJECT_VMCORE という整数の定数を埋め込むように修正しています。 [ruby-core:118268] [Bug #20569]

[6086bae5c8] Koichi Sasada 2024-06-11 07:13:27 UTC

rubyspec のドライバの mspec で一時ディレクトリを作成する helper で一時ディレクトリの作成時に umask で world-writable にならないよう other の write 権限を落とすようにしています。また元々対象のディレクトリが存在した場合も権限をチェックして world-writable だったら例外を発生させて中断させるようにしています。

[0ccb80d6bf] KJ Tsanaktsidis 2024-06-09 11:15:39 UTC

configure でコンパイラオプションの -fstack-protector や -mbranch-protection、-D_FORTIFY_SOURCE などのオプションを格納する $hardenflags という変数を導入してこれを $cflags に追加するようにして、$XCFLAGS にこれらのオプションを追加していたのをやめています。 configure 時に明示的に CFLAGS などの変数でオプションを指定した時にオプション検出のためのコンパイルにも含まれてしまってうまく設定されないという問題を回避するためみたいです。 [ruby-core:116039] [Bug #20154] [ruby-core:118150] [Bug #20520]

[b824b13ee9] Jun Aruga 2024-06-11 11:04:16 UTC

Travis-CI の設定でエラー時にメールそ送信するアドレスを変更しています。うまくメールが届かなかったからみたいです。