ruby-trunk-changes r66364 - r66384

今日は先日追加された TracePoint の compiled_script イベントを script_compiled に変更したり thread まわりの不具合修正? などがありました。

ko1: r66364 2018-12-13 00:45:06 +0900

r66249 で導入した TracePoint の compiled_script イベントの名前を script_compiled に改名、関連する TracePoint の属性取得メソッド名も改名しています。[ruby-core:89742] [Feature #15287]

svn: r66365 2018-12-13 00:45:09 +0900

version.h の日付更新。

ko1: r66366 2018-12-13 00:59:49 +0900

RubyVM::InstructionSequence の binary からのロードで rb_iseq_constant_body::catch_except_p のコピーが漏れていたのを修正しています。 [ruby-dev:50690] [Bug #15395]

ko1: r66367 2018-12-13 02:12:08 +0900

r66366 と同じく ISeq の binary format からのロード時に rb_iseq_constant_body::flags::has_kw もコピーするようにしています。また初期化しておくようにしています。

ko1: r66368 2018-12-13 02:16:02 +0900

frozen_string_literal が true の時に文字列リテラルのみ含む配列リテラルの文字列が freeze されることを確認するテストで環境変数 RUBY_ISEQ_DUMP_DEBUG が定義されてなかったら String#<< で追記してみるテストは省略するようにしています。 ISeq を dump/load して読み込み直した時にこの特性は失われるからとのことだけど既知の不具合ということかな?

marcandre: r66369 2018-12-13 04:49:22 +0900

Range の rdoc 用コメントに endless range について追記しています。 [ruby-core:90453] [Bug #15405]

marcandre: r66370 2018-12-13 04:51:50 +0900

NEWS ファイルに endless range について "0..." のようにピリオド 3つの記法も追記しています。

mrkn: r66371 2018-12-13 06:17:04 +0900

r66351 で追加して r66353 で引数変更した C API rb_arithmetic_sequence_extract() のテスト用拡張ライブラリを追加しています。

svn: r66372 2018-12-13 06:17:05 +0900

r66371 で追加した新規ファイルの svn property 設定。

marcandre: r66373 2018-12-13 06:45:17 +0900

r66369 の endless range についてのドキュメント追加の typo 修正。 [ruby-core:90453] [Bug #15405]

stomar: r66374 2018-12-13 07:03:11 +0900

r66369 の endless range についてのドキュメント追加の文法修正。 [ruby-core:90453] [Bug #15405]

stomar: r66375 2018-12-13 07:04:48 +0900

r66154 の String#crypt の rdoc 用コメントの追記の文法修正。 [ruby-core:87959] [Feature #14915]

tenderlove: r66376 2018-12-13 12:01:18 +0900

RubyVM::InstructionSequence の binary format からのロードで SEGV することがある不具合修正。 r62851 のoperand の GC mark のための配列を消して直接 mark するようにした時に iseq_size を +1 するのを消し忘れていて余計な領域にアクセスしていたみたいです。 [ruby-core:90456] [Bug #15406]

nobu: r66377 2018-12-13 14:09:58 +0900

拡張ライブラリ date の tmx_m_zone() で m_zone() が返す文字列オブジェクトのバッファのポインタを返すのに RSTRING_PTR() の引数に直接 m_zone() を渡してたので複数の呼び出しに展開されてしまうので、一旦変数に受けるようにしています。 ここ RB_GC_GUARD() してもここで新規作成した String のバッファへのポインタを返しちゃってるので呼び元で GC するタイミングがあったらまずいですね(と、いうことを意味しているような TODO コメントも追加されています)。

k0kubun: r66378 2018-12-13 14:59:14 +0900

win32ole のテストでタイミングによって? たまに失敗する WIN32OLE_EVENT#on_event の assertion を retry つきの assert_match_with_retries を使うように変更しています。

normal: r66379 2018-12-13 17:44:15 +0900

gvl_release_common() の戻り値の型に const 修飾子を追加しています。

akr: r66380 2018-12-13 17:53:15 +0900

r66352 で追加された open3 のテストが Windows で動かないということで r66361 で skip されましたが、fd が 2 までなら動くので 2 (stderr) をリダイレクトするように指定を変更しています。

normal: r66381 2018-12-13 18:25:46 +0900

native_ppoll_sleep() および native_sleep() で GVL 解放する時に GVL_UNLOCK_BEGIN() ではなく GVL_UNLOCK_BEGIN_YIELD() を使うようにして native_thread_yield() を読んでスレッド切り替えを促すようにしています。 sleep 中にシグナル受信した時のテストでタイムアウトするのを修正しようという試みのようで、thread の切り替えがおこらず同じスレッドが待ち続けてしまってるんじゃないか、ってことみたいです。 [ruby-core:90417] [Bug #15398]

normal: r66382 2018-12-13 18:41:17 +0900

r66381 に続いて native_ppoll_sleep() で unregister_ubf_list() を読んでるのを削除しています。 r65495 で timer thread への通知用に signal_self_pipe にメンバー追加してこれを使うようになった時に不要になってたのに消し忘れてたとのこと。

kazu: r66383 2018-12-13 18:51:05 +0900

Proc#call および Regexp.last_match の rdoc 用コメントの typo 修正。

usa: r66384 2018-12-13 19:51:59 +0900

tool/rbinstall.rb で defailt gem のインストールに $script_installer っていうオブジェクト(Class.new で動的に作ったクラスのインスタンスを作っていれている。良い子は真似をしないようにしよう)の install メソッドを使っていたのをトップレベルに定義されている install メソッドを呼ぶようにしています。 $script_installer のほうは shebang と本体に分離してから Windows 上で stub つきのファイルにしたりしているのをやめているようです。gem の作法では不要ということかな。