ruby-trunk-changes 2020-09-29

今日は ASAN 用の対応の強化や C API から category 指定つきの警告出力する用の API 追加などがありました。

[ac414139ec] Kazuhiro NISHIYAMA 2020-09-28 14:06:50 UTC

test/fiber/http.rb と test/json/json_generator_test.rb の mode に実行可能パーミッションがついてたのを落としています。

[18b3f0f54c] Aaron Patterson 2020-09-25 21:50:54 UTC

拡張ライブラリ objspace ではメモリ管理で struct RVALUE を確保してる heap を舐めるので ASAN によるチェックにひっかかるのを避けるため asan_poison_object()/asan_unpoison_object() で一時的にチェックを回避させるコードを追加しています。

[b328b83026] Aaron Patterson 2020-09-25 21:55:12 UTC

拡張ライブラリ coverage にも ASAN によるチェックを回避するための asan_unpoison_object()/asan_poison_object() を追加しています。

[b9488accf9] Aaron Patterson 2020-09-25 22:01:23 UTC

invalidate_all_cc() でも asan_unpoison_object() による ASAN のチェック回避の対応を追加しています。また 18b3f0f54c66632b1039a27634a8a449a7812e34 で objspace に追加した 変更で変数名の衝突があったので解消しています。

[0b0e2d88ce] Aaron Patterson 2020-09-25 23:25:36 UTC

拡張ライブラリ objspace で全オブジェクト(slot)を iterate する実装のために each_object_with_flags() という関数を追加して、ASAN の考慮のコードを1つにまとめるリファクタリング

[0164ac70a1] git 2020-09-28 15:20:47 UTC

version.h の日付更新

[5d7953f86b] Jeremy Evans 2020-09-25 20:29:20 UTC

Dir.chdir のブロックつき呼び出しでそのブロック内でブロックなしの Dir.chdir が呼ばれた場合には今まで警告でおさめていたのを例外発生させてエラーにするように仕様変更しています。 [ruby-core:91807] [Bug #15661]

[92c3ad9c27] Jeremy Evans 2020-09-02 22:49:40 UTC

Warning.warn でキーワード引数を keyword rest で受け付けないで category キーワード引数だけ受付けるようにしています。あれ、これって今後の拡張時の互換性を考えてこうしてたんじゃなかったっけ?

[346301e232] Jeremy Evans 2020-09-03 15:00:10 UTC

rb_category_warn() および rb_category_warning() という C API を追加して拡張ライブラリから category 指定つきの警告出力できるようにしています。おお、ここでは category と $VERBOSE のモードの指定は直交したものになっている。そういう仕様だったっけ……?

[0767d387ec] Aaron Patterson 2020-09-28 15:28:10 UTC

テスト用のユーティリティ EnvUtil.invoke_ruby で起動する子プロセスの ruby に ASAN_OPTIONS 環境変数を伝播させるようにしています。

[664eeda66e] Aaron Patterson 2020-09-28 15:37:09 UTC

vm_ccs_free() でも ASAN のチェックを一時的に回避するため asan_unpoison_object() する対応を追加しています。

[d598654c74] Aaron Patterson 2020-09-28 16:43:19 UTC

GC.compact で移動したオブジェクトへの参照を差し替える gc_ref_update() 内での不要な SPECIAL_CONST_P() のチェックを削除。 またオブジェクトが ASAN 用に poisoned されてた時にその型が T_NODE であることをチェックしている assertion を消しています。poisoned されたら flag をチェックするのも NG のため、かな。

[0555bd8435] Burdette Lamar 2020-09-28 16:58:39 UTC

String#succ! の rdoc 用コメントの call-seq から別名の next! の表記を削っています。 https://github.com/ruby/ruby/pull/3596

[85e9cc2c87] Aaron Patterson 2020-09-28 16:53:30 UTC

オブジェクト生成を一時的なバッファに行う transient_heap_block_evacuate() で ASAN のチェックを回避するための asan_unpoison_memory_region() と asan_poison_memory_region() での対応を追加しています。

[0a3099ae40] Aaron Patterson 2020-09-28 23:44:58 UTC

misc/lldb_cruby.py の lldb_inspect コマンドで heap ごとのビットマップ部分に格納されているビットフラグによる make/pinned/WB-unprotected などの情報も表示するようにしています。

[06099e4ee1] 卜部昌平 2020-09-29 00:57:47 UTC

c6c241e49c35a2bf0079499459f60f470f97395a で追加した RBIMPL_ALIGNOF() マクロ定義部分のコメントの typo 修正。

[40a499db65] Yusuke Endoh 2020-09-29 02:58:04 UTC

test/racc/test_racc_command.rb で追加した racc のテストでメソッドの第1引数が正規表現リテラルのため文法のあいまいさのための警告が出てたので明示的に引数をかっこでくくるようにしています。

[b971f141b2] Nobuyoshi Nakada 2020-09-29 04:14:54 UTC

common.mk や depend ファイルの依存関係更新。

[a9ff390870] Nobuyoshi Nakada 2020-09-29 04:41:59 UTC

OpenBSD の make で make install に失敗するという不具合の修正。 make prepare-gems や make extract-gems で BASERUBY が存在しない時に bundled gems を再ダウンロードしようとするのを抑制するようにしています。 [ruby-core:100163] [Bug #17191]

[2e947bc181] Yusuke Endoh 2020-09-29 05:39:21 UTC

doc/syntax/literals.rdoc に文字列内への埋め込みで "$@var" や "#$var" のような "{}" のない記法でもインスタンス変数やグローバル変数が埋め込めることを追記しています。これあまり使わない(特にグローバル変数)のでたまにうっかり書いて空っぽになって、あれ? ってなるんですよね。

[dcb705ace7] Nobuyoshi Nakada 2020-09-29 06:28:09 UTC

2e947bc181794d1bcf26d700b2c2c15b53c45b36 にさらに追記して "#@@var" でクラス変数も文字列内に埋め込めることを追記しています。

[d23d2f3f6f] Yusuke Endoh 2020-09-29 04:15:58 UTC

標準添付ライブラリ webrick で Connection ヘッダーの内容をチェックする際の正規表現に \A, \z を追加して厳密に一致をみるようにしています。