ruby-trunk-changes 2020-02-22

今日は net/http, net/ftp の default gem 化やメソッドキャッシュの実装の大幅な変更などがありました。

[f08d8e5e85] Hiroshi SHIBATA 2020-02-21 10:09:21 UTC

標準添付ライブラリ net/ftp を default gem 化しています。

[a294ec1622] Hiroshi SHIBATA 2020-02-21 10:56:15 UTC

doc/maintainers.rdoc と doc/standard_library.rdoc の net/ftp の項目を default gems のセクションに移動。

[9cb1ffaa5c] Hiroshi SHIBATA 2020-02-21 12:21:14 UTC

標準添付ライブラリ net/http も default gem 化しています。

[fa1cf777db] Hiroshi SHIBATA 2020-02-21 12:23:16 UTC

doc/maintainers.rdoc と doc/standard_library.rdoc の net/http のエントリも default gems のセクションに移動しています。

[e7f8724fb2] Hiroshi SHIBATA 2020-02-21 12:25:43 UTC

tool/sync_default_gems.rb の net/ftp の gem の同期の手順を修正しています。

[8d3b7f0fda] Hiroshi SHIBATA 2020-02-21 12:30:04 UTC

tool/sync_default_gems.rb の ftp 以外の net/xxx 系の gem の同期の手順も修正しています。

[5e7322b866] Nobuyoshi Nakada 2020-02-19 10:27:53 UTC

irb の色付けのテストで yield の色つけのためのサンプルコードがトップレベルにいきなり yield が書かれていて SyntaxError になるものだったのでメソッド定義内に置くように修正しています。

[0b4500d982] Nobuyoshi Nakada 2020-02-21 15:17:31 UTC

vm_insnhelper.c のインデント修正。

[5cab86f3b0] Nobuyoshi Nakada 2020-02-21 15:30:55 UTC

f0b815dc670b61eba1daaa67a8613ac431d32b16 の Symbol#to_proc で作った Proc が lambda? に true を返すようにした変更についてのテストを追加しています。 [ruby-core:95418] [Bug #16260]

[8c5ca318cb] Nobuyoshi Nakada 2020-02-21 15:32:43 UTC

Symbol#to_proc で作った Proc が Refinements で上書きされているメソッドの呼び出しだった時にも lambda? を true にする対応が有効になるように修正しています。 [ruby-core:95418] [Bug #16260]

[5a89c05773] git 2020-02-21 15:45:33 UTC

version.h の日付更新

[a1eb1fabef] Koichi Sasada 2020-02-21 17:59:46 UTC

internal.h のデバッグ用の rp() マクロ定義で __func__ を使っていたところを移植性のため RUBY_FUNCTION_NAME_STRING のほうを使うようにしています。

[f2286925f0] Koichi Sasada 2020-01-07 23:20:36 UTC

struct rb_call_info の内容を kwarg が空(NULL)の時に必要なサイズが VALUE で足りるのでその場合はポインタのかわりにその他の情報を埋め込んで持つようにしてメモリ消費を減らしています。うーん、なるほど。

[b9007b6c54] Koichi Sasada 2020-01-08 07:14:01 UTC

メソッドキャッシュの実装の変更と Class 毎のメソッドキャッシュの機構の導入。 インラインメソッドキャッシュの実体 struct rb_callcache を T_IMEMO 型のオブジェクトとして持つようにしてそのメモリ管理を GC にまかせるようにしています。マルチスレッドでの競合の問題をおきにくくするためとのこと。またメソッド再定義時のキャッシュの破棄に class_serial を使う手法のかわりに method entry 毎に直接破棄フラグを立ててキャッシュ破棄することでメソッド再定義時の影響範囲を狭くするようにしているようです。かなり大規模の変更なのでしばらくなにかと追加変更がありそう(Refinements がらみとか…)。 [ruby-core:97084] [Feature #16614]

[d7984d0f54] git 2020-02-22 00:59:23 UTC

b9007b6c548f91e88fd3f2ffa23de740431fa969 の行末の空白除去。

[da31035687] MSP-Greg 2020-02-19 14:11:32 UTC

拡張ライブラリ readline のテストの一部のテストクラスの定義を環境変数 TEST_READLINE_OR_RELINE をチェックして Reline のテストのために呼ばれてた時には定義しないようにしています。

[af12e38675] Burdette Lamar 2020-02-22 01:25:54 UTC

ENV の rdoc の整形やリンクの修正など。

[31748e69c8] Koichi Sasada 2020-02-22 01:26:15 UTC

RubyVM::InstructionSequence#to_binary で f2286925f08406bc857f7b03ad6779a5d61443ae の変更の影響? で rb_call_data::ci が NULL の場合があるようになったのでそれに対処するように分岐を追加しています。

[5b29ea0845] Nobuyoshi Nakada 2020-02-22 01:40:25 UTC

Symbol#to_proc で生成した Proc オブジェクトの arity が -2 を返すようにしています。あれ? と思ったけど第1引数にはメソッドを呼ぶ receiver を渡すようになってるんでしたねそういえば。 [ruby-core:97190] [Bug #16640]

[f744d80106] Koichi Sasada 2020-02-22 02:23:30 UTC

b9007b6c548f91e88fd3f2ffa23de740431fa969 で rb_iseq_mark() に追加した MJIT を考慮した分岐を USE_MJIT が真の時だけ定義するように preprocessor の分岐を追加しています。

[c7b71af9e2] Nobuyoshi Nakada 2020-02-22 06:03:18 UTC

ruby-runner.c のコンパイル時(これって make runruby で起動するためのバイナリのソースだっけ?)に RUBY_INSTALL_NAME マクロを定義するコンパイラオプションを渡してビルドして、ruby-runner で環境変数 PATH を上書かないようにしています。うーん、よくわからない。