ruby-trunk-changes 2023-06-05

今日は主に昨日の標準添付ライブラリ singleton の変更の revert や irb のバージョンアップなどがありました。

[4275a8098e] Stan Lo 2023-06-04 15:24:26 UTC

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

[068672cfe8] git 2023-06-04 15:25:17 UTC

4275a8098e59c43daa4a85efce9465af296f46c9 に追随して NEWS の default gems バージョンリストも更新しています。

[3a4302c742] Hiroshi SHIBATA 2023-06-05 01:09:52 UTC

bebd05fb51ea65bc57344b67100748200f8311eb の標準添付ライブラリ singleton のクラスを clone した時の実装の変更を revert しています。僅かながら非互換が、って書いてたけどそれが Rails のテストで影響を受けてたらしいです。僅かじゃなかった。 https://github.com/ruby/singleton/pull/7

[3fe0f8c68b] Yla Aioi 2023-06-05 03:05:58 UTC

コマンドラインオプション --help で表示するヘルプに -y/--yydebug オプションの説明を追加しています。また man ページには --yydebug が "DO NOT USE." って書かれてたのを「このオプションは動作保証ないよ」みたいな感じにちょっと弱めた表現にしています。 [Bug #19685]

[542c70aab7] Daniel Pepper 2023-06-05 04:29:32 UTC

3a4302c742622dda9fbaeeb90fd42364badc423d で revert された標準添付ライブラリ singleton の bebd05fb51ea65bc57344b67100748200f8311eb の変更をリトライしています。というか方針自体変わってて Singleton#instance の書きかたをワンライナーっぽくリファクタリングしています。

ruby-trunk-changes 2023-06-03

今日は主に標準添付ライブラリ reline のバージョンアップや Scheduler を設定している Thread 内での Thread#join のタイムアウトが効かない不具合の修正などがありました。

[e38fb050fa] Nobuyoshi Nakada 2023-06-02 12:18:00 UTC

標準添付ライブラリ reline で拡張ライブラリ fiddle を利用して libcurses を利用するところで RUBY_VERSION で分岐していたのを削除して Fiddle::TYPE_VARIADIC の定数の存在チェックだけにしています。

[8305681729] Stan Lo 2023-06-02 13:54:02 UTC

標準添付ライブラリ irb のテストで envutil の require を test/irb/helper.rb の先頭にまとめています。

[22bea37cfc] Jean Boussier 2023-06-02 08:18:37 UTC

GC.latest_gc_info のテストで Major GC が行なわれるまでループする処理で GC.stat(:major_gc_count) で Major GC の回数をみていたのをやめて GC.latest_gc_info(:need_major_by) 最後の GC が Major GC の状態になるまでループするようにしています。Major GC が行なわれたけどその後 Minor GC も走ったというレアケースで失敗したのかな?

[4e26ae3cb9] Takashi Kokubun 2023-06-02 21:16:52 UTC

YJIT の Rust 実装で stats の実装のテストのための条件コンパイルを if でなく #[cfg()] を利用するように修正しています。 https://github.com/ruby/ruby/pull/7899

[bebd05fb51] Daniel Pepper 2023-06-03 00:35:11 UTC

標準添付ライブラリ singleton で Singleton.__init__ というクラスメソッドで Singleton モジュールを include した時の処理をまとめていたのを呼び元に展開し、Singleton を include したクラスが clone で複製された時も Singleton.__init__ を呼ぶかわりにそのクラスにも Singleton を include するようにしています。 Class#clone ってそのクラスの ancestors もコピーするから再度 include した状態になるからごく僅かながら非互換があるような気がするけど実害はないかな。

[7b803eafa2] yui-knk 2023-06-02 12:39:05 UTC

拡張ライブラリ ripper の ext/ripper/README の必要なライブラリから bison を消しています。

[a4d92475f6] Vinicius Stock 2023-06-02 22:56:15 UTC

標準添付ライブラリ rdoc のファイル全体的にファイル末尾の空行を削除しています。

[0402193723] Samuel Williams 2023-06-03 03:41:36 UTC

non-blocking Fiber のための Scheduler を設定している Thread 内で Thread#join にタイムアウトを引数に渡した時にタイムアウトが効いてなかった不具合を修正しています。 https://github.com/ruby/ruby/pull/7903 [ruby-core:113745] [Bug #19709]

[e6bd1852fb] Stan Lo 2023-06-03 08:27:57 UTC

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

[1bb7c3c447] git 2023-06-03 08:28:54 UTC

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

[4589056384] Nobuyoshi Nakada 2023-06-02 11:25:08 UTC

ruby のテスト用の test/unit でテストファイル自体の load が失敗した時にそれを失敗件数に計上するようにしています。

[73a31546aa] Nobuyoshi Nakada 2023-06-03 11:50:40 UTC

Module#attr_accessor の不正な引数に対するテストに代入記号つきの名前を渡した時のテストを追加しています。

ruby-trunk-changes 2023-06-02

今日は主に IO まわりの C の構造体の名前の変更とか RubyVM::YJIT.stats_string メソッドの新規追加などがありました。

[8a8618d4f3] Peter Zhu 2023-05-31 13:57:33 UTC

string.c の str_buf_cat4() で RSTRING_GETMEM() で取得した文字列バッファのポインタとサイズを改めて構造体メンバーから参照していたところがあったのでローカル変数に取っておいた内容を使うようにしています。

[a16cffe384] Peter Zhu 2023-05-31 13:58:17 UTC

同じく string.c の str_buf_cat4() で str_capacity() を利用するようにして文字列バッファが slot に埋め込まれているかどうかの分岐を消しています。

[a5e1d549b5] Nobuyoshi Nakada 2023-06-01 04:33:59 UTC

Array#all? と Array#any? の rdoc 用コメントに空配列の時の挙動について明記しています。書いてなかったっけ? と思ったけどサンプルに書いてあるだけだったみたいですね。

[47a8de6095] Samuel Williams 2023-06-01 12:46:10 UTC

構造体 rb_io_t の構造体タグである struct rb_io_t のほうを rb_io にして "_t" という suffix を削っています。また struct rb_io_enc_t は struct rb_io_encoding に改名しています。うーん、まあタグのほうを使うことはあまりないとは思うし気持ちはわかるけど、一応公開されているシンボル、とは違うけど名前だしどうかなぁ……。 https://github.com/ruby/ruby/pull/7886

[b7ee51e81d] Samuel Williams 2023-06-01 13:54:08 UTC

rb_io_event_t という型に typedef している enum 型に enum rb_io_event という名前をつけています。これも型名に "_t" をつけたくないという気持ちみたいですがなんか意味あるのかな……。

[77d1b08247] eileencodes 2023-02-07 20:46:50 UTC

クラス変数のキャッシュ機構にクラス/モジュールを clone した後で元のほうのクラス変更の内容を変更した時にコピー先のクラス/モジュールでクラス変数を参照した時にも変更した値が取れてしまうという不具合があったとのことで cref の情報も複製するようにしています。 [ruby-core:112048] [Bug #19379]

[39968112f5] Takashi Kokubun 2023-06-01 16:16:21 UTC

RubyVM::YJIT.stats_string というメソッドを追加して YJIT の統計情報を文字列として取得できるようにしています。 https://github.com/ruby/ruby/pull/7857

[2d2893f206] Stan Lo 2023-06-01 20:10:08 UTC

標準添付ライブラリ irb のテストからテスト用のユーティリティ envutil を require するのに require_relative を利用するようにしています。またテストのために irb プロセスを起動するのにダミーの irbrc を渡すようにしていたのをやめて、さらに環境変数 TERM に dumb をセットして起動するようにしています。最後のは色付けを抑制するためかな?

[10621f7cb9] Aaron Patterson 2023-06-01 21:55:36 UTC

77d1b082470790c17c24a2f406b4fec5d522636b のクラス変数のキャッシュの不具合修正を revert しています。

[3a4206c7a1] yui-knk 2023-05-31 12:02:04 UTC

拡張ライブラリ ripper の extconf.rb で生成する Makefile に BISON 変数の設定を埋め込む必要がなくなったので関連コードを削除しています。

[5a3c782a1d] "dependabot[bot]" 2023-06-02 02:59:17 UTC

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

[729b92ea46] Nobuyoshi Nakada 2023-06-01 13:15:54 UTC

標準添付ライブラリ uri の gemspec ファイルでサポートする ruby のバージョンを 2.4 から 2.5以降に引き上げています。

[21b61b21c2] Nobuyoshi Nakada 2023-06-02 01:34:43 UTC

win32/Makefile.sub で SCRIPTPROGRAMS という変数が空の時にそれをターゲットとするルールを有効にしないよう !if ... !end という……なんていうんだろこれ、マクロ? で囲んでいます。 nmake はターゲットが空なのを許容してくれないからとのこと。

[c32a30ec09] Hiroshi SHIBATA 2023-06-02 08:20:28 UTC

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

[d7e82512e4] git 2023-06-02 08:21:30 UTC

c32a30ec09997b3ee846a33a6873ed0e66c8dc94 に追随して NEWS の bundled gems のバージョンリストの stringio のバージョンも更新しています。

ruby-trunk-changes 2023-06-01

今日は主に昨日の構造体 rb_io_t を拡張ライブラリから隠す変更のとりやめがありました。

[1ac17693de] Peter Zhu 2023-05-31 13:22:52 UTC

Hash の Variable Width Allocation 対応に関連した GC のテストでデバッグのためにエラー時のメッセージに GC.stat の :read_barrier_faults の変化を含めるようにしています。

[55c9c658bd] Benoit Daloze 2023-05-31 16:11:18 UTC

GitHub Actions の古い ruby で rubyspec を実行する workflow で 2.7 を対象から外して、かわりに 3.0 を追加(というか 3.0 は追加忘れてた?)しています。

[e8212c55f9] Peter Zhu 2023-05-31 18:01:11 UTC

拡張ライブラリ objspace の fstring が WB-protected になってることを確認するためのテストで確実性のため full GC を4回回しておくようにしています。なんで 4回? と思ったら e87f6c899e55f4d9452ce4d75cf2a725ae736aff の変更で RGenGC の old に昇格するのに 3回 mark されないといけなくなったのでその変更への対応のためですね。

[e4163112f6] Peter Zhu 2023-05-31 20:16:32 UTC

1ac17693de4e80f7b1e11622dd77376e409cd4eaGC のテストのエラー時のメッセージにさらにデバッグ用に GC.stat_heap の変化も含めるようにしています。

[85dcc4866d] "NARUSE, Yui" 2023-05-31 23:43:22 UTC

18e55fc1e1ec20e8f3166e3059e76c885fc9f8f2 で構造体 rb_io_t を拡張ライブラリから隠すようにしたのを revert しています。拡張ライブラリ版の readline のビルドが失敗するようになったようです。 readline の拡張ライブラリ版は同梱から外されたので upstream で対応しないといけなかったためですね。 [ruby-core:113720] [Bug #19704]

[35da41b29b] Hiroshi SHIBATA 2023-06-01 00:35:49 UTC

拡張ライブラリ io/console で 1889133c04f337fec3969cb5040a544088249046 などで構造体 rb_io_t を直接アクセスせず C API rb_io_descriptor() を利用するようにしたのを revert しています。こっちは拡張ライブラリ側の対応なので残しておいても良さそうな気がしますがついでに若干リファクタリングされているのでそこで不具合があったのかな。 [ruby-core:113720] [Bug #19704]

[a218ed5692] Samuel Williams 2023-06-01 05:23:30 UTC

18e55fc1e1ec20e8f3166e3059e76c885fc9f8f2 のやりなおしで構造体 rb_io_t を今隠すのまではやらず、利用箇所で直接構造体を触らずに C API を利用するようにする部分だけ再適用しているようです。 https://github.com/ruby/ruby/pull/7880

[d8f333491e] Hiroshi SHIBATA 2023-06-01 04:49:26 UTC

標準添付ライブラリ syntax_suggest の gemspec ファイルの spec.executables で spec.files の exe ディレクトリ配下のファイルを使うようにしていましたが結果空っぽになってしまってたようなので決め打ちで書くように変更しています。

[edee9b6a12] KJ Tsanaktsidis 2023-06-01 08:37:18 UTC

IO の close を呼んだ時にその IO を読み込み中の Thread があったらそれが読み終わるまで待つための機構で直接 rb_nativethread_lock_t や rb_nativethread_cond_t を使った排他処理をせず Thread::Mutex や Thread::ConditionalVariable のオブジェクトを VALUE 型の変数で参照して利用するようにしています。元の実装にはシグナルの喪失によってデッドロックに陥る可能性があったみたいです。 https://github.com/ruby/ruby/pull/7884

[64ec1813ac] Samuel Williams 2023-06-01 08:43:45 UTC

35da41b29bf0a1a8fd2cd7e1d7fcb036ca8c2c7c で revert された拡張ライブラリ io/console の構造体 rb_io_t のメンバーを直接参照しないようにする変更のリトライ。やっぱり非互換が含まれていたようなのでそれを削って rb_io_t の内容を使うのに C API を利用するようにする変更に絞っているようです。 https://github.com/ruby/ruby/pull/7882

[957b6a491f] Benoit Daloze 2023-06-01 09:41:41 UTC

rubyspec の C API テスト用の拡張ライブラリで C API の rb_io_descriptor() を利用するところで利用バージョンを絞る preprocessor 分岐のバージョン番号が間違ってたのを修正。

[d5a5333168] Samuel Williams 2023-06-01 11:41:06 UTC

拡張ライブラリ stringio で構造体 rb_io_enc_t の型を参照するのに struct rb_io_enc_t という本名(っていうのかな)のほうを使っていたところを修正しています。 https://github.com/ruby/stringio/pull/54

ruby-trunk-changes 2023-05-31

今日は主に rubygems/bundler の更新などがありました。

[c7c8e4c96e] Benoit Daloze 2023-05-30 12:20:11 UTC

610038f3bf6eae50c0ad4f16af02d4c50a812e2a の etc の修正と同様に拡張ライブラリ io/nonblock でも C API の rb_io_descriptor() の古い ruby 向けの代替実装を直接同じ名前の関数を定義していたのをやめてマクロですりかえるようにしています。

[30b960ba34] Benoit Daloze 2023-05-30 12:21:54 UTC

拡張ライブラリ io/nonblock でも TruffleRuby 対応のため拡張ライブラリをビルドしないようにしています。

[4bbeed6134] Hiroshi SHIBATA 2023-05-30 11:25:29 UTC

bundler と rubygems に upstream から最新版をマージしています。

[1f74e25c3b] Takashi Kokubun 2023-05-30 15:20:02 UTC

YJIT の Rust 実装で rb_bug() で異常終了させる時に環境変数 RUST_BACKTRACE をセットするようにしています。 Rust のほうのバックトレースを出力するためのものみたいですね。 https://github.com/ruby/ruby/pull/7869

[3bc5f6b240] Hiroshi SHIBATA 2023-05-31 03:16:55 UTC

bundler のテストの ruby 同梱版でのディレクトリ解決の対応のための修正。

[e502600fb9] Nobuyoshi Nakada 2023-05-31 06:15:59 UTC

コマンドラインオプションの -h/--help で出力するメッセージの1行の桁数が 23文字以下であることを STATIC_ASSERT() でチェックするようにしています。

ruby-trunk-changes 2023-05-30

今日は主に構造体 rb_io_t の内容を公開ヘッダから隠して拡張ライブラリから直接アクセスできないようにする変更などがありました。

[1889133c04] Samuel Williams 2023-05-29 12:30:17 UTC

拡張ライブラリ io/console で構造体 rb_io_t の内容に直接アクセスするのをやめて rb_io_descriptor() などの API を利用するようにしています。 https://github.com/ruby/io-console/pull/43

[764207e47c] Samuel Williams 2023-05-29 12:37:42 UTC

拡張ライブラリ io/console のソースコードの行末の空白除去。

[98f500d095] Samuel Williams 2023-05-29 13:01:58 UTC

拡張ライブラリ openssl でも構造体 rb_io_t の内容に直接アクセスせず C API の rb_io_descriptor() を利用するようにしています。

[c48d496e8c] Benoit Daloze 2023-05-29 13:27:57 UTC

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

[b7a26dfa16] Peter Zhu 2023-05-29 14:45:31 UTC

rb_num2ulong() と rb_num2ull() で nil から数値への変換失敗時の例外メッセージの変更など。

[99ce41564e] Benoit Daloze 2023-05-29 16:33:51 UTC

rubyspec の Time.new のテストで ruby のバージョンでの分岐を spec 内でしていたのを ruby_version_is による guard を使った書き方に修正しています。

[610038f3bf] Benoit Daloze 2023-05-29 19:26:06 UTC

00d6674636839329f54cad6daf5e5ca16cc3911e で拡張ライブラリ etc で file descriptor を得るための rb_io_descriptor() が定義されていない古い ruby 向けのビルド時の代替実装を直接 rb_io_descriptor() という関数を定義していたのを別の名前で定義してマクロですりかえるようにしています。

[f61bd3ca80] Benoit Daloze 2023-05-29 11:53:49 UTC

標準添付ライブラリ cgiCGI.escape_html のための拡張ライブラリ部分をビルドするための extconf.rb に TruffleRuby のための分岐を追加しています。

[7ddcd0622f] "dependabot[bot]" 2023-05-29 15:57:36 UTC

rubygems の Rust 製拡張ライブラリのテストのためのプロジェクトの rb-sys パッケージのバージョンを更新しています。

[18e55fc1e1] Samuel Williams 2023-05-30 01:02:40 UTC

構造体 rb_io_t の内容にあたる構造体の型などを公開ヘッダ include/ruby/io.h から internal/io.h に移動して、拡張ライブラリから参照されないようにしています。また C API に rb_io_closed_p() などを追加しています。これ隠すのは次のバージョンでやるくらいの感じかと思ったらすぐにやるんだ。互換性の考慮は大丈夫なのかな。 https://github.com/ruby/ruby/pull/6511 [ruby-core:110300] [Feature #19057]

[ec9364e500] Jeremy Evans 2023-03-24 01:40:16 UTC

標準添付ライブラリ racc の ErrorSymbolValue という既に存在しないクラス? モジュール? の参照を削除しています。

ruby-trunk-changes 2023-05-29

今日は拡張ライブラリビルドのための mkmf.rb で extconf.rb のオプション --with-verbose を追加する変更がありました。

[57459b83a9] Jun Aruga 2023-05-29 08:09:32 UTC

標準添付ライブラリ mkmf.rb で拡張ライブラリのビルド時の make に V=1 を渡せるように extconf.rb のオプション --with-verbose というのを追加して対応するようにしています。この場合生成する Makefile 自体に V=1 の設定が書かれるようです。 https://github.com/ruby/ruby/pull/7863 [ruby-core:113662] [Bug #19695]