ruby-trunk-changes 2020-11-21

今日は Module#include で別の Module が prepend されてる Module の時の継承ツリー内の挿入順序の変更や String のメソッド群を継承した子クラスのインスタンスについて呼んでも String のインスタンスを返すようにする変更などがありました。

[08686e71d5] Jeremy Evans 2019-08-08 16:55:33 UTC

Module#include で Module を継承ツリー内に差し込む位置がその Module に prepend されている Module が既に対象の Class/Moduleに prepend されてると対象の Class/Module の前に入ってしまっていたのを修正しています。なるほどなぁ。かなり長いこと置いておかれたチケットなので 3.0 で変更してみようということかな。 [ruby-core:52208] [Bug #7844]

[18599b5749] git 2020-11-20 23:27:10 UTC

version.h の日付更新

[4f5d14eb8c] Nobuhiro IMAI 2020-11-20 23:34:38 UTC

拡張ライブラリ ripper の Ripper.tokenize と Ripper.lex の rdoc 用コメントで SyntaxError になった時に残りのトークンが無視されると記述されていたのを 1800f3fa5c29515113ecdcc5695e8a96f462b74c で挙動が変化したのでそれに追随して変更しています。 [ruby-core:100470] [Feature #17276]

[58325daae3] Jeremy Evans 2020-10-24 18:52:30 UTC

String のメソッドで String を継承した子クラスのインスタンスから呼ばれた時に結果をその子クラスではなく String のインスタンスとして返すように変更しています。ちょっと前に 2a294d499bf03211d02695f613f784a05943ea35 で Array クラスのメソッドででも同じような変更がありましたのでそれと類似ですね。 [ruby-core:68084] [Bug #10845]

[4988758e3a] Jeremy Evans 2020-11-21 00:42:38 UTC

58325daae3beefda13ed100782cd19a89cc68771 の String のクラスで子クラスから呼ばれても String を返すようにする変更について NEWS に追記しています。 [ruby-core:68084] [Bug #10845]

[0960f56a1d] Takashi Kokubun 2020-11-21 06:18:37 UTC

Ractor の導入により inline cache のアクセスが排他されるようになったので MJIT の worker に inline cache をコピーするための仕組みが不要になったそうで削除しています。 https://github.com/ruby/ruby/pull/3799

[3f8c60cf09] Takashi Kokubun 2020-11-21 06:22:28 UTC

58325daae3beefda13ed100782cd19a89cc68771 の変更で str_new_empty() が未使用になっているそうなので削除しています。

[ed8e552d4d] Takashi Kokubun 2020-11-21 06:41:55 UTC

MIT の C ソースコードをまとめて 1つの共有ライブラリにコンパイルする処理の関数 compact_all_jit_code() で compile_compact_jit_code() の呼び出しを CRITICAL_SECTION_START()/CRITICAL_SECTION_FINISH() で排他してるところに入れてたのを外に出しています。 in_compact という static 変数をセットする時だけ排他処理すれば充分みたいだったので。

[d645f18f0f] Jeremy Evans 2020-11-21 07:36:46 UTC

4988758e3a9a2e70ce1b605a88c32010ebe50208 の String 子クラスでも String のインスタンスを返すようにしたメソッドの NEWS への追記で抜けてたメソッド名の追加など。

[27d5af59a3] Takashi Kokubun 2020-11-21 07:31:23 UTC

MJIT の複数のメソッドのコードをまとめて 1つの .so にコンパイルする処理は MinGW など Windows 環境では無効にするようにしていますが、そのための切り替えのマクロが _MCS_VER と _WIN32 と混在していたので USE_JIT_COMPACTION というマクロを導入してこれを使うようにしています。このマクロ自体は _WIN32 を参照して定義するようにしています。また USE_HEADER_TRANSFORMATION というマクロがこれで不要になるので削除しています。

[8750d001c2] Takashi Kokubun 2020-11-21 07:48:39 UTC

27d5af59a359909e0d434459c30cfc0940f60a5b の変更で USE_JIT_COMPACTION を #ifdef でチェックしてたのを常に 0 か 1 に定義されてるので #if でチェックするよう修正しています。

[a6db9e8d7b] Takashi Kokubun 2020-11-21 08:29:51 UTC

mjit_worker.c の convert_unit_to_func() で未使用になってた .o ファイル名の生成を削除しています。