ruby-trunk-changes 2020-12-19

今日は昨日一旦入って revert された public/protected/private などの引数に配列を受け付ける変更や alias_method や attr_xxx が Symbol や Symbol の配列を返すようになる仕様変更の他、拡張ライブラリの Ractor safe 化や Ractor.make_shareable の機能追加、reline の更新など数多くの変更がありました。

[14ca7f633c] Kenta Murata 2020-12-18 12:58:41 UTC

ext/openssl/depend の依存関係を再生成しています。

[3d31944129] Kenta Murata 2020-12-17 01:05:07 UTC

拡張ライブラリ stringio でも rb_ext_ractor_safe() を呼び出して Ractor safe にしています。

[e1b5289a2b] Kenta Murata 2020-12-17 01:38:42 UTC

拡張ライブラリ stringio の gemspec ファイルに development dependency として test-unit を追加しています。

[c71934f8a5] Kenta Murata 2020-12-18 00:24:37 UTC

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

[ed5c09f384] Radosław Bułat 2020-11-09 10:25:11 UTC

process.c で存在意義がなくなった変数が残ってたので削除しています。よくみつけたなこれ。

[6945597f6f] git 2020-12-18 15:04:41 UTC

version.h の日付更新

[19a98a8791] Nobuyoshi Nakada 2020-12-18 15:34:14 UTC

89e489d51d164cf22bce3a7580e5695da22fb347 で magic comment の shareable_constant_value の値を literal にした時に定数に代入する相対がリテラルのみだった時に Ractor shareable にするというので literal かどうかの判定に間違いがあったようで修正しています。 [ruby-core:100466] [Feature #17273]

[ad76c8fb6b] Yusuke Endoh 2020-12-18 14:16:54 UTC

bundled gems の typeprof のバージョンを 0.10.0 に更新しています。

[e76b56f58e] Koichi Sasada 2020-12-18 17:04:34 UTC

b5588edc0a538de840c79e0bbc9d271ba0c5a711 で openssl を Ractor safe にしてましたが、実装が 3.0 で定義される C API が必須になっていたので HAVE_RB_EXT_RACTOR_SAFE マクロをチェックして新旧の実装を使い分けるようにしています。

[dc61affd67] aycabta 2020-12-18 16:52:14 UTC

標準添付ライブラリ irbIRB::RubyLex でプロンプトの表示のために Ripper::Lexer#lex を複数回呼び出すのをやめる最適化。 cbf6a7f906d17968c8f54f4efb1899e9b204ccfe の修正は revert されてるけどいいのかな(master の ripper では不要な修正のはずですが)。

[671f2762fb] aycabta 2020-12-18 13:25:09 UTC

標準添付ライブラリ reline の Reline::KillRing に Enumerable を include して each メソッドを定義しています。デバッグ時の利便性のためみたいです。

[af2c81e10c] aycabta 2020-12-18 14:35:15 UTC

標準添付ライブラリ reline の emacs モードのキーバインドで yank-pop のマッピングを追加しています。

[d4257c6152] aycabta 2020-12-18 14:36:33 UTC

標準添付ライブラリ reline の em-kill-region のアクションで kill ring に追加する時の挙動を修正しています。

[c2a5594e27] aycabta 2020-12-18 15:41:00 UTC

標準添付ライブラリ reline の Reline::LineEditor#simplified_rendering? でプロンプトの表示のためにカーソルを動かしただけの場合に動的なプロンプトの再評価を抑制するようにしています。

[d5ab8e8562] Kenta Murata 2020-12-18 17:29:18 UTC

拡張ライブラリ bigdecimalBigDecimal#allocate メソッドを undef するのに rb_undef_method() を使ってましたが、専用の C API rb_undef_alloc_func() があるのでこちらを使うように修正しています。

[7b06085c7b] Kenta Murata 2020-12-18 17:44:20 UTC

d5ab8e8562ec15979a32365fe4bf85be9e6334c0 の変更に追随して bigdecimal のテストのエラーメッセージチェックを修正しています。

[52fb696ee7] Jeremy Evans 2020-12-16 16:15:13 UTC

rb_category_warn() および rb_category_warning() の引数 category を文字列としてではなく enum 定数の rb_warning_category_t の型で受け付けるようにしています。このため rb_warning_category_t はの定義 include/ruby/internal/error.h に移動して公開 API になっています。

[6ced55b07c] Jeremy Evans 2020-12-16 16:37:04 UTC

52fb696ee7d01b1d55a1d5c42c60c6a5ebfc4502 で導入した Warning category の定数から文字列への対応表の Hash オブジェクトを保持する warning_category_t_map を rb_ident_hash_new() で作るように修正。また warning_categories という変数で保持するテーブルを Symbol からこの定数への Hash に変更することで rb_warning_category_from_name() の実装をシンプルにしています。

[05313c914b] Jeremy Evans 2020-09-28 17:10:31 UTC

まだ category が指定されてなかった警告のうち deprecation warning なものに deprecated category つきの警告出力にするようにしています。

[7e2dbbda35] Jeremy Evans 2020-12-16 17:02:23 UTC

まだ category のついてない警告のうち experimental な実装についての警告を rb_warn0L_experimental() というマクロを追加して category つきの警告にしています。

[f213a271a1] Kenta Murata 2020-12-18 18:02:04 UTC

NEWS に記載した拡張ライブラリ fiddle のバージョンを更新しています。

[b3b7f1e580] Kenta Murata 2020-12-18 18:05:00 UTC

NEWS に拡張ライブラリ stringio のバージョン更新について追記しています。

[f6641d7376] Kenta Murata 2020-12-18 18:06:16 UTC

NEWS に拡張ライブラリ strscan のバージョン更新について追記しています。

[5944c4b3cf] Radosław Bułat 2020-12-18 18:11:35 UTC

attr_xxx メソッドの戻り値にこのメソッドによって追加されたメソッド名を示す Symbol の配列を返すようにする変更。81739ad4fdfcc86a769056fec352f27c686fba1b で行なわれて後に revert された変更の一部ですね。 https://github.com/ruby/ruby/pull/3935

[346bf0f5a5] Yusuke Endoh 2020-12-18 18:16:20 UTC

5944c4b3cfbbf8b774a4a76ca71ab9f71c71d1b0 で追加された rubyspec の attr_xxx の戻り値についてのテストを ruby_version_is で分岐させるようにしています。

[aa7a020710] Yusuke Endoh 2020-12-18 18:20:09 UTC

41c208d4a463183fddca250026e5f1cd759d2604 で一旦 revert した rb_id_attrset() で一時的な文字列オブジェクトの生成を抑制する最適化を再度入れています。

[0e79d4cde5] Yusuke Endoh 2020-12-18 18:25:48 UTC

34f06062174882a98ebef998c50ad8d4f7fc0f2e で追加して後で revert されたテストの attr_xxx の戻り値についてのテストを復活させています。 [Feature #17314]

[04d62e6f62] Koichi Sasada 2020-12-18 19:29:58 UTC

デバッグ用にメソッドのキャッシュの情報? をダンプする vm_ccs_dump() の表示を整えています。

[cee02d754d] Koichi Sasada 2020-12-18 19:30:25 UTC

Refinements と Module#prepend を併用した時にメソッドキャッシュをクリアし忘れていて期待しないメソッドが呼ばれる場合があった不具合の修正。 move_refined_method() に rb_clear_method_cache() の呼び出しを追加しています。 [ruby-core:101406] [Bug #17386]

[80cb9165fa] Koichi Sasada 2020-12-18 20:52:18 UTC

Ractor.make_shareable のキーワード引数の copy を追加して、オブジェクトツリーを freeze してそのまま共有可能にするかわりにコピーを作るようにしています。コミットログには make deep copied object とあるけど rb_ractor_make_copy_shareable() をみると渡されたオブジェクトは ractor_copy() してその後の traverse した参照先の処理は同じみたいだからそこは copy じゃなくて freeze されてるような?

[76e8848037] Koichi Sasada 2020-12-18 20:57:12 UTC

Ractor::MovedObject というクラスを freeze してたのをやめています。 Matz の一声で「自分の足を撃つ自由」を残すほうがいいとのこと。 [ruby-core:101483] [Feature #17401]

[d40d95296d] Radosław Bułat 2020-12-18 16:40:31 UTC

NEWS に Module#attr_xxx の戻り値に Symbol の配列を返すようになったことについて追記しています。また rdoc 用コメントの call-seq も追随させています。 [ruby-core:100763] [Feature #17314]

[5616f2ee93] Nobuyoshi Nakada 2020-12-18 03:59:01 UTC

Module#public, #protected, #private, #alias_method について一般的なテストが抜けてたみたいで追加しています。

[34f6b22df0] Nobuyoshi Nakada 2020-12-18 03:10:20 UTC

rb_mod_attr() で戻り値のために一時的な文字列オブジェクトの生成しているのを抑制する修正。

[51bcd50915] Radosław Bułat 2020-12-18 18:14:23 UTC

Module#alias_method も戻り値に追加したメソッド名の Symbol を返すようにしています。 [ruby-core:100763] [Feature #17314]

[5b2cf7eac8] Yusuke Endoh 2020-12-19 02:48:04 UTC

e042e8460bb9a63c05f938d51e8c7c5345a6f3a4 の alias_method のテストの追加の一部を再適用しています。 [ruby-core:100763] [Feature #17314]

[feacae193c] Nobuyoshi Nakada 2020-12-17 02:02:31 UTC

拡張ライブラリ digest で metadata という内部的インスタンス変数で Digest::XXX 系のクラスに T_DATA 型のオブジェクトで wrap した情報がセットしている処理でオブジェクト生成するのを rb_digest_make_metadata() という関数に切り出すリファクタリング

[b66f52b0e3] Kenta Murata 2020-12-16 14:04:42 UTC

拡張ライブラリ digest にも rb_ext_ractor_safe() の呼び出しを追加して Ractor safe に宣言しています。

[0cb556b457] Kenta Murata 2020-12-18 08:56:01 UTC

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

[e64af7d5ad] Kenta Murata 2020-12-19 06:08:54 UTC

NEWS に拡張ライブラリ digest のバージョン更新について追記しています。

[144b11e03e] Kazuhiro NISHIYAMA 2020-12-19 06:24:09 UTC

sample/list.rb で未使用のインスタンス変数の削除や未初期化のインスタンス変数の警告抑制のための initialize 追加。master ではもう未初期化インスタンス変数の参照の警告はされなくなったはずですけどね。

[a5832c9a37] Nobuyoshi Nakada 2020-12-19 06:01:47 UTC

DTrace のドキュメント doc/dtrace_probes.rdoc でマークアップの修正。

[553d6fa0a0] Nobuyoshi Nakada 2020-12-19 06:32:06 UTC

doc/dtrace_probes.rdoc で整形のためリスト記法を使うようにしています。

[5c9d6ea6b4] Nobuyoshi Nakada 2020-12-19 06:34:26 UTC

ractor.rb および ext/psych/yaml/yaml.h の行末の空白除去。

[197550c956] Nobuyoshi Nakada 2020-12-19 07:09:54 UTC

GitHub Actions の設定ファイル .github/workflows/check_encoding.yml を .github/workflows/check_misc.yml に改名しています。

[042c3e91fb] Nobuyoshi Nakada 2020-12-19 07:10:57 UTC

197550c9564d56372d4ea30dd3f17c8905072c21 で改名した .github/workflows/check_misc.yml に include/ruby/ 内のヘッダファイルに対応する HAVE_XXX マクロが定義されてるか? をチェックする workflow を追加しています。

[a139318538] Nobuyoshi Nakada 2020-12-19 06:51:42 UTC

include/ruby.h にマクロ HAVE_RUBY_DEBUG_H、HAVE_RUBY_MEMORY_VIEW_H、HAVE_RUBY_ONIGMO_H、HAVE_RUBY_RACTOR_H、HAVE_RUBY_RANDOM_H、HAVE_RUBY_THREAD_NATIVE_H の定義を追加しています。 042c3e91fbc621e28e5edda015c43e01341fee1c で追加した GitHub Actions のチェックでみつけたんですね。

[bdd18090ad] Hiroshi SHIBATA 2020-12-19 07:52:56 UTC

bundled gems の rake のバージョンを 13.0.2 に更新しています。

[349e79bae0] Hiroshi SHIBATA 2020-12-19 07:53:18 UTC

一旦 revert された 7cddb844e6d51f954c6669341b9cc656bd7d3492 の fileutils の verbose メッセージを stderr に出すようにした変更のリトライ。rake のテストが失敗したためだったので、bdd18090ad75cd5659b561890756c5e0b1227b69 で bundled gems の rake のバージョン更新したのでそれで直ってるのかも。

[8ec8f37566] Takashi Kokubun 2020-12-19 07:30:09 UTC

92137718170118030a1f56303764d08201bf5c33vm_sendish() の inline 化を促す変更をしてましたが、MJIT 用のヘッダ経由で宣言される時は inline 修飾子やメソッドの種類を関数ポインタでなく定数で指定する変更などを revert して新旧の両方の実装を切り替えるようにしています。JIT 時には遅くなってしまってたとのこと。

[52b1716c78] Takashi Kokubun 2020-12-19 08:27:42 UTC

8ec8f37566902c0167f736d345bb5c8cca6016d3 で復活させた MJIT 用ヘッダ時の vm_search_invokeblock() の実装を rb_vm_empty_cc() にしてたのを struct rb_callcache::call_ に vm_invokeblock_i をセットしたものを返すように修正しています。92137718170118030a1f56303764d08201bf5c33 で消す前の実装に戻してる感じですね。

[e33eb09b76] Nobuhiro IMAI 2020-12-18 16:31:12 UTC

拡張ライブラリ ripper が予約語への代入でエラーを返さない問題の再修正で Ripper::Lexer の on_error メソッドを引数の数によって on_error1 と on_error2 に分けて event の種類で使いわけるようにしています。 [ruby-core:101089] [Bug #17345]

[5611066e03] Takashi Kokubun 2020-12-19 08:33:21 UTC

tool/ruby_vm/views/_mjit_compile_ivar.erb で JIT 用に実行時に生成する C コードで RB_OBJ_FROZEN() を使ってたところを RB_OBJ_FROZEN_RAW() を使って冗長な判定を省略する最適化。

[0d3dc2ec80] Marc-Andre Lafortune 2020-12-17 19:43:11 UTC

Hash#except の戻り値が子クラスのインスタンスから呼ばれても常に Hash を返すように仕様変更しています。 [ruby-core:92538] [Feature #15822]

[8148f88b92] Nobuyoshi Nakada 2020-12-19 09:04:47 UTC

8ec8f37566902c0167f736d345bb5c8cca6016d3vm_search_method_fastpath() の宣言にも inline 修飾子を追加していましたが、この宣言は既に ALWAYS_INLINE() マクロ内で行なわれていて冗長だったので削っています。

[eb8ea336d3] Radosław Bułat 2020-12-18 18:17:57 UTC

Module#public, #protected, #private の引数に Symbol や String の配列を受け取ることができるようにしています。 [ruby-core:100763] [Feature #17314]