ruby-trunk-changes 2020-02-10

今日は Refinements のメソッドを UnboundMethod で取り出して bind した時のチェック不足の修正や RubyVM::InstructionSequence#to_binary の性能改善などがありました。

[e3e96e3faa] Nobuyoshi Nakada 2020-02-09 11:13:49 UTC

UnboundMethod#bind でそのインスタンスの対応する Method にする時に Refinements で再定義してるメソッドをその Module から取り出して bind すると実際には呼べないのに bind できてしまって SEGV する可能性がある不具合を修正しています。ややこしい。 [ruby-core:97103] [Bug #16617]

[9dcb324fbe] aycabta 2020-02-09 08:16:53 UTC

425b2064d394639101854c83a061a0918b33b857 で拡張ライブラリ readline の依存関係に ruby.h を追加したのを revert しています。

[05711adfb4] aycabta 2020-02-09 06:33:28 UTC

拡張ライブラリ readline の extconf.rb で $INCFLAGS に -I$(top_srcdir) を追加していたのを削除しています。独立した gem としてビルドする時に問題になったようです。

[ac0658e720] aycabta 2020-02-09 07:41:07 UTC

readline のテストで reline を使っているバージョンかどうかのチェックで TestRelineAsReadline を参照する前に defined? で存在チェックするようにしています。これも独立した gem としてのテスト時のためですね。

[a629f147cd] aycabta 2020-02-09 08:06:17 UTC

拡張ライブラリ readline の依存関係から ruby/assert.h を削除しています。このヘッダが 2.7 以降にしかないのでとのこと。なのでこれも独立した gem としてのビルド対策ですね。

[fd6746c7a6] aycabta 2020-02-09 08:18:41 UTC

readline のテストで reline を使うテストを有効にするかどうかを環境変数ではなくて require "reline" してみて成功するかどうかで判定するようにしています。

[108a288079] aycabta 2020-02-09 11:00:58 UTC

readline-ext.gemspec に spec.extensions の定義を追加しています。

[f3471174bb] aycabta 2020-02-09 11:14:32 UTC

readline.gemspec ファイルに development_dependency を復活させています。

[26532c7e77] Yusuke Endoh 2020-02-09 12:40:16 UTC

doc/make_cheatsheet.md に make test-spec で特定のファイルのみ実行するのに MSPECOPT 変数を使う方法を追記しています。

[6f04f0cc44] Yusuke Endoh 2020-02-09 12:40:53 UTC

Queue と signal の組み合わせのテストで Process.kill する Thread がビジーループするのでなかなか処理が進まなくてタイムアウトする環境があったようなので短い sleep を挟むようにしています。

[9c5a2fed85] Alan Wu 2020-02-09 16:12:50 UTC

a629f147cd255b9887ce05a803431e243b925d08 の readline の depend ファイルから ruby/assert.h を削除した変更を revert しています。うーん綱引き状態。

[2079f436c7] git 2020-02-09 16:27:54 UTC

version.h の日付更新

[6e5e6a40c4] NagayamaRyoga 2019-12-18 10:26:02 UTC

RubyVM::InstructionSequence#to_binary でのバイナリダンプで同一のオブジェクトを同じ通し番号でダンプするための探索が Array オブジェクトの線形探索だったので st_table を使うようにして高速化しています。 [ruby-core:96801] [Feature #16505]

[e443f23576] NagayamaRyoga 2020-02-06 12:31:28 UTC

RubyVM::InstructionSequence#to_binary の実装で struct ibf_dump::iseq_list を削除して ibf_dump_iseq_list() で struct ibf_dump::iseq_table を元にリスト生成するようにしています。 [ruby-core:96801] [Feature #16505]

[a2845adb49] NagayamaRyoga 2020-02-06 12:49:13 UTC

struct ibf_dump_buffer::obj_list も同様に削除して 6e5e6a40c4c35aee1cfb7d0effa47354f80baa9e で導入した struct ibf_dump_buffer::obj_table で代替するようにしています。 [ruby-core:96801] [Feature #16505]

[f83781c8c1] 卜部昌平 2020-02-10 03:10:51 UTC

2つの文字列の Encoding の互換性チェックの enc_compatible_latter() で str2 も String オブジェクト(T_STRING 型)の時だけ rb_enc_str_asciionly_p() を呼ぶパスに入るように修正しています。

[442c6de554] Hiroshi SHIBATA 2020-02-10 04:28:54 UTC

doc/make_cheatsheet.md に make test-bundler のターゲットについて追記しています。

[6e6844320d] Nobuyoshi Nakada 2020-02-10 03:15:48 UTC

parse.y で command_rhs というノードのアクションで value_expr() というチェックを行なっているので、command_rhs を還元するルールのアクション部で重複して value_expr() を呼んでいるところを削除しています。

[912ef0b559] Yusuke Endoh 2020-02-10 05:13:48 UTC

a28c166f787710227c6aac54befd72778f041485 の s390x での stack overflow チェックのための範囲を広くしたのを revert しています。これは効果がなくて ulimit -s でスタックサイズの上限を増やすことで対応できたとのこと。

[8474e6ae1f] Kazuhiro NISHIYAMA 2020-02-10 07:00:51 UTC

GitHub Actions の Slack 通知に github.run_id という変数を使って GitHub Actions の対応するページへのリンクを貼るようにしています。

[6891fd1580] aycabta 2020-02-10 10:41:07 UTC

tool/sync_default_gems.rb で readline の同期時に ext/readline/depend の変更は取り消すようにしています。なるほど、こうして upstream の変更を無視することができるのか。