ruby-trunk-changes 2021-10-14

今日は各種標準添付ライブラリのバージョンの更新や rubygems/bundler の更新などがありました。

[15f50d3bed] David Rodríguez 2021-09-29 18:04:12 UTC

bundler の Bundler::Definition#converge_locked_specs で依存関係チェック? まわりの修正みたいです。ここだけみてもまったくわからないですね。

[ec5f732b7d] David Rodríguez 2021-09-29 18:07:08 UTC

bundler の Bundler::Definition にインスタンス変数を参照する locked_dependencies というメソッドを追加するリファクタリング

[853004e04d] David Rodríguez 2021-09-29 19:11:23 UTC

bundler の Bundler::Definition#initialize でインスタンス変数 @locked_specs_incomplete_for_platform の初期化を false 固定でなく 15f50d3bedbae76d7774601a4f7d93a330280098 で修正していた converge_locked_specs メソッド内のチェックと同等の処理で初期化しておくようにしています。なにをしてるかはわかりませんがコミットログを読むと一連の変更は Gemfile.lock の platform の指定に対応した gem がインストールされてない場合に依存関係の解決をやりなおしてインストールする処理が働かないことがあって、それを修正しようとしていたみたいです。

[30b6df4144] David Rodríguez 2021-08-25 09:30:41 UTC

bundler の gem インストールエラー時のメッセージに gem install してみてというのを書いていたのをやめています。

[e97c671b3a] David Rodríguez 2021-08-25 09:40:01 UTC

bundler で gem install コマンドを発行してたところで sh_with_status というメソッドを利用してエラー時に例外を発生させていたのを sh というメソッドで代替するようにリファクタリングしています。

[df21600b98] David Rodríguez 2021-08-25 12:49:49 UTC

e97c671b3a21aeb1b2813f44487b6232cb39a205 で利用するようにした bundler の Bundler::GemHelper#sh メソッドで Array の shelljoin メソッドが呼べるか respond_to? でチェックしてたのをやめています。引数は常に Array だし require "shellwords" もしてあるはずだからとのこと。

[621fe09016] David Rodríguez 2021-08-26 10:57:42 UTC

e97c671b3a21aeb1b2813f44487b6232cb39a205 と同様に bundler の Bundler::GemHelper#perform_git_push でも sh メソッドを利用するようにリファクタリングしています。

[058cd3a6df] David Rodríguez 2021-08-26 11:00:16 UTC

bundler の Bundler::GemHelper#perform_git_push メソッドをそもそも削除して呼び元で sh メソッドを直接呼ぶようにリファクタリングしています。

[9a3333986f] Nobuyoshi Nakada 2021-10-11 14:17:05 UTC

File.grpowned? のテストに Process.egid 以外の所属している group があればその group が権限を持つファイルを作ってこれに対するテストケースを追加しています。

[8f480eafab] Nobuyoshi Nakada 2021-10-11 14:35:26 UTC

file.c の rb_group_member() という gid が示す group に所属してるかのチェックで macOS (Mountain Lion) 向けの workaround がもう不要になった? みたいでループを回して必要なバッファサイズを決めてたのを getgroups() に NULL を渡して返ってきたサイズでバッファを作ってあらためて getgroups() を呼ぶようにリファクタリングしています。

[c44f7a6c43] git 2021-10-13 15:20:31 UTC

version.h の日付更新

[1aa9fcca76] Nobuyoshi Nakada 2021-10-13 16:11:31 UTC

symbol.c の STATIC_SYM2ID() というマクロ定義で RSHIFT() の第1引数に渡す引数を unsigned long にキャストしていたのを VALUE にキャストするように修正しています。 IL32LLP64 の環境(mswin?)で不具合があったみたいです。

[3f0150f2fd] Nobuyoshi Nakada 2021-10-13 13:19:25 UTC

rubygems のテストで $LOADED_FEATURES をバックアップしておいて後で復旧するためのユーティリティメソッド save_loaded_features を単にブロックを yield するだけで他になにもしないメソッドにしています。$LOADED_FEATURES のバックアップは setup と teardown でテストメソッド単位でするようになっていてもう不要になってたみたいです。メソッド自体消してもよさそうですね。

[a4f2aafd3a] Nobuyoshi Nakada 2021-10-13 15:17:35 UTC

と、思ったら 3f0150f2fd408421c4625976d0c88df27b6753d3 の save_loaded_features メソッド定義を消して呼んでいるところも呼び出しを消してブロックを展開しています。

[d8d97872a1] David Rodríguez 2021-10-07 09:26:11 UTC

標準添付ライブラリ fileutils の mkdir_p メソッドで作成するべき親ディレクトリのリストを作るためのループの条件をリファクタリングしています。

[fa12e3e2f7] David Rodríguez 2021-10-07 09:27:21 UTC

標準添付ライブラリ fileutils の mkdir_p メソッドで親ディレクトリを作成する必要がないケースのために例外覚悟で mkdir してみるという最適化(?)を削っています。例外発生するとかなりオーバーヘッドがかかるからこれむしろ遅くなるような気がするなぁ。コミットログにもこの最適化が効くケースでもそんなに効きめがないとベンチマーク結果を乗せています。

[3099bb6e3c] "U.Nakamura" 2021-10-14 01:22:55 UTC

file.c の rb_check_realpath_emulate_try() からの rb_check_realpath_emulate() の呼び出しの引数のキャストから const 修飾子を削っています。rb_encoding 自体が const つきで typedef されているので不要とのこと。

[13772caee2] Hiroshi SHIBATA 2021-10-14 04:23:45 UTC

拡張ライブラリ digest の ext/digest/sha2/lib/sha2.rb を ext/digest/lib/digest/sha2.rb に移動して tool/sync_default_gems.rb で digest の同期時の処理にこのファイルのコピー処理を追加しています。

[3265af2f9e] Hiroshi SHIBATA 2021-10-14 04:31:45 UTC

さらに拡張ライブラリ digest の ext/digest/lib/digest/sha2.rb を ext/digest/sha2/lib/digest/sha2.rb に移動、ext/digest/lib/digest/sha2/loader.rb は ext/digest/sha2/lib/digest/sha2/loader.rb に移動して、tool/sync_default_gems.rb で digest の同期処理もこれに追随させています。digest は内部でさらにアルゴリズム毎のディレクトリに分かれててややこしいですね(net/xxx とかもまあそうですが)。

[9e86a60306] Hiroshi SHIBATA 2021-10-14 04:58:10 UTC

さらに拡張ライブラリ digest の ext/digest/sha2/lib/digest/ の配下は ext/digest/sha2/lib/ の下に直接置かれるように移動して tool/sync_default_gems.rb も追随しています。

[724c657700] 180909 2021-10-14 06:05:44 UTC

Array クラスの rdoc 用コメントの重複した the を削る修正。 https://github.com/ruby/ruby/pull/4966

[db500f05c2] Hiroshi SHIBATA 2021-10-14 06:40:01 UTC

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

[6b13448040] Hiroshi SHIBATA 2021-10-14 07:03:32 UTC

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

[91c2069dcf] Hiroshi SHIBATA 2021-10-14 07:44:36 UTC

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

[1220556f33] Hiroshi SHIBATA 2021-10-14 08:16:32 UTC

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

[1d6a490c2c] Nobuyoshi Nakada 2021-10-14 05:27:30 UTC

regcomp.c の optimize_node_left() 内で ONIGENC_MBC_MAXLEN_DIST() の結果と乗算する整数を OnigDistance にキャストしておくようにしています。

[d210950196] Nobuyoshi Nakada 2021-10-14 04:17:13 UTC

拡張ライブラリ etc の CPU コア数を得る Etc.nprocessors の実装で必要なバッファサイズが小さい時に alloca(3) を使っていたのを関数のスコープの自動変数の配列でスタックに確保しておくようにしています。常に確保してしまうので不利なのでは、と思ったけどループ内で alloca() を呼んでいたので sched_getaffinity() がエラーを返してリトライする時に繰り返し alloca() を呼んでしまう可能性があったということみたいですね。

[caf34400c0] Hiroshi SHIBATA 2021-10-14 10:45:06 UTC

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

[6f67a78ad6] Hiroshi SHIBATA 2021-10-14 11:06:52 UTC

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

[2c75fc915e] Hiroshi SHIBATA 2021-10-14 11:11:55 UTC

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

[4cf367b835] Nobuyoshi Nakada 2021-10-12 08:44:19 UTC

GitHub Actions の CodeQL での静的チェックの workflow に環境変数 GNUMAKEFLAGS の設定を追加しています。nproc で CPU コア数を取得して -j オプションの設定に使うようにしています。

[391ebfc35d] Nobuyoshi Nakada 2021-10-12 09:10:47 UTC

GitHub Actions での CodeQL でのチェック時に --disable-install-doc でビルドするようにしています。

[9ed1250402] Hiroshi SHIBATA 2021-10-14 11:14:48 UTC

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

[b6e5264783] Hiroshi SHIBATA 2021-10-14 11:25:36 UTC

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

[f88628014a] Hiroshi SHIBATA 2021-10-14 11:28:42 UTC

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

[d13c6c56dd] Hiroshi SHIBATA 2021-10-14 11:35:47 UTC

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