ruby-trunk-changes 2021-11-25

今日は拡張ライブラリ zlib の不具合修正や Windows 環境での MJIT のコンパイル時のコンパイルオプションの修正などがありました。

[c51b92c18d] Peter Zhu 2021-11-23 18:14:45 UTC

拡張ライブラリ zlib に Zlib::InProgressError という例外を追加して zstream_run_synchronized() で排他的な処理中に zstream::flags のフラグに ZSTREAM_IN_PROGRESS というのを立てておいて既に処理中の zstream に対して zstream_run() が呼ばれた時にこの例外を発生させて競合を防ぐようにしています。 https://github.com/ruby/ruby/pull/5159 [ruby-core:106222] [Bug #18358]

[7d55f1b6b6] MSP-Greg 2021-11-23 01:49:12 UTC

GitHub Actions の MinGW 環境向けの workflow で利用する OS を windows-2019 から windows-2022 に更新しています。また ruby を使うための action を MSP-Greg/setup-ruby-pkg から MSP-Greg/ruby-setup-ruby に変更しています。

[1dcfcb6bc5] furunkel 2021-11-11 15:34:24 UTC

doc/extension.rdoc の関数名の typo 修正。

[7c3041047e] Burdette Lamar 2021-11-24 14:34:30 UTC

Float#next_float と Float#prev_float の rdoc 用コメントのサンプルを削って自然言語の説明を少し追加しています。うーん、これ元のサンプルには IEEE 754 のビット構造と照らしあわせた変化が分かるように書かれてて、これはこれで有用だと思うけどなぁ。 https://github.com/ruby/ruby/pull/5162

[e6f4a39a4d] Alan Wu 2021-10-28 21:48:21 UTC

MJIT の Windows 環境でコンパイラに MSVC を利用する場合にコンパイラオプションに -Z7 というのを追加するようにしています。.pdb という拡張子のファイル(デバッグ情報を含むファイル?)を生成させるみたいで、これをつけてないと -Zi というオプションをつけた時に再コンパイルが頻繁に必要になってしまってパフォーマンスへの影響があった? みたいです。
[追記] 複数のプロセスで同時に MJIT を有効にした場合に同じファイルを書きかえようとしてファイルの破損が起きることがあったのでその対策だったそうです。[/追記]

[3d19c2900e] Alan Wu 2021-10-29 23:01:05 UTC

e6f4a39a4de28067ff0b5dca55a8c09a8f9e2006 の続きで MJIT 用の precompiled header のビルド時の .pdb ファイルのインストールが不要になったみたいでコピーや clean 時の掃除の対象から外しています。

[c4b1aa19a3] David Rodríguez 2021-10-15 11:51:49 UTC

bundler の Bundler::EnvironmentPreserver#replace_with_backup というメソッドで ENV.replace が使えない(?) Windows 環境向けの fallback 処理を常に実行してたので Windows 以外ではすぐに return するように修正しています。

[d123919595] David Rodríguez 2021-08-05 09:50:44 UTC

bundler のテストで捕捉中の例外を参照する $! を参照するところで誤って子プロセスの終了状態を得る $? をみてしまっていたのを修正しています。

[d49ee9e2c3] David Rodríguez 2021-08-05 14:53:51 UTC

bundler のテストのヘルパーメソッド Spec::Helpers#all_commands_output でコマンドが空の時に空配列を返していたのを空文字列を返すように修正しています。

[b2b473707f] David Rodríguez 2021-08-05 14:54:30 UTC

bundler のテストの assert_system_features_not_loaded! という assertion メソッドで発生中の例外をチェックしてたのをやめています。

[aace9cb162] David Rodríguez 2021-08-05 15:16:44 UTC

bundler のテストで bundler docter の出力をチェックするメッセージを少し修正しています。

[9252830d7e] git 2021-11-24 19:02:38 UTC

version.h の日付更新

[9faa599196] Burdette Lamar 2021-11-24 21:15:12 UTC

Float#floor の rdoc 用コメントの位置を移動して、さらに Float#ceil, Float#round, #to_i, #to_int, #truncate などの rdoc 用コメントを整形? しています。んー、なんかいまいちサンプルを削っている理由がわからないんだよなぁ。自然言語で説明したほうが良いという嗜好なのかなと思うけどサンプルみたほうがわかりやすいことも多いと思うので。 https://github.com/ruby/ruby/pull/5167

[635efa594a] Burdette Lamar 2021-11-24 23:44:27 UTC

Float クラスの rdoc 用コメントにメソッド一覧を追加しています。 https://github.com/ruby/ruby/pull/5170

[8bde66167f] Adam Hess 2021-11-25 01:23:22 UTC

doc/yjit/yjit.md で定数 YJIT について参照しているところを現状にあわせて RubyVM::YJIT を参照するように書きかえています。

[b5aa161383] Yusuke Endoh 2021-11-25 02:00:28 UTC

334b69e5042f47f89c8780c1d7efa32d70c84786 で無名引数を持つメソッドの ISeq のバイナリフォーマット変換について追加されたテストで定義するメソッド名が被らないように 54bda176c6f1274c2311b02badee34002e4ea10e で改名したりしていましたが、オブジェクトの特異メソッドを定義してそれを使うようにして名前の重複を気にしなくていいようにしています。

[aceb75f6c9] Nobuyoshi Nakada 2021-11-24 15:37:20 UTC

Cirrus CI の設定ファイル .cirrus.yml で doc/ 配下や拡張子 .md と .rdoc のファイルの変更のみの時にビルドを skip するようにしています。

[ca21eed6eb] Koichi Sasada 2021-11-25 03:18:15 UTC

b9007b6c548f91e88fd3f2ffa23de740431fa969 でメソッドキャッシュの実装を T_IMEMO 型オブジェクトに変更した時に導入した vm_cc_cme() の VM_ASSERT() の条件に cc->call_ のチェックを追加しています。 cc->call_ が NULL の場合は未初期化の状態なので他のチェックは不要ということのようです。

[a1eaeb8e40] Nobuyoshi Nakada 2021-11-25 09:59:12 UTC

GitHub Actions の Ubuntu 環境用の workflow で make check 時の TESTS 変数の指定に matrix.skipped_tests の内容を設定した時に make test-all も再実行していたのを抑制するようにしている? みたいです。
[追記] matrix.skipped_tests が空の時に TESTS にマッチしないオプションを指定してしまい実行するテストがない状態になってたのでその対策だそうです。 [/追記]

[51404eec59] Nobuyoshi Nakada 2021-11-25 10:13:36 UTC

GitHub Actions の Ubuntu 向け workflow で apt-get install するパッケージの pkg-config${arch} はコマンドを分けてエラーになっても処理を止めないようにしています。

[d896746d69] Nobuyoshi Nakada 2021-11-25 06:38:24 UTC

拡張ライブラリ ripper の extconf.rb で clean する時に削除するファイルを $cleanfiles と $distcleanfiles に分けて追加して ripper.y ripper.c などの生成ソースコードは make distclean 時にだけ削除するようにしています。 [ruby-core:106270] [Bug #18363]