ruby-trunk-changes 2020-10-01

今日は文字列リテラル内に式の埋め込みをしてその内容が文字列リテラルのみだった時に frozen_string_literal: true でも freeze しないようにする変更や標準添付ライブラリ ostruct の更新、blocking fiber 用の Scheduler インターフェースの変更などがありました。

[bbecf1eb6b] Benoit Daloze 2020-09-30 11:43:17 UTC

spec/mspec を再度 upstream と同期しています。 Warning[:deprecated] = true して実行するようにしてくれています(2.7 の RubyCI のために必要でした)。

[65e8a29389] Benoit Daloze 2020-09-30 11:43:19 UTC

spec/ruby の upstream との同期。 3.0 で deprecated warning のデフォルトを off にしたので一部の spec を 3.0 で除外してたのを消しています。bbecf1eb6b5651a073eb20c9b137cfe08d2739aa で mspec が Warning[:deprecated] = true にして実行するようになったので。

[7b2bea42a2] Nobuyoshi Nakada 2020-09-02 14:12:22 UTC

文字列の式展開に文字列リテラルをそのまま書いてるだけ(式展開してる意味があんまりない)の時の #frozen_string_literal: true だと値の埋め込みがあっても freeze されてたのを freeze しないようにしています。 [ruby-core:99485] [Feature #17104]

[4bc6190a34] Burdette Lamar 2020-09-30 19:58:12 UTC

String#[] の rdoc 用コメントを書き直しています。 https://github.com/ruby/ruby/pull/3607

[f4733b2c31] git 2020-09-30 19:58:36 UTC

version.h の日付更新

[fb16c3dce2] Marc-Andre Lafortune 2020-09-26 04:34:34 UTC

NEWS.md の行末の空白除去。

[df4d08c44a] Marc-Andre Lafortune 2020-09-26 00:55:38 UTC

標準添付ライブラリ ostruct の OpenStruct#initialize の内容を update_to_values! というメソッドに切り出し、initialize_dup から initialize を呼んでたのをこちらのメソッドを呼ぶようにリファクタリングしています。 initialize を呼ぶのは NG なのかな。テストをみると継承したクラスで initialize 再定義された時に意図しない呼び出しが起きるのを避けるためみたいですね。

[083fa6e5d2] Marc-Andre Lafortune 2020-09-26 00:58:48 UTC

標準添付ライブラリ ostruct でオリジナルのメソッドを ! つきのメソッドとして退避しているのを、継承したクラスで定義されたメソッドは退避せずに定義されたメソッドそのものが呼ばれるようにしています。

[0977040133] Marc-Andre Lafortune 2020-09-26 01:17:06 UTC

標準添付ライブラリ ostruct に Ractor 間で freeze した OpenStruct のインスタンスが共有できることをチェックするテストを追加しています。

[0e93118c44] Marc-Andre Lafortune 2020-09-26 04:29:18 UTC

NEWS に OpenStruct の変更点を追記しています。

[b36a45c05c] Marc-Andre Lafortune 2020-09-26 05:27:23 UTC

標準添付ライブラリ ostruct の OpenStruct の YAML でのエンコード/デコード時のフォーマットの変更をしています。YAML にした時の読みやすさのため? [ruby-core:54860] [Feature #8382]

[152ba86b6b] Marc-Andre Lafortune 2020-09-26 05:53:36 UTC

標準添付ライブラリ ostruct の OpenStruct#method_missing の不要な条件分岐の削除。

[bb2ba72c3b] Marc-Andre Lafortune 2020-09-26 05:41:46 UTC

標準添付ライブラリ ostruct の rdoc 用コメントの nodoc タグの追加やちょっとした追記など。

[bc23216e5a] Koichi Sasada 2020-09-30 23:55:08 UTC

0977040133c53be92713e9054b491a0b3649e148 で追加した OpenStruct の Ractor 間共有についてのテストをコメントアウトしています。Ractor を利用するとインタプリタの状態が非可逆にモードが変更されてしまうので test-all のテスト内で Ractor を使うのは NG とのこと。

[13660105e2] Samuel Williams 2020-10-01 00:42:58 UTC

blocking fiber で使う Scheduler の close メソッドを呼ぶ前に rb_respond_to() で定義されてるかチェックしてなかったら呼ばないようにしています。

[7f29020590] Samuel Williams 2020-10-01 00:43:16 UTC

blocking fiber のテストで使うサンプルの Scheduler の close メソッド実装で二重に close が呼ばれたら例外発生させるようにしています。

[dd2e95fb26] Samuel Williams 2020-10-01 00:44:23 UTC

クラスメソッド Thread.scheduler の定義を削除しています。Thread.current.blocking? で代替できるので不要とのこと。

[a88fe61a3e] Samuel Williams 2020-10-01 01:20:26 UTC

よくわかりませんが rb_ec_cleanup() で rb_ec_scheduler_finalize() を呼び出すのをやめて rb_ec_teardown() から呼び出すようにしています。

[c893aa0539] Kazuhiro NISHIYAMA 2020-10-01 04:27:00 UTC

NEWS のチケット参照のための footnote を追加しています。

[ab99a2ac44] Yusuke Endoh 2020-10-01 04:25:36 UTC

rubyspec の Process.spawn のテストを Android 環境で実行除外するようにしています。

[0e98a9c854] Nobuyoshi Nakada 2020-10-01 04:44:29 UTC

scheduler.c の関数定義のスタイルの修正。

[0d37ed5fdc] Nobuyoshi Nakada 2020-10-01 04:45:20 UTC

thread.c の rb_thread_scheduler() という関数は dd2e95fb26b89ce060631af0fd372b5780a443dd でクラスメソッド定義をコメントアウトしたため未使用になってるので、関数定義もコメントアウトしています。

[257007af9a] Nobuyoshi Nakada 2020-10-01 04:45:50 UTC

scheduler.c の rb_scheduler_close() で Scheduler の close メソッドが未定義の時の return がなかったので明示的な return Qnil を追加しています。

[eef12cdc06] Nobuyoshi Nakada 2020-10-01 04:47:57 UTC

test/fiber/test_scheduler.rb の行末の空白除去。

[1d3024da26] Nobuyoshi Nakada 2020-10-01 04:48:15 UTC

test/fiber/test_mutex.rb で assertion メソッドを変更してエラー時により詳しいメッセージが出せるようにしています。

[2db081b5ff] Samuel Williams 2020-10-01 07:22:55 UTC

Thread#join で blocking fiber 対応してる時に th->scheduler を使ってたのを rb_thread_current_scheduler() というインタフェースを使うように修正しています。Thread が blocking かどうか(つまり blocking fiber を使ってるかどうか?)のチェックも含まれているようですね。