ruby-trunk-changes r61013 - r61029

今日は method coverage の管理方法の変更や ISeq にコード範囲情報を格納するようにする変更などがありました。

usa: r61013 2017-12-04 19:48:30 +0900

Windows の新しめのバージョンではファイルのタイムスタンプに nano sec までの精度で取得できるのでそれに対応していますが、system time よりも精度が良くてかえってずれが起きることがあるそうで(未来のタイムスタンプにみえてしまう?)、特定のバージョンではあえて無効化するようにしているみたいです。結構大きなパッチになってます。 [ruby-core:81873] [Misc #13702] [ruby-core:81946] [Feature #13726]

kazu: r61014 2017-12-04 21:31:44 +0900

File.utime と File.lutime の rdoc 用コメントの code タグによるマークアップを削っています。 メソッド名なので自動でリンクになるのでそれを邪魔しないようにした、ということかな?

nobu: r61015 2017-12-04 21:49:20 +0900

r61007 で移動した構造体 FILE_ID_128 の定義ですが、mingw では元から定義があるそうなので、定義しないように preprocessor の条件を追加しています。

yui-knk: r61016 2017-12-05 08:59:02 +0900

rescue 節に rescue => err のように例外オブジェクトを格納する変数の指定つきの時に生成される NODE_DASGN_CURR と NODE_ERRINFO の位置情報を修正しています。

svn: r61017 2017-12-05 08:59:03 +0900

version.h の日付更新。

nobu: r61018 2017-12-05 09:09:58 +0900

Integer#pow の実装で追加した int_pow_tmp2() のリファクタリング。使える型によって分岐していたところを、マクロ定義だけ分岐するようにして共通化するようにしています。

shugo: r61019 2017-12-05 09:59:40 +0900

伝統的に(?) net/ftp のテストで Net::FTP.new したら ftp.read_timeout を設定しておくようになっていたのですが、本当に設定が必要だったテストケースは 1つだけだったらしく、不要な他の read_timeout の設定は削っています。

hsbt: r61020 2017-12-05 10:10:13 +0900

Fiber で使うマシンスタックの最小サイズ RUBY_VM_FIBER_MACHINE_STACK_SIZE_MIN を powerpc64 の環境では 32K * sizeof(VALUE) に引き上げています。 スタックサイズが足りなくてテストが失敗していたそうです。 [ruby-core:82114] [Bug #13757]

svn: r61021 2017-12-05 10:10:15 +0900

r61020 の行末の空白除去。

mame: r61022 2017-12-05 13:23:06 +0900

rubyコマンドラインオプション --dump=parsetree や --dump=parsetree_with_comment で表示する時の NODE の位置情報を first_(lineno, column), last_(lineno, column) をそれぞれ表示してたのを (a,b)-(c,d) のように簡略化した表示をするようにしています。

mame: r61023 2017-12-05 16:16:42 +0900

拡張ライブラリ coverage での method coverage の取得法を rb_iseq_compile_node() で trace 命令を埋め込むのではなく、拡張ライブラリ coverage で method entry 毎の coverage 情報を確保するテーブルを保持して RUBY_EVENT_CALL イベントフックでこのテーブルを管理するようにしています。これにより Module#define_method で定義したメソッドについても method coverage が取れるようになるそうです。

nobu: r61024 2017-12-05 17:50:14 +0900

node.c の --dump=parsetree などの時の dump 用の マクロ COMPOUND_FIELD() の定義を SIMPLE_FIELD() の定義と共有化するリファクタリング

mame: r61025 2017-12-05 17:56:50 +0900

構造体 rb_iseq_location_t に code_range というソースコード上の範囲情報を持つメンバーを追加して ISeq に NODE の位置情報の範囲を格納しておくようにしています。 method coverage で利用するためみたいです。

mame: r61026 2017-12-05 17:56:51 +0900

拡張ライブラリ coverage の method coverage に r61025 で追加した ISeq の範囲情報を追加しています。 Coverage.result の結果にもフィールドが追加されています。

mame: r61027 2017-12-05 17:58:57 +0900

r61025 で RubyVM::InstructionSequence.load メソッド定義のコメントアウトが外されていたので、再度コメントアウトしています。

mame: r61028 2017-12-05 18:45:03 +0900

r61025 で RubyVM::InstructionSequence.load や RubyVM::Instruction#to_a での範囲情報の load や dump で型が間違っていた(int -> long)のを修正しています。

hsbt: r61029 2017-12-05 20:08:00 +0900

標準添付ライブラリ rdoc のバージョンを 6.0.0 に更新しています。実質的な変更はなくて VERSION 定数と gemspec ファイルの date を更新しているだけです。