ruby-trunk-changes 2019-11-18

今日は $SAFE の deprecated 化や builtin 関数の機構でメソッドの引数を C に委譲する時に専用の VM 命令を使う条件を緩和する変更などがありました。

[910f9b8338] aycabta 2019-11-17 14:12:18 UTC

標準添付ライブラリ reline のバージョンを 0.0.5 に更新しています。

[be95d59160] aycabta 2019-11-17 14:11:58 UTC

irb のバージョンを 1.1.0.pre.4 に更新しています。

[e7c5c60095] aycabta 2019-11-17 14:25:37 UTC

irb の gemspec ファイルの spec.files から 45bb6f28db04a1f267f5b8d79392cb35087510d8 で削除した lib/irb/ruby-token.rb を削っています。

[7c6bedfe5c] aycabta 2019-11-17 18:23:45 UTC

標準添付ライブラリ reline の Reline::LineEditor#input_key で引数の nil? でのチェックは不要として削っています。

[7b6a8b5b54] git 2019-11-17 18:25:17 UTC

version.h の日付更新

[c5c05460ac] Jeremy Evans 2019-09-21 02:06:22 UTC

tainted フラグをチェックする処理を削り、$SAFE を操作したり $SAFE の値に応じたチェックを行う API で警告を出力するようにして $SAFE を deprecated にしています。互換性のため C API の rb_eval_cmd() の level 引数は残されていますが、たぶん代替となる API を追加する予定とのこと。

[ffd0820ab3] Jeremy Evans 2019-09-25 03:59:12 UTC

OBJ_TAINT()、OBJ_TAINTED() や OBJ_INFECT() などの tainted フラグ操作/チェックのマクロ利用しているところをさらに削っています。また対応するテストも削除しています。

[ab42e5a486] Jeremy Evans 2019-11-15 02:54:13 UTC

$SAFE の deprecated の対応続き。

[50013f7ebc] Jeremy Evans 2019-10-18 18:33:09 UTC

標準添付ライブラリ rexml で戻り値に taint してるところを RUBY_VERSION が 2.6 以前の時だけ taint するように対応しています。

[23f1fb0663] Jeremy Evans 2019-11-14 20:30:56 UTC

標準添付ライブラリ rss でもファイルパスの tainted チェックをするのを 2.6 以前だけにするように対応しています。

[398cd3cc7d] Jeremy Evans 2019-10-18 19:10:03 UTC

拡張ライブラリ etc で taint フラグのチェックの API を呼ぶのを削っています。

[17e8a6eff4] Jeremy Evans 2019-10-18 19:25:15 UTC

拡張ライブラリ io/console からも rb_check_safe_obj() の呼び出しを削っています。

[afbd8f384a] Jeremy Evans 2019-10-18 19:28:44 UTC

拡張ライブラリ openssl からも rb_check_safe_obj() や OBJ_TAINT() の呼び出しを削っています。

[d03da13b17] Jeremy Evans 2019-11-15 00:56:02 UTC

拡張ライブラリ strscan からも OBJ_INFECT() を呼ぶユーティリティを削除しています。

[c257303ae7] Jeremy Evans 2019-09-25 22:49:21 UTC

互換性のため safe_level を指定する引数を消せなかった rb_eval_cmd() を deprecated にして代替として rb_eval_kw() という C API を追加しています。

[3a0de05bee] Jeremy Evans 2019-10-04 15:44:33 UTC

doc/security.rdoc および doc/extension.rdoc, doc/extension.ja.rdoc から $SAFE についての記述や関連する C API の説明を削除しています。

[4c7dc9fbe6] Jeremy Evans 2019-11-14 20:15:01 UTC

NEWS ファイルに $SAFE の deprecation について追記しています。

[b753929806] git 2019-11-17 23:00:52 UTC

4c7dc9fbe604cc0c8343b1225c96d4e5219b8147 の行末の空白除去。

[93ce4f1cd7] Koichi Sasada 2019-11-18 01:14:56 UTC

prelude.rb を builtin を使うようにした変更に追随して common.mk の依存関係を再生成しています。

[71fee9bc72] Koichi Sasada 2019-11-15 08:49:49 UTC

builtin function の機能で ruby 実装のメソッドからその引数をそのまま委譲して C の関数を呼び出す機構で引数が完全に一致してなくてメソッド引数のうち後半の部分のみ渡すケースも対応できるように専用の VM 命令に offset の operand を追加しています。さらにローカル変数も引数に続いて宣言順? に local_table に並ぶので「引数の後半+ローカル変数の前半」みたいな順で引数に渡す時は専用の命令が使われるようになってます。こうすると VM stack に値を積むのを省略できてちょっと効率的らしい。

[c3693bbaaa] Koichi Sasada 2019-11-18 01:24:38 UTC

71fee9bc720ba7a117062bf3f78b6086527b656c の変更に追随して Array#pack のテストでコンパイル後の VM 命令が変化するのにあわせてテストを修正。

[5e34ab5406] Koichi Sasada 2019-11-18 01:36:48 UTC

71fee9bc720ba7a117062bf3f78b6086527b656c の変更で vm_invoke_builtin_delegate() の引数 に追加した index の型を unsigned int に変更。コンパイラの警告抑制のため。

[22c9504905] Nobuyoshi Nakada 2019-11-18 02:05:08 UTC

string.c の rb_tainted_str_new_with_enc() という static 関数が未使用になってたので削除。

[57cd4623cf] Koichi Sasada 2019-11-18 04:36:34 UTC

71fee9bc720ba7a117062bf3f78b6086527b656c で追加したデバッグ用の printf() に渡してる __func__ を移植性のため RUBY_FUNCTION_NAME_STRING に変更。

[7a9b2039b7] 卜部昌平 2019-11-18 03:00:19 UTC

process.c、ruby.c、string.c などで代入して未使用の変数の削除。

[209164e44f] Nobuyoshi Nakada 2019-11-18 09:42:22 UTC

missing/x86_64-chkstk.s の拡張子を大文字の .S に変更しています。

[227220b25a] Nobuyoshi Nakada 2019-08-09 15:02:17 UTC

tool/update-deps で .timestamp ファイルへの依存関係は skip するようにしています。

[39492d6ce6] Nobuyoshi Nakada 2019-08-09 15:02:17 UTC

tool/update-deps で make -p で依存関係を表示させる時に ruby のかわりに ruby-runner を指定するようにしています。