ruby-trunk-changes 2021-09-22

今日は rubygems/bundler の更新や Kernel#system の blocking fiber (Scheduler) 対応などがありました。

[4576cdca73] Nobuyoshi Nakada 2021-09-17 10:56:28 UTC

irb のテストの assert_equal で引数の順序が逆だったのを修正しています。

[c94718e39f] Nobuyoshi Nakada 2021-09-17 11:01:15 UTC

irb の require の補完のために Gem::Specification.latest_specs を呼び出してるところを Gem::Specification が定義されているか defined? でチェックするようにしています。また配列をまとめるのに Array#+ のかわりに Array#| を使うように変更しています。

[ee53d97b16] Nobuyoshi Nakada 2021-09-17 11:30:16 UTC

irb の require の補完で候補になるファイルパスのロードパスのディレクトリ配下ごとの最小のものを前のほうにもってくる処理をしていたのが最終的に検索するロードパスの順序に依存していたので、ロードパスごとの最小のファイル名の集団も最終的にソートするようにしています。この補完のロジックいい感じにするの無限に要望が出てきて難しそうですね。

[6e1507f8a2] Nobuyoshi Nakada 2021-09-21 13:24:58 UTC

common.mk の make install 時の tool/rbinstall.rb 実行コマンドに --install=all というオプションを渡すのを追加しています。たぶん省略時も all 指定になるので変わらないと思いますが dont-install-all というターゲットのコマンドと揃えるためみたいです。

[5fb42986a1] git 2021-09-22 00:59:23 UTC

version.h の日付更新

[eaeb5bf0bc] David Rodríguez 2021-09-03 10:21:20 UTC

rubygems の lib/rubygems/resolver/set.rb 内の不要な require "uri" を削除しています。

[cd2e6318f6] Ellen Marie Dash 2021-08-13 19:59:46 UTC

rubygems で gemspec ファイルの authors, summary, description, email などの項目をテンプレートの TODO や FIXME のままにしている時にパッケージをビルドできないようにチェックしているところで文中に含まれていてもチェックしていたのを先頭に残っている時だけチェックするように修正しています。

[105e037fe8] fiveNinePlusR 2021-09-17 16:41:05 UTC

bundler の bundle gem で生成する gemspec ファイルのテンプレートで metadata["allowed_push_host"] のサンプルとして書かれてた https://mygemserver.comhttps://example.com に変更しています。 example.com は実際に使われるドメインとして取られることがないことが保証されてるので例示する時にはこのドメインを使うというのが慣例なので。

[63109976be] Jonathan 2021-09-17 18:36:55 UTC

rubygems の Gem::Request#perform_request でメッセージ出力時に既に Gem::Uri にしてる uri を再度 Gem::Uri.new に渡してたのをやめています。

[42dcac00b1] Jonathan 2021-09-17 18:40:53 UTC

rubygems のテストで Gem::Request のテストに渡す uriURIインスタンスにしてたのを Gem::Uriインスタンスにするように修正しています。

[13bb16f41e] Jonathan 2021-09-17 18:39:25 UTC

rubygems の Gem::Uri をログなどに出す時にパスワードなど表示すべきでない部分をマスクする処理で元のオブジェクトが破壊的に変更されてしまう不具合を修正しているようです。 Gem::Uri#initialize_copy を定義して複製した時に @parsed_uri も clone するようにしています。

[f8bf766877] Nobuyoshi Nakada 2021-09-22 05:08:05 UTC

Array#sample の rdoc 用コメントに省略可能引数の n に非負の整数を渡す必要があることと、結果の順序が元の配列の順序と関係ないことを追記しています。 [ruby-core:84046] [Misc #14147]

[7db021f83b] Samuel Williams 2020-12-05 12:05:40 UTC

Kernel#system の実装で Process.spawn などで使う構造体 struct rb_execarg に子プロセスの終了ステータスなどを格納する status メンバーを追加し Kernel#system で終了状態を取得するあたりをリファクタリングしています。コミットログをみると blocking fiber での子プロセスの終了待ちで自動 yield するための変更みたいですけど waitpid_sleep() のかわりに Process.wait の実装である rb_process_status_wait() の呼び出しに変更しているのでそこで Scheduler 対応しているからってことですね。結構大きな変更ではあるので後を引きそう。こういう変更時についでにコーディングスタイルを変更するのはやめて欲しいなぁ。

[bf3e314852] Samuel Williams 2021-09-21 12:02:14 UTC

7db021f83bc68420746835bb92fce9a5d5a93d9b の追加修正。構造体変数の初期化子追加と特殊変数 $? のための rb_thread_t::last_status のクリアのタイミングを修正しています。

[dd78084ea6] fedor 2021-09-14 16:20:01 UTC

.cirrus.yml というファイルを追加して Cirrus CI というサービスで Arm64 Graviton でのビルドとテストをするようにしているようです。新たな CI サービスが。

[ecaf3a391d] 卜部昌平 2021-09-15 07:46:47 UTC

include/ruby/atomic.h の関数マクロを極力 inline 関数として実装しなおしています。attribute を使ったコンパイラのチェックが効きやすくするためみたいです。

[0dea31c437] 卜部昌平 2021-09-21 05:05:19 UTC

include/ruby/internal/attr/noalias.h の RBIMPL_ATTR_NOALIAS() マクロの定義で Clang の 12 より前のバージョンでは __declspec(noalias) が期待したように機能してくれないとのことで使わないように preprocessor 分岐を追加しています。

[e2976fd1f6] 卜部昌平 2021-09-22 08:59:28 UTC

NEWS に先日の Doxygen による C API のドキュメント大量追加についてエントリを追加しています。 https://github.com/ruby/ruby/pull/4815

[7c0230b05d] Nobuyoshi Nakada 2021-09-22 09:57:10 UTC

Module#ruby2_keywords で修飾されたメソッドの最後の Hash 引数につけるフラグを Marshal.load 時に復旧する時に Symbol の名前の先頭の文字しか比較していなかった不具合を修正しています。 [ruby-core:105371] [Bug #18184]