ruby-trunk-changes 2020-02-03

今日はメソッド引数解析まわりの構造体の整理や keyword splat に Hash 以外の引数を渡しても無視されてた不具合の修正などがありました。

[fae537259d] Nobuyoshi Nakada 2020-02-02 14:09:25 UTC

メソッド引数解析に使う構造体 struct rb_scan_args_t のメンバー last_hash を削除しています。条件分岐の条件をよくみると未使用になっていたのでということで、おそらくキーワード引数分離した時に不要になってたんでしょうね。

[9a446fd7ba] Nobuyoshi Nakada 2020-02-02 23:44:51 UTC

同じく構造体 struct rb_scan_args_t のメンバー vargs も既に参照しているところがなかったので削除しています。

[d9552cbd5a] git 2020-02-03 01:27:09 UTC

version.h の日付更新

[0fa43b0c1b] Yusuke Endoh 2020-02-03 02:51:10 UTC

rubygems のテストに同名のテストメソッドが重複して存在していたので削除しています。

[48c851f868] Nobuyoshi Nakada 2020-02-03 01:49:17 UTC

構造体 struct rb_scan_args_t をさらに整理して argc, argv, hash などのメンバーも削除して、これらのメンバーに相当する変数を rb_scan_args_assign() に直接渡すよう限定しています。実行時の情報を struct rb_scan_args_t から追い出すっていう意図だそうです。

[0ab7f2f222] Nobuyoshi Nakada 2020-02-03 04:07:34 UTC

struct rb_scan_args_t の kw_flag をチェックする処理を rb_scan_args_keyword_p() という inline 関数またはマクロに分離して、rb_scan_args_set() で rb_keyword_given_p() を直接呼び出してたところも kw_flag をチェックするようにしています。

[db69c50987] Nobuyoshi Nakada 2020-02-03 05:19:02 UTC

include/ruby/ruby.h の rb_scan_args_xxxx() 系のマクロ定義で引数の展開時にかっこを追加しています。

[a635c93fde] Koichi Sasada 2020-02-03 07:57:41 UTC

vm_insnheler.c の vm_check_canary() と vm_canary_is_found_dead() に MJIT_FUNC_EXPORTED をつけて MJIT 用に export するようにしています。 VM_CHECK_MODE を 1以上にしてかつ optflags=-O0 を指定した時に MJIT のテストが失敗してたそうです。

[11963da9e8] Seiei Miyagi 2020-02-03 08:43:03 UTC

VM 命令へのコンパイルで Hash 生成のコンパイル時に keyword splat での Hash 生成で空の Hash リテラルかどうかのチェックで NODE_LIT の内容が Hash オブジェクトであることもチェックするようにしています。 Hash 以外のリテラルが ** に渡された時にエラーにならなくなっていたようです。 [ruby-core:97047] [Bug #16603]