ruby trunk changes

ruby-trunk-changes 2025-04-16

今日は rb_io_mode_t という enum 型の導入や GitHub Actions の利用するアクションのバージョン更新などがありました。

[2cf95e2e04] Nobuyoshi Nakada 2025-04-15 23:29:23 UTC

rubygems のテストで拡張ライブラリを含む gem の install の処理で利用する rake のバージョンを正しくするために build_rake_in というユーティリティメソッド? を利用するようにしています。

[49c29cff47] Hiroshi SHIBATA 2025-04-16 01:22:53 UTC

GitHub Actions の workflows で actions/checkout、ruby/setup-ruby、advanced-security/filter-sarif などの actions のバージョンをまとめて更新しています。

[02152501a4] Hiroshi SHIBATA 2025-04-16 01:23:53 UTC

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

[a4eb81a083] Hiroshi SHIBATA 2025-04-16 01:39:59 UTC

GitHub Actions の CodeQL で静的チェックを行う workflow で advanced-security/filter-sarif アクションのバージョンを更新しています。見落してましたが 49c29cff479546df7e267d97ceb1f08a4d537a8e では逆にバージョンをダウンさせてしまってたみたいです。

[51952929e1] Hiroshi SHIBATA 2025-04-16 01:59:42 UTC

2cf95e2e0428a5cc07734789bbf618c014ad5c2drubygems のテストの変更で rubocop の指摘を修正するため空白を追加しています。

[d842554769] Nobuyoshi Nakada 2025-01-02 01:44:54 UTC

tool/rbinstall.rb の RbInstall.no_write メソッドに渡すオプションから :dir_mode を抜き出してるところに理由をコメントで追記しています。

[8d21f666b8] Samuel Williams 2025-04-16 07:50:37 UTC

構造体 rb_io_t のメンバー mode のために enum rb_io_mode という enum 型の定義を追加しています。ビットフラグなんですけど enum にするのはどういう動機なんだろう。昨日拡張ライブラリ stringio で rb_io_mode 型があったら使うようにしてましたけど、あれは先行して入れてたんですね。 https://github.com/ruby/ruby/pull/7894

[bbf873521a] "NARUSE, Yui" 2025-04-16 07:54:33 UTC

Enumerable の rdoc 用コメントに Enumerable#size メソッドの挙動のルールというかポリシーについて追記しています。 [ruby-core:121140] [Bug #21152]

ruby-trunk-changes 2025-04-15

今日は ObjectSpace._id2ref のために必要なテーブルの更新を必要になるまで遅延する最適化や IO.select の timeout に Float::INFINITY を受け付ける変更などがありました。

[1c8154e5c9] ydah 2025-04-14 13:05:08 UTC

parse.y のメソッド呼び出しのための "." と "::" のアクションを別々に書いてたのを call_op2 ルールを利用してまとめるリファクタリング

[b68172caad] ydah 2025-04-14 13:12:45 UTC

parse.y の user defined rule の f_optarg() を f_opt_arg() と一貫性のため改名しています。

[0606046c1a] Jean Boussier 2025-04-10 09:53:39 UTC

構造体 rb_objspace_t のメンバー id_to_obj_tbl の内容が必要になるまでは st_table を確保せず NULL をセットしておくようにして確保を遅延するようにしています。これを使うのは ObjectSpace._id2ref が呼ばれる時だけなのでめったに必要になることがないとのこと。必要になったらその瞬間に rb_gc_vm_lock()/rb_gc_vm_unlock() で VM 全体のロック取得してテーブルをその時点で構築するみたいです。この瞬間はけっこう思い処理になりそうですね。ついでに(?) _id_to_ref まわりの例外のメッセージの英文を修正しています。

[e1f544c1cf] Étienne Barrié 2025-04-10 13:26:06 UTC

lldb 用のプラグインの misc/lldb_rb/ で struct RBasic の型を得るためのスクリプトが誤って YJIT 用の yjit::cruby::autogened::RBasic を参照してしまうので "::" をつけてトップレベルの型を取得するようにしています。

[698ef864a5] Tanaka Akira 2025-04-15 06:55:40 UTC

IO.select の timeout の引数に Float::INFINITY を受け付けてタイムアウトなしを指定できるようにしています。 [ruby-core:118467] [Feature #20610]

[72dc16aa65] Luke Gruber 2025-04-02 17:04:49 UTC

bootstraptest の Ractor のテストにインスタンス変数をもつオブジェクトなどの Ractor 間の移動のサポートのテストを追加しています。

[00389b664b] David Rodríguez 2025-04-12 13:53:13 UTC

bundler で誤った警告メッセージが出ることがある不具合の修正。

[3cb573ee55] David Rodríguez 2025-04-12 14:01:27 UTC

bundler で条件にあう gem のバージョンをチェックする条件の一部を paltform のみチェックするよう修正しています。

[0ad7cf17a0] David Rodríguez 2025-04-12 18:00:54 UTC

3cb573ee55f3d3af03f3a232ba442bd949277f17 からの続きで bundler のコメントを修正しています。

[c910e85b02] David Rodríguez 2025-04-12 16:04:14 UTC

3cb573ee55f3d3af03f3a232ba442bd949277f17 からの一連の変更の続きで該当部分の処理をメソッドに切り出しています。

[1b18810ed9] David Rodríguez 2025-04-12 17:43:52 UTC

bundler の Bundler::Definition#resolution_packages を #resolution_base と改名しています。

[1929e73a36] David Rodríguez 2025-04-12 17:45:01 UTC

bundler で bundle lock --add-platform サブコマンドで platform の指定が条件を満たせない時? の例外を発生させるようにしています。

[b8b4c15695] David Rodríguez 2025-04-12 19:06:34 UTC

bundler の bundle lock サブコマンドの --normalize-platforms オプション指定時に正しい platform 名ないものを削るようにしているようです。

[62b7ae955a] Jean Boussier 2025-04-15 04:34:03 UTC

拡張ライブラリ jsonJSON::NaN と JSON::Infinity の定数に Float のゼロ除算で値を作ってたのを Float::NAN および Float::Infinity 定数を直接参照するようにしています。

[1afc539900] Jean Boussier 2025-04-15 04:35:50 UTC

拡張ライブラリ jsonJSON::JSONError のクラスメソッド JSON::JSONError.wrap というのを削除しています。

[26a9ccbf83] Jean Boussier 2025-04-15 04:43:02 UTC

拡張ライブラリ json で Kernel に追加される j と jj という private メソッドを deprecated にしています。

[77a52787a6] Jean Boussier 2025-04-15 04:43:23 UTC

拡張ライブラリ json の Kernel#JSON() メソッドを JSON.[] メソッドに委譲するようにしています。このメソッド知らなかったな。

[f6fddbd337] "dependabot[bot]" 2025-04-10 14:40:32 UTC

GC の mmtk 実装のための Rust の依存パッケージ crossbeam-channel のバージョンを更新しています。

[28491e53cd] Samuel Williams 2025-04-15 11:15:26 UTC

拡張ライブラリ stringio で rb_io_mode_t 型を利用するようにしています。 https://github.com/ruby/stringio/pull/129

ruby-trunk-changes 2025-04-14

今日は拡張ライブラリ strscan の不具合修正、bundler の更新などがありました。

[e996699820] ydah 2025-04-13 14:02:14 UTC

parse.y の user defined rule の asgn() の未使用の第1引数を削除しています。

[088fd968ed] ydah 2025-04-13 17:13:58 UTC

parse.y に条件演算子に対応する ternary というルールを追加するリファクタリング

[e255964542] ydah 2025-04-13 17:33:28 UTC

parse.y に range_expr() という user defined rule を追加するリファクタリング

[6d00fa2270] Nobuyoshi Nakada 2025-04-13 12:48:34 UTC

拡張ライブラリ etc の extconf.rb で構造体メンバーの存在チェックをするメソッド呼び出しを関連する関数の定義がある時だけ呼ぶようにしています。

[311167ee3a] Nobuyoshi Nakada 2025-04-13 12:59:26 UTC

拡張ライブラリ etc で preprocessor の分岐によっては未使用になる関数の警告抑制のため (void) のキャストつきで参照するのを Init_etc() 関数に追加しています。

[f65aad61f7] Hiroshi SHIBATA 2025-04-14 01:24:45 UTC

gems/bundled_gems の win32ole のバージョンを更新しています。

[8ad5dd7998] git 2025-04-14 02:21:17 UTC

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

[c4a2f72b1b] David Rodríguez 2025-04-07 15:42:22 UTC

bundler の bundle lock の --normalize-platforms の不具合修正。

[66aa713980] David Rodríguez 2025-04-10 14:42:08 UTC

bundler の Bundler::Installer.load_plugin で冗長な処理を省略。

[ce2640dde8] David Rodríguez 2025-04-10 19:03:44 UTC

bundler の platform 固有のバージョンが lockfile に書かれてた時の依存関係更新の処理の不具合の修正。

[38024772ca] David Rodríguez 2025-04-10 18:32:25 UTC

bundler の bundle update に --verbose オプションを付けた時の不要な? メッセージの出力の抑制。

[0db87b8943] Jean byroot Boussier 2025-04-13 03:42:32 UTC

拡張ライブラリ strscan の文字列バッファのサイズが int の範囲を越える時の StringScanner#pos でのオーバーフローを修正。値は long で保持しているけど INT2FIX() や NUM2INT() で変換していたため LONG2FIX()/NUM2LONG() を使うようにしています。 https://github.com/ruby/strscan/pull/147

[ad8cb532d5] Sutou Kouhei 2025-04-13 04:18:00 UTC

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

[bef59edea0] git 2025-04-14 07:31:25 UTC

NEWS の default gems のバージョンリストに strscan の項目を追加しています。

[22667fcc38] Samuel Williams 2025-04-14 07:46:11 UTC

rubyspec の C API のテスト用拡張ライブラリのためのヘッダファイルで RUBY_VERSION_IS_3_5 という特定の ruby バージョンを示すマクロ定義を追加しています。ずいぶん恣意的なマクロですね。RUBY_VERSION_SINCE() で定義しているので今はいいけど master が 3.6 になったら定義も変更しないといけないし。

[4e970c5d5a] Samuel Williams 2024-11-20 21:38:13 UTC

ruby_thread_has_gvl_p() という関数を公開 C API 関数にしています。

[c13ac4d615] Samuel Williams 2024-11-01 02:45:43 UTC

string.c や array.c の関数のいくつかに ruby_thread_has_gvl_p() を利用して現在の thread が GVL を取得していることを確認する RUBY_ASSERT() での assertion を追加しています。 [ruby-core:119783] [Feature #20877]

ruby-trunk-changes 2025-04-13

今日は bundled gems の csv のバージョン更新や標準添付ライブラリ mkmf.rb の修正などがありました。

[a35a101b4c] ydah 2025-04-08 11:38:18 UTC

parse.y のインデントの修正のみ。

[29b26fd3e7] Daniel Colson 2025-04-12 18:04:57 UTC

regexec.c の MEMOIZE_LOOKAROUND_MATCH_CACHE_POINT() というマクロに引数を受けつけるように定義を修正しています。

[cfa74dda45] git 2025-04-13 07:00:08 UTC

gems/bundled_gems と NEWS の bundled gems のバージョンリストの csv のバージョンを 3.3.4 に更新しています。

[8c9cd65d82] Nobuyoshi Nakada 2025-04-13 07:53:18 UTC

標準添付ライブラリ mkmf.rb で生成する Makefile で変数 CLEANLIBS の定義の構築方法を修正しています。

[3700ae2e99] Haruna Tsujita 2025-04-13 11:46:40 UTC

拡張ライブラリ socket の ext/socket/ipsocket.c 内の構造体メンバー名の typo を修正しています。 https://github.com/ruby/ruby/pull/13104

ruby-trunk-changes 2025-04-12

今日は構造体の未使用のメンバー削除という変更だけでした。

[3628e9e30d] Aaron Patterson 2025-04-10 18:53:49 UTC

構造体 rb_thread_t で未使用になってた profile 用の stat_insn_usage というメンバーを削除しています。 YARV で導入したけどいつのまにか使わなくなってたらしいです。

ruby-trunk-changes 2025-04-11

今日は主に標準添付ライブラリ resolv の Ractor 対応などがありました。

[54a85caed4] HoneyryderChuck 2024-10-29 14:43:55 UTC

標準添付ライブラリ resolv で /etc/resolv.conf などから読み込んだデータを freeze して返すようにしています。

[e3dd766e99] HoneyryderChuck 2024-10-29 17:58:27 UTC

標準添付ライブラリ resolv の Resolv::DNS::Resource::ClassHash という定数を Hash から無名 Module にして特異メソッドで Resolv::DNS::Resource の名前空間の配下に定数を追加することで値を保持する実装にしています。 Ractor safe にするためってことだけど定数を動的に定義するのは大丈夫なんだっけ?

[f13e86a70e] John Hawthorn 2025-03-04 01:03:50 UTC

.gdbinit でプロセスを起動していない状態でも組み込みクラスの名前だけは rp で表示できるようにしています。

[af69421c91] Hiroshi SHIBATA 2025-04-11 01:49:26 UTC

doc/windows.md に Windowsサードパーティーライブラリのインストールに pacman 以外のパッケージマネージャなどを利用する際の configure のサンプルを追記しています。

[1bd029b1ea] Hiroshi SHIBATA 2025-04-11 01:55:31 UTC

doc/windows.md にビルド要件の VC のバージョンや SDK runtime のバージョンを追記しています。

[a2b39e5ca6] Hiroshi SHIBATA 2025-04-11 02:01:05 UTC

doc/windows.md に git の設定の core.autocrlf について追記しています。

[0e79279327] Hiroshi SHIBATA 2025-04-11 02:11:38 UTC

doc/windows.md に 1bd029b1eaa76496f376d92059db5f0b355ad03b で追記した VC の要求バージョンの記述をより具体的に書いています。

[8a15f80653] Hiroshi SHIBATA 2025-04-11 02:37:10 UTC

GitHub Actions の Windows 環境での build matrix の vs というラベルでバージョン指定していたものを os として指定するように変更しています。

[0a35c5b4d9] Hiroshi SHIBATA 2025-04-11 03:20:27 UTC

GitHub Actions の Windows 版の workflow で os が 2022 で vc が 2019 という組み合わせのビルドを増やしています。

ruby-trunk-changes 2025-04-10

今日は class 文で子クラスの定義をした時のフック Module#const_added と Class#inherited の呼ばれる順序を元に戻す変更などがありました。

[ce0d5cc069] Nobuyoshi Nakada 2025-04-09 10:14:36 UTC

File.dirname のテストで Windows でひとつ assertion を除外していたのを drive letter を考慮した assertion の書きかたにして対応しています。

[0d6263bd41] Yusuke Endoh 2025-04-09 10:49:21 UTC

VM 命令列(ISeq) へのコンパイル時の coverage のための trace の挿入で line coverage が取れない時にもフラグを立ててしまっていて実行時に異常終了する可能性があった不具合の修正。 [ruby-core:121556] [Bug #21220]

[c5c0bb5afc] Xavier Noria 2025-04-08 20:29:05 UTC

de48e47ddf78aba02fd9623bc7ce685540a10743de097fbe5f3df105bd2a26e72db06b0f5139bc1a で Module#const_added と Class#inherited の呼ばれる順番を入れ替えたのが、チケットでの議論の結果元の順序に戻しています。 [ruby-core:121077] [Misc #21143] [ruby-core:121413] [Bug #21193]

[3390b6a515] Hiroshi SHIBATA 2025-03-04 09:44:28 UTC

lib/bundled_gems.rb のテスト spec/bundled_gems_spec.rb に gem の有効化に失敗した時のテストを追加しています。

[598b0e8b72] Hiroshi SHIBATA 2025-03-04 09:46:40 UTC

default gems の require 時の警告を出力するための lib/bundled_gems.rb で Gem::BUNDLED_GEMS.force_activate で Gemfile がない時(コード上で Bundler の setup をした時?)の対応を追加しています。 3390b6a515c4195905ef3be715fb611cce7ccaf5 で追加したテストに対応した変更かな。

[b47a04eb91] Hiroshi SHIBATA 2025-04-10 07:02:30 UTC

lib/bundled_gems.rb の Gem::BUNDLED_GEMS.force_activate の再修正。

[08ce6268ee] Xavier Noria 2025-02-16 19:30:40 UTC

c5c0bb5afcbbc054c9e8f4e4b9209253d42f7326 に関連して Module#const_added の rdoc 用コメントに class 文での子クラス定義時の Class#inherited との呼ばれる順番についてサンプルを追記しています。また rubyspec にこの順番についてのテストを追加しています。

[8003a06854] Nobuyoshi Nakada 2025-04-10 08:39:56 UTC

doc/windows.md のビルド手順で MinGW でのビルド時のコマンド例で sh の引数などのファイルパスのデリミタには "/" を使うように記述しています。

[684cfa42d7] Hiroshi SHIBATA 2025-04-10 08:50:32 UTC

prelude.rb で Binding#irb で require "irb" を実行する定義で LoadError 時に Gem::BUNDLED_GEMS.force_activate を実行してからリトライする時に retry 文を使っていたのでリトライ回数が無制限になってたのを require "irb" するだけにして必要以上にリトライする可能性をなくしています。

[756479324f] David Rodríguez 2025-04-08 14:24:01 UTC

bundler のテストを更新し、tool/sync_deffault_gems.rb で bundler のテストのディレクトリ構成の変更に追随させています。