ruby-trunk-changes 2019-11-29

今日は Thread の切り替えポイントを増やす変更やインスタンス変数の参照を高速化する最適化のT_OBJECT 以外のオブジェクトへの適用、2.7 のキーワード引数への警告を同じ箇所で1回だけ出すように制御する変更などがありました。

[2fa3b4565a] Nobuyoshi Nakada 2019-11-28 12:31:53 UTC

5069c5f5214ce68df8b3954321ad9114c5368dc3 の再修正で rb_include_class_new() の RCLASS_SET_ORIGIN() の呼び出しを一箇所にまとめるリファクタリング[ruby-core:95242] [Bug #16242]

[0b453e2a55] Nobuyoshi Nakada 2019-11-28 12:45:43 UTC

NEWS ファイルのエントリの行頭にチケット参照がきてマークアップとして解釈されてしまうのを防ぐため前の行に巻き上げています。

[76871dea6b] "NARUSE, Yui" 2019-11-28 14:31:01 UTC

tool/format-release でリリース情報をサイトに載せるための release.yml にダンプする情報を増やしています。

[b5fbefbf2c] "NARUSE, Yui" 2019-11-17 14:24:59 UTC

Symbol#start_with? や Symbol#end_with? といったメソッドを新規追加しています。 [ruby-dev:50862] [Feature #16348]

[dd723771c1] Koichi Sasada 2019-11-28 18:02:44 UTC

インスタンス変数へのアクセスを高速化するために T_OBJECT 型のオブジェクトで行なわれているインスタンス変数名からインデックスへのマッピングのキャッシュを FL_EXIVAR というフラグが立ってる別の型のオブジェクトについても generic_iv_tbl を共有して同じような高速化を図っています。

[d104ebf2c4] git 2019-11-28 18:11:28 UTC

dd723771c118da71aa58bb74537cacaec425542a の行末の空白除去。

[e5705c351c] git 2019-11-28 18:11:40 UTC

version.h の日付更新

[2e6f1cf8b2] Koichi Sasada 2019-11-28 18:17:34 UTC

dd723771c118da71aa58bb74537cacaec425542a で追加した rb_ivar_generic_ivtbl() を MJIT 向けに export するように MJIT_FUNC_EXPORTED を定義に追加。してますが余計な変更も混じってしまったみたいで後で revert されています。

[27d0d7c0d3] git 2019-11-28 18:18:19 UTC

2e6f1cf8b264f4c8499c4e5f18bf662fdade04ff の行末の空白除去。

[e4e41840ad] Koichi Sasada 2019-11-28 18:22:13 UTC

27d0d7c0d39076d4bbacd3c3f3864322699db7b4 を revert。 その前の 2e6f1cf8b264f4c8499c4e5f18bf662fdade04ff を revert するためと思われます。

[f38b6d197f] Koichi Sasada 2019-11-28 18:22:24 UTC

2e6f1cf8b264f4c8499c4e5f18bf662fdade04ff を revert.

[6b460a7948] Koichi Sasada 2019-11-28 18:24:30 UTC

2e6f1cf8b264f4c8499c4e5f18bf662fdade04ff のやりなおし。dd723771c118da71aa58bb74537cacaec425542a で追加した rb_ivar_generic_ivtbl() を MJIT 向けに export するように MJIT_FUNC_EXPORTED を定義に追加。

[98006cea4f] Nobuyoshi Nakada 2019-11-29 01:16:33 UTC

拡張ライブラリ psych の extconf.rb で同梱版の libyaml を使う時に yaml.h への依存関係を depend に追加するようにしています。

[a593186a02] Nobuyoshi Nakada 2019-11-29 02:09:08 UTC

98006cea4fd517671dae508fade13203bc18301a の続きで拡張ライブラリ psych の extconf.rb で同根版の yaml.h のヘッダのパスを Windows 版では $(VPATH) をつけて参照するように修正しています。

[ba1cb388a9] Nobuyoshi Nakada 2019-11-29 02:17:27 UTC

b5fbefbf2c14742f6d46ecdf3ce712062dfb1d0a の NEWS エントリの位置が String の部分になってたので Symbol のところに移動しています。 [ruby-dev:50862] [Feature #16348]

[f83bebdf7a] Nobuyoshi Nakada 2019-11-29 02:19:09 UTC

拡張ライブラリ json のテストのテストメソッドのひとつは JSON::Ext が存在する時だけ意味があるテストとして、存在しない時はメソッド自体を定義しないようにしています。

[5ad32d5504] Nobuyoshi Nakada 2019-11-29 02:25:23 UTC

標準添付ライブラリ optparse のテストの did_you_mean の機能を使うテストで require "did_you_mean" に失敗したら top-level return してテスト全体を定義しないことでスキップするようにしています。後置 rescue で同様の対処をしていましたが後置 rescue は StandardError しか捕捉できないので LoadError はスルーされてしまっていました。

[3a87826d0c] Yusuke Endoh 2019-11-29 07:51:13 UTC

なんか最近まちがえて Kernel#ruby2_keywords って書いちゃった気がしますが、まだ Module#ruby2_keywords しかなくてトップレベルで定義するメソッドには使えなかったので main オブジェクトの特異メソッドとしての ruby2_keywords も追加してトップレベルでも使えるようにしています。 [ruby-core:95918] [Feature #16364]

[191ce5344e] Yusuke Endoh 2019-09-13 08:02:08 UTC

2.7 からキーワード引数の将来の変更のため警告を出すようにしていますが、これが大量に出すぎるのを抑制するため同じ呼び出し元からは 1回しか警告が出ないように呼び出し位置の情報を記録しておくようにしています。 [ruby-core:95627] [Feature #16289]

[bbbe481dc3] Kazuhiro NISHIYAMA 2019-11-29 08:32:52 UTC

SECURITY.md というファイルを追加して安定版のバージョンや脆弱性報告についてのページへのリンクを書いています。どうやらこのファイルを置くと GitHubhttps://github.com/ruby/ruby/security/policy というところに表示してくれるようです。へー知らなかった。

[c4686b9235] aycabta 2019-11-29 08:36:54 UTC

5e275dd2af4d9d24cdb1cfc0f232f348dae9c2cd で irb が使う RubyLex という lexer で numbered parameter の @1 みたいな文法に対応していたのを revert しています。 numbered parameter は _1、_2 みたいな形式に変更になったので。

[36da0b3da1] Koichi Sasada 2019-11-29 08:39:06 UTC

Thread の割り込みポイントを C 実装のメソッドや C実装のブロックから抜ける時にも入れるようにするため、vm_pop_frame() で常に RUBY_VM_CHECK_INTS() を呼ぶようにして、VM 命令の leave や throwobj 命令で呼んでたところはかわりに削っています。また Enumerable のメソッドでは C 実装のブロックの合間に割り込みポイントを作るため rb_thread_check_ints() を呼んでたのも不要になるので削っています。 これにより詳細な Thread の制御に影響するテストでこれに合わせてテストを修正しています。通常のプログラムは影響を受けないはずですが、これまで Thread の切り替えポイントになっていなかったところに依存した拡張ライブラリでの排他処理の省略をしてたりしたところはこれにより race condition とか Array のサイズが途中で変わりうるみたいな問題が発生する可能性があるかも。そういうのはたまたま動いてた、というべきなんだろうけど。 [ruby-core:95939] [Bug #16366]