ruby-trunk-changes 2023-10-13

今日は主に require で (元) default gems に対して警告を出力する実装の変更や M:N Thread の実装の修正などがありました。

[e029375a7d] tomoya ishida 2023-10-12 12:53:26 UTC

irb で行番号の管理を IRB::RubyLex でしていたのを IRB::Irb のほうで管理するようにリファクタリングしています。 https://github.com/ruby/irb/pull/701

[cf21c72cdb] tomoya ishida 2023-10-12 13:55:41 UTC

irbIRB::ExtendCommandBundle で irb_context が nil の時にエラーになっていたのを修正しています。 https://github.com/ruby/irb/pull/728

[0c42c28531] Takashi Kokubun 2023-10-12 14:03:47 UTC

GitHub Actions の macOS 上で YJIT を有効にしたバージョンの workflow を追加しています。また通常の macOS 版の workflow に os: macos-arm-oss という環境でのテストも追加しています。 macOSARM アーキテクチャ用の環境が GitHub Actions に追加されたみたいですね。 https://github.com/ruby/ruby/pull/8633

[b2e1ddffa5] Maxime Chevalier-Boisvert 2023-10-12 14:05:34 UTC

YJIT の ISeq を JIT コンパイルするかどうかの判定の処理を Rust 実装から C 実装のほうへ移植しているようです。パフォーマンスのためとのこと。 https://github.com/ruby/ruby/pull/8628

[c23b25f75f] Tanaka Akira 2023-10-12 15:00:58 UTC

Range#overlap? の rdoc 用コメントに Float::INFINITY の値を使って空集合になるような Range を作った場合(一般化すると Range の要素の値の集合において最小の値になるインスタンス min があった時に (...min) という Range を作った場合)にこのメソッドは理論的には誤った判定結果を返すことがあるという注記を追加しています。普段の用途ではあまり問題になることはなさそうですが数学的には間違った結果になることがあってちょっと気持ち悪いねという話ですね。

[10ba3fc302] Koichi Sasada 2023-10-12 14:35:12 UTC

thread_pthread_mn.c でメモリページのサイズを決め打ちで定義していたところを sysconf(2) を使って取得するようにしています。 sysconf() は configure で存在チェックしているので HAVE_SYSCONF で分岐したほうが良いような気もするけど。

[1126bd8c65] tomoya ishida 2023-10-12 16:54:04 UTC

irb の補完処理で nil を返すべきときに誤って空配列を返して誤動作していたことがあったのを修正しています。 https://github.com/ruby/irb/pull/726

[2dca02e273] Koichi Sasada 2023-10-12 16:31:02 UTC

thread_pthread.c で M:N Thread を有効にするかどうかの判定部分でコンパイル時に USE_MN_THREADS が偽だった時には常に無効にするようにしています。

[17b0643392] Nobuyoshi Nakada 2023-10-12 17:28:35 UTC

parse.y で次の文字を取得するのに構造体 struct parser_params のメンバーを直接参照せずに peekc() などのマクロを利用するようにしています。適切なキャストを含めて unsigned char で取得するため。 [ruby-core:115023] [Bug #19924]

[81399a5c46] Nobuyoshi Nakada 2023-10-12 17:32:45 UTC

同様に parse.y で構造体 struct parser_params のメンバーを直接参照せず lex_eol_ptr_p() というマクロを利用するようにリファクタリングしています。

[3aba21511b] Stan Lo 2023-10-12 21:35:56 UTC

irb のバージョンを 1.8.2 に更新しています。

[b2808cc4f2] git 2023-10-12 21:37:26 UTC

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

[dcee3cc6ce] Takashi Kokubun 2023-10-12 21:57:08 UTC

GitHub Actions の Ubuntu 環境用の workflow で cppflags=-DUNIVERSAL_PARSER を指定したビルドの時の make test-all 時のオプションに --repeat-count=2 を渡してたのを削っています。

[2794a8fef6] yui-knk 2023-10-10 12:06:54 UTC

if の条件部など条件が期待されているところに代入文があったら "==" の間違いじゃないかということで警告を出す機能が、代入がローカル変数やインスタンス変数の時だけで、クラス変数や定数の時に警告が出ていなかったので同じく警告出力するようにしています。 [ruby-core:115003] [Bug #19919]

[cdb36dfe7d] Koichi Sasada 2023-10-12 16:14:17 UTC

M:N Thread 対応の追加修正で thread_cleanup_func() の最後に native_thread_destroy() を呼んでいたのを rb_threadptr_sched_free() の呼び出しまで遅延するようにしています。

[842d9c0afc] Takashi Kokubun 2023-10-13 00:30:04 UTC

GitHub Actions の paths-ignore でドキュメントしかないディレクトリ内のみの変更時にスキップする設定を削っています。PR のマージを CI が通ってることを条件にするためにスキップしてしまうと(管理者以外)マージできなくなるという現象を避けるためだと思います。 https://github.com/ruby/ruby/pull/8646

[d8a74207e7] Koichi Sasada 2023-10-13 05:39:53 UTC

thread_pthread_mn.c で __uint32_t という型を使っていたところを uint32_t に変更しています。

[75644f98e5] Hiroshi SHIBATA 2023-10-12 03:53:41 UTC

bundler で上書きする require で default gems の require に対して警告を出す実装で Gem::BUNDLED_GEMS.warning? というメソッドを再利用するようにリファクタリングしています。

[c2bdb198d7] Hiroshi SHIBATA 2023-10-12 04:24:55 UTC

bundler で上書きする require の実装で inline Gemfile というモード? の対応をしていた分岐を削除しています。

[ea05ddbeff] Hiroshi SHIBATA 2023-10-12 04:32:09 UTC

bundler の require 実装で gem 名からファイル名にするため "/" を "-" に置き換える処理を Gem::BUNDLED_GEMS.warning? の実装内に移動するリファクタリング

[57c2ae206f] Hiroshi SHIBATA 2023-10-12 05:48:18 UTC

bundler の再定義する require での警告出力で利用している gem からの require だった時にその gem の作者に連絡するようにというメッセージを追加していた処理も Gem::BUNDLED_GEMS の実装のほうに移動しています。

[ba4fed47ec] Hiroshi SHIBATA 2023-10-12 06:45:54 UTC

bundler のテストから require 時の警告についてのテストを削除しています。

[b49346ee73] Hiroshi SHIBATA 2023-10-12 07:38:41 UTC

lib/bundled_gems.rb で警告を出力する処理を Gem.find_unresolved_default_spec を再定義することで埋め込んでたのを LoadError#message を再定義してそこで警告出力するようにしています。 bundler 経由でなくても LoadError が(既に bundled 化 or 削除された元 default gems のライブラリについて?)発生した場合に警告が出力されるようにしています。

[fdf0589a95] Hiroshi SHIBATA 2023-10-12 07:53:19 UTC

b49346ee7344b6febd69cf2d1dd8161b6a4e774e の追加修正で同じ警告が重複して出ないようにしています。

[62eea99a1c] Hiroshi SHIBATA 2023-10-12 07:53:33 UTC

lib/bundled_gems.rb での警告に bundler 未使用の状態の場合の suggest (gem install しろというもの)も追加しています。

[fe5329f032] Hiroshi SHIBATA 2023-10-12 07:59:13 UTC

lib/bundled_gems.rb の LoadError#message の再定義の実装で定数 Bundler が未定義の場合のみ警告出力するようにしています。

[c6728caeb7] Hiroshi SHIBATA 2023-10-12 08:33:52 UTC

bundler 利用時の (元) default gems の require 時の警告で gem 名の埋め込みのために参照する変数の間違いを修正。

[35edc14ee1] Hiroshi SHIBATA 2023-10-13 05:56:54 UTC

lib/bundled_gems.rb で require 時の警告で拡張ライブラリで同じ名前で .rb と .so のファイルが両方ある場合に両方で警告出力しないように管理を同じくするようにしています。