Hatena::ブログ(Diary)

PB memo このページをアンテナに追加 RSSフィード

2017-12-13 ruby-trunk-changes r61163 - r61211

[][]ruby-trunk-changes r61163 - r61211

今日もたくさんのコミットがありました。 Thread が rescue されない例外で終了した時にバックトレースなどを表示するようにする Thread.report_on_exception がデフォルトで true になる変更などがありました。

sorah: r61163 2017-12-12 22:07:06 +0900

NEWS ファイルの体裁や説明の修正。

svn: r61164 2017-12-12 22:07:08 +0900

r61163 の行末の空白除去。

yui-knk: r61165 2017-12-12 22:19:40 +0900

拡張ライブラリ coverage の method coverage で define_method で定義したメソッドの coverage についてのテストを追加しています。

k0kubun: r61166 2017-12-12 22:47:46 +0900

r61166 の Struct.new の :keyword_init オプション引数追加時のテストの定数名を変更しています。

k0kubun: r61167 2017-12-12 22:56:48 +0900

r61149 の irb の修正により IRB.setup で $0 が変更されないことを確認するテストを追加しています。

yui-knk: r61168 2017-12-12 23:10:23 +0900

do ... end のブロックの parse 時に end のノードに位置情報を設定しておくようにしています。

hsbt: r61169 2017-12-12 23:10:43 +0900

r61145 の Unicode のデータファイルダウンロードに使う URL を http から https にした変更を revert しています。 mswin の CI の環境で証明書に問題があってダウンロードできないそうです。

yui-knk: r61170 2017-12-12 23:21:20 +0900

r61170 と同じように { ... } のブロックの parse 時に "}" のノードに位置情報を設定しておくようにしています。

yui-knk: r61171 2017-12-12 23:47:34 +0900

ちょっと差分がどう効くのかはよくわからなかったのですが、メソッドチェインした呼び出しの NODE_CALL の位置情報を変更しているようです。

kazu: r61172 2017-12-13 00:01:02 +0900

r61143 で追加した Process.last_status の rdoc 用コメントに nil が戻る可能性があることを追記しています。

svn: r61173 2017-12-13 00:01:03 +0900

version.h の日付更新。

kazu: r61174 2017-12-13 00:01:04 +0900

標準添付ライブラリ cgiデバッグメッセージ出力に puts と sprintf を使っていたところを IO#printf を利用するようにリファクタリングしています。

kazu: r61175 2017-12-13 00:01:07 +0900

irb初期化時もロード失敗の警告メッセージに余計なコロンが含まれていたのを削っています。

kazu: r61176 2017-12-13 00:01:08 +0900

NEWS ファイルの File::Stat#atime, #mtime, #ctime がクラスメソッド記法で記述されていたので修正しています。

kazu: r61177 2017-12-13 00:01:10 +0900

NEWS ファイルの typo 修正。

kazu: r61178 2017-12-13 00:01:11 +0900

NEWS ファイルの Integer#pow や Enumerable#all?, #any?, #none?, #one? などのメソッドに追加された引数の記述がキーワード引数のようにコロンつきになってたのでコロンを削っています。

kazu: r61179 2017-12-13 00:01:13 +0900

Enumerable#one? の rdoc 用コメントに、空の配列の場合 false を返すサンプルを追記しています。

usa: r61180 2017-12-13 00:02:51 +0900

Windows 環境でFile.lstat で symbolic link (Windows の場合は Reparse Point という機構で実現されてたりする)の場合もサポートするように実装を追加しています。 [ruby-core:84209] [Feature #14169]

k0kubun: r61181 2017-12-13 00:03:45 +0900

Struct.new で生成したクラスの #inspect メソッドで r61137 で導入した keyword_init: true で名前による初期化を行うようになっていた時にはそのキーを表示するようにしています。 https://github.com/ruby/ruby/pull/1773

k0kubun: r61182 2017-12-13 00:12:05 +0900

Struct.new の rdoc 用コメントの言い回しの修正とスタイルの修正。

eregon: r61183 2017-12-13 03:43:42 +0900

Thread.report_on_exception をデフォルトで true にする変更を行なっています。おー 2.5 直前にこれ入れるのか。 [ruby-core:83979] [Feature #14143]

eregon: r61184 2017-12-13 03:43:55 +0900

drb のテストで main_loop の終了時に stop_service を呼ぶ Thread を新たに立てるのをやめて、stop_service から切り出した shutdown メソッドを直接呼ぶようにしています。停止時にリソース不足で Thread が起動できないことがあったのが Thread.report_on_exception = true でわかったみたいです。たまに thread leak してたっていうのこれかな。 [ruby-core:84213] [Bug #14171]

eregon: r61185 2017-12-13 03:44:07 +0900

標準添付ライブラリ rinda のテストで Thread#raise で割り込みをかけているのが Thread.report_on_exception = true でメッセージが出てしまうので、rescue 節を追加しています。 [ruby-core:83979] [Feature #14143]

eregon: r61186 2017-12-13 03:44:21 +0900

他にも IO#close の Thread 間の挙動のテストや拡張ライブラリ digest のテストでも Thread.report_on_exception = true の影響でメッセージが出ていたので、rescue したり対象の Thread で Thread#report_on_exception = false に設定して実行するようにしたりしています。 [ruby-core:83979] [Feature #14143]

eregon: r61187 2017-12-13 03:44:33 +0900

rinda のテストで例外が発生するため(assert_raise で例外が発生することをチェックしているブロック内で)不要な assert_nil の呼び出しがあったので削っています。

eregon: r61188 2017-12-13 03:44:49 +0900

他にも make test-all で Thread.report_on_exception = true の影響でメッセージが出ているところを assert_raise で明示的にチェックするようにしたり、Thread#report_on_exception = false を使うようにしたりして対応しています。 [ruby-core:83979] [Feature #14143]

eregon: r61189 2017-12-13 04:48:32 +0900

追加で Bignum のテストでも Thread.report_on_exception = true 対策で rescue を追加しています。

eregon: r61190 2017-12-13 05:09:36 +0900

Thread.handle_interrupt のテストで Thread#join の戻り値をチェックしていた assertion があったのを削っています。昔は join(0.2) のようにタイムアウトが渡されていたので nil がかえる可能性があったみたいですが今は引数なしになったのでチェックの必要がなくなったということみたいです。

eregon: r61191 2017-12-13 06:32:13 +0900

test/lib/leakchecker.rb にテストケース前後で Encoding.default_internal と Encoding.default_external が変化していないかのチェックを追加しています。

eregon: r61192 2017-12-13 06:51:53 +0900

test/lib/test/unit/assertions.rb の assert_raise_with_message で EnvUtil.with_default_internal を使って Encoding.default_interrnal を変更してブロック呼び出しするようにしていたのをやめています。この方法は複数の Thread で呼ばれるとちゃんと復旧できないので問題があったようです。

eregon: r61193 2017-12-13 07:37:40 +0900

r61192 の変更で EnvUtil.assert_raise_with_message の中で EnvUtil.with_default_external を使わなくしたので、一部呼び元で EnvUtil.with_default_external を付けるようにしています。

eregon: r61194 2017-12-13 08:41:34 +0900

r61192 と r61193 のテスト用ライブラリの変更を revert しています。もうちょっと別の方法で修正するため一旦 revert ということらしいです。

eregon: r61195 2017-12-13 08:41:50 +0900

r61192 と r61193 の対応を別の方法でやりなおし。 EnvUtil の特異メソッドとして EnvUtil.capture_global_values を追加して、全体の最初で $VERBOSE と Encoding.default_internal と Encoding.default_external の元の値を保存しておいて、復旧はこれを使うようにしています。これで EnvUtil.assert_raise_with_message で race condition を気にせず EnvUtil.with_default_external を使えるようにしています。

yui-knk: r61196 2017-12-13 08:48:50 +0900

空っぽのスクリプトを parse した時の NODE_BEGIN の範囲情報のカラムが 2つめのカラムになってたのを修正しています。

normal: r61197 2017-12-13 09:38:08 +0900

標準添付ライブラリ webrickWEBrick::HTTPServer に複数の Servlet を登録している時の Servlet の決定に使う正規表現で ^$ を使っていたのを \A \z を利用するように修正しています。URL のパスに % エンコーディングで改行を入れると間違ったマッチをする可能性があったようです。

yui-knk: r61198 2017-12-13 10:10:27 +0900

r61196 の NODE_BEGIN の範囲情報の変更を revert しています。 この場合の @0 の位置情報はセットされてなくて参照してはまずかったみたいです。

hsbt: r61199 2017-12-13 11:43:38 +0900

README.md に書かれてた GitHubリポジトリの clone 時の URLgit:// の scheme だったので https:// に修正しています。 https://github.com/ruby/ruby/pull/1772

hsbt: r61200 2017-12-13 14:24:01 +0900

標準添付ライブラリ csv の default gem としての gemspec ファイルのバージョンを 1.0.0 に更新しています。

hsbt: r61201 2017-12-13 14:52:47 +0900

拡張ライブラリ etc の default gem としての gemspec ファイルのバージョンを 1.0.0 に更新しています。

naruse: r61202 2017-12-13 17:38:43 +0900

r61054 の tool/vcs.rb のコマンドがみつからなかった時の処理の変更を revert しています。どうも snapshot の作成がエラーになってたみたいです。

eregon: r61203 2017-12-13 18:45:48 +0900

Thread.report_on_exception = true のデフォルト化の対応の続きで、シグナルハンドラと Thread#raise に Interrupt が渡された時の組み合わせのテストで、子プロセスで Thread.report_on_exception = false を使ってメッセージを抑制するようにしています。

nobu: r61204 2017-12-13 19:16:05 +0900

process.c のインデントの修正のみ。

nobu: r61205 2017-12-13 19:26:09 +0900

拡張ライブラリ ripper の Ripper::Lexter::State に allbits?, anybits?, nobits? メソッドを追加しています。 r61147 で追加した Integer の同名のメソッドを使っています。うーん確かこのクラスというか Struct は inspect での文字列化の時のためのなにかだったと思うのですが、Integer のように挙動するなにかだから Integer と同じメソッドを持つようにしているってことかな。それだと他にもいろいろ足りないような気はするけど | や & も定義してあるから、ビット演算はする可能性があるということかな。 [ruby-core:84211] [Feature #14170]

nobu: r61206 2017-12-13 19:40:54 +0900

r61094 の Process.maxgroups のテストが Process.groups が空配列を返した時にエラーになってたので、その場合はとりあえず [0] にしておくようにしています。 [ruby-core:84224] [Bug #14174]

nobu: r61207 2017-12-13 19:43:21 +0900

Env.fetch のテストで第2引数とブロック両方渡した時の警告を抑制するため EnvUtil.suppress_warning を使うようにしています。

sorah: r61208 2017-12-13 19:55:41 +0900

r61177 で修正されてた NEWS ファイルの Integer#step の記述の typo ですが、これは typo じゃなくて過去形だったみたいなので戻しています。

eregon: r61209 2017-12-13 20:13:55 +0900

Travis CI で world writable dir の警告が大量に出るそうで、その対策で .travis.yml に group: deprecated-2017Q4 というのを追加して利用する VM イメージを変更しているようです。 https://blog.travis-ci.com/2017-12-12-new-trusty-images-q4-launch

eregon: r61210 2017-12-13 20:22:55 +0900

r61209 の続きで .travis.yml の sudo: false を sudo: required にする変更も行なっています。

nobu: r61211 2017-12-13 21:06:11 +0900

r61202 で revert された r61054 の動機であった VCS#get_revisions でのコマンドがみつからなくて Errno::ENOENT が発生した時に VCS::NotFoundError を発生させるようにする変更だけ入れています。

2017-12-12 ruby-trunk-changes r61116 - r61162

[][]ruby-trunk-changes r61116 - r61162

今日はとてもたくさん新機能の追加がありました。 TracePoint の off 時に命令の再書き換えをしないようにして on/off を繰り返しても遅くならないようにする変更(そのかわり一度 on にするとずっと trace の分岐ありになる)、Exception#full_message、FrozenError 例外クラス、Process.last_status, Struct.new の :keyword_init オプションKernel#warn の uplevel キーワード引数、Method#=== メソッドなどの新規追加がありました。

2.5 のリリースが近いのでコミットラッシュになっているようですね。

naruse: r61116 2017-12-11 21:09:47 +0900

Time#utc_offset に対応する C の関数を rb_time_utc_offset() と改名して、include/ruby/intern.h に prototype 宣言を追加して外部から呼べる C API として公開するようにしています。

kou: r61117 2017-12-12 00:30:00 +0900

gems/bundled_gems の test-unit のバージョンを 3.2.6 -> 3.2.7 に更新しています。

svn: r61118 2017-12-12 00:30:01 +0900

version.h の日付更新。

usa: r61119 2017-12-12 01:06:41 +0900

include/ruby/win32.h で SIZEOF_STRUCT_STAT_ST_INO というマクロ定数を定義する前に #undef しておくようにしています。 MinGW でのビルド時の警告の修正。 [ruby-core:84148] [Bug #14165]

ko1: r61120 2017-12-12 01:07:21 +0900

tool/instruction.rb で VM 命令実行のソースコードを生成する時に、次の命令にジャンプする方法を START_OF_ORIGINAL_INSN() および DISPATCH_ORIGINAL_INSN() というマクロを利用するようにして、OPT_CALL_THREADED_CODE や OPT_DIRECT_THREADED_CODE などの方式の違いをマクロで吸収するようにしています。

usa: r61121 2017-12-12 02:31:43 +0900

Windows の ReFS 対応の再修正。 stati128_handle() で構造体のメンバーを参照しわすれていたのを修正しています。多分たまたま先頭のメンバーだったので問題にならなかったのかなぁと推測。[追記]実は先頭ではなかったそうですが、ino の一部は参照してたのでたまたまテストは通ってた(まあまあ一致してた)そうです。[/追記]

ko1: r61122 2017-12-12 04:17:25 +0900

r60763 で trace 命令を廃止して、TracePoint 有効化時に動的に命令を書き換えるようにした変更ですが、TracePoint の on/off を頻繁に繰り返すと遅くなるという問題があったため、一度 trace つきの命令に書き換えたら TracePoint を off にしても再度通常の命令に戻すのをやめて、trace フラグの分岐は残したままにするようにしています。 ruby_vm_event_enabled_flags というグローバル変数を導入して、どの event flag が on になったかを憶えておくようにしています。つまり一度 TracePoint を使うと、それ以降はずっと r60763 以前と同様にちょっと(trace flag のチェックぶん)よけいな処理が行なわれる状態に戻るということですね。

ko1: r61123 2017-12-12 05:30:37 +0900

r58402 で導入した二項演算子最適化命令の実行を vm_opt_binop_dispatch() という関数に括り出して共通化してバイナリのサイズの削減を目指した変更を revert して、再度各 vm_opt_{plus, minus, div, mod, lt, le, gt, ge}() などの関数内に if 文を展開するようにしています。理由として switch 文だと評価順序がコントロールできず、hotspot になる分岐を最初にチェックするようにしたりという細かい最適化ができないためとのことです。また le, gt, ge ではメソッド再定義時の不具合があったみたいで、それも修正しています。

yui-knk: r61124 2017-12-12 08:13:47 +0900

ブロックパラメーターに (a,b) のようにして配列を分解して受け取る記法の時の NODE_DVAR の範囲情報を修正しています。

yui-knk: r61125 2017-12-12 08:20:42 +0900

r61123 で追加しているテストのテストメソッドの名前が間違って重複していたのを修正しています。

yui-knk: r61126 2017-12-12 08:38:00 +0900

メソッド定義時のブロック引数(&b のようにブロックを Proc オブジェクトとして受け取る仮引数記法)を含む時の引数の NODE_ARRAY の位置情報を修正しています。

marcandre: r61127 2017-12-12 08:50:40 +0900

NEWS ファイルに標準添付ライブラリ matrix の Matrix.combine, Matrix#combine と Matrix#entrywise_product のメソッド追加について追記しています。

yui-knk: r61128 2017-12-12 09:12:43 +0900

メソッド呼び出しの引数キーワード引数を書いて最後に dangling comma があった時の NODE_ARRAY の範囲情報に最後のカンマは含めないようにしています。

mame: r61129 2017-12-12 09:20:58 +0900

r59874 で拡張ライブラリ coverage に experimental feature として入っていた branch coverage の機能を、環境変数 COVERAGE_EXPERIMENTAL_MODE の指定がなくても常に有効にするようにしています。 NEWS ファイルにも新機能として追記しています。 [Feature #13901]

yui-knk: r61130 2017-12-12 09:28:29 +0900

parse.y の match_op_gen() で =~ 演算子パースした時の NODE_MATCH の子ノードの NODE_ARRAY の範囲情報が正しくセットされていなかったのを右辺値のみ含めるように修正しています。

shyouhei: r61131 2017-12-12 09:46:34 +0900

freeze されたオブジェクトに破壊的変更を行おうとした時に発生する例外を RuntimeError からそれを継承した FrozenError という例外を発生させるようにしています。おお、例外クラスで判定できるようになるんですね。これは結構大きな変更ですね。

ko1: r61132 2017-12-12 09:56:24 +0900

r61131 の FrozenError の導入で rubyspec に一箇所変更が必要だったのを修正しています。

yui-knk: r61133 2017-12-12 10:13:56 +0900

代入の左辺値や for 文の変数の部分に (a,) のように配列を分解して受け取る記法をした時の NODE_ARRAY の範囲情報に dangling comma を含めないようにしています。

hsbt: r61134 2017-12-12 15:15:44 +0900

bundler の upstream から 1.16.1 のリリース用ブランチのコードをマージしています。内容はあまり読んでないけど ruby trunk でテストするための変更も多く入っているようです。 hsbt さんは bundler のコミット権も持ったそうなので 2.5 リリースにむけて bundler にも変更を入れることができてるみたいですね。

svn: r61135 2017-12-12 15:15:45 +0900

r61134 の行末の空白除去やファイル末尾の改行追加など。

svn: r61136 2017-12-12 15:15:45 +0900

r61134 の新規追加ファイルの svn property 設定。

k0kubun: r61137 2017-12-12 17:12:43 +0900

Struct.new に keyword_init というキーワード引数を追加して、これに真値が渡されたら Struct.new で生成した Class の new メソッドインスタンスを作る時に、引数に Hash を渡して名前で属性を指定できるようにしています。厳密にはキーワード引数ではなくてオプション引数(最後の Hash の引数)として処理しているようですね。 https://github.com/ruby/ruby/pull/1771 [ruby-core:72595] [Feature #11925]

k0kubun: r61138 2017-12-12 17:27:33 +0900

r61137 の Struct.new の :keyword_init オプションの追加について NEWS ファイルに追記しています。 [ruby-core:72595] [Feature #11925]

hsbt: r61139 2017-12-12 17:34:13 +0900

lib/.document と lib/webrick/.document を追加しています。 .gemspec ファイルを rdoc のドキュメント生成の対象にならないようにするためみたいです。

svn: r61140 2017-12-12 17:34:14 +0900

r61139 で新規追加されたファイルの svn property 設定。

duerst: r61141 2017-12-12 17:35:08 +0900

NEWS ファイルに Unicode の新しい emoji 対応について追記しています。

yui-knk: r61142 2017-12-12 17:54:34 +0900

ブロック渡しのメソッド呼び出しでブロックに { } の記法が使われてる時の NODE_ITER の範囲情報をメソッド呼び出し全体を含むように修正しています。 NODE_ITER はブロックを表す NODE_SCOPE とメソッド呼び出しの NODE を含む NODE なので両方の範囲を含むべきってことみたいですね。

mrkn: r61143 2017-12-12 18:00:17 +0900

Process.last_status というメソッドを $? の代替として追加しています。そういえば $? には同じ機能をもつメソッドがなかったのかー。 Process.last_status は同じ Thread で Process.waitpid や Kernel#system などで起動した子プロセスの終了ステータスの Process::Status オブジェクトを返します。 $? も実は見た目はグローバル変数だけど thread local なんですよね。 [ruby-core:83514] [Feature #14043]

mrkn: r61144 2017-12-12 18:00:19 +0900

NEWS ファイルに r61143 で追加した Process.last_status について追記しています。 [ruby-core:83514] [Feature #14043]

duerst: r61145 2017-12-12 18:00:20 +0900

tool/downloader.rb で Unicode のデータファイルをダウンロードする時の URL を http -> https に変更しています。 [ruby-core:83074] [Bug #13962]

hsbt: r61146 2017-12-12 18:01:34 +0900

fileutils の default gem としての gemspec のバージョンを 1.0.0 に更新しています。 [ruby-core:79455] [Feature #13197]

naruse: r61147 2017-12-12 18:12:14 +0900

Integer#allbits?, Integer#anybits?, Integer#nobits? というメソッド群を追加して、整数をビット列として解釈して引数に mask を渡してそれらの bit が全て立ってるか、一部立ってるか、全て立ってないかという判定をすることができるようにしています。 つまりは a.allbits?(b) で a & b == b ってことですね。 [ruby-core:77251] [Feature #12753]

hsbt: r61148 2017-12-12 19:57:58 +0900

r61146 の再修正。 fileutils の gemspec のバージョンを 1.0.1 に更新しています。また spec.metadata.source_code_uri の設定を追加しています。 [ruby-core:79455] [Feature #13197]

k0kubun: r61149 2017-12-12 20:25:16 +0900

irbIRB.parse_opts で ARGV を破壊的に変更してしまうのが Binding#irb で起動した時にも ARGV を変更してしまうようなので、引数ARGV を渡すようにして Binding#irb からの起動時には空の配列を明示的に渡すことで ARGV が変更されるのを防いでいるようです。将来的には IRB.parse_opts や IRB.setup を private にして引数を変更するつもりとのこと。 [ruby-core:84135] [Bug #14162]

svn: r61150 2017-12-12 20:25:17 +0900

r61149 で新規追加されたファイルの svn property 設定。

k0kubun: r61151 2017-12-12 20:32:37 +0900

r61149 の追加修正。 IRB.parse_opts や IRB.setup に追加したキーワード引数 argvデフォルト値の ARGV の参照を ::ARGV と明示的にトップレベルの名前空間から探索するように指定しています。

shyouhei: r61152 2017-12-12 20:33:26 +0900

NEWS ファイルに r61131 で追加した FrozenError 例外クラスについて追記しています。 [ruby-core:79581] [Feature #13224]

usa: r61153 2017-12-12 20:43:18 +0900

r61096 で追加した win32/win32.c の get_ino() の未使用の変数 err を削除しています。 [ruby-dev:50345]

sorah: r61154 2017-12-12 20:47:16 +0900

Exception#full_message というメソッドを追加して、例外オブジェクトが rescue されなかった時の backtrace つきのメッセージに相当する文字列を返すようにしています。 [ruby-core:83967] [Feature #14141]

shyouhei: r61155 2017-12-12 20:56:25 +0900

Kernel#warn に uplevel というキーワード引数を追加しています。そして標準添付ライブラリで warn を使っているところでも uplevel を指定するようにしています。これは警告メッセージのにファイルと行数の位置情報を表示するようにし、さらに位置情報に使うメソッドスタックフレームをいくつか巻き戻す指定もできるように整数を指定するためのものです。 [ruby-core:77802] [Feature #12882]

shyouhei: r61156 2017-12-12 21:10:20 +0900

r61155 の Kernel#warn の uplevel キーワード引数追加について NEWS ファイルに追記しています。 [ruby-core:77802] [Feature #12882]

sorah: r61157 2017-12-12 21:10:21 +0900

r61154 の Exception#full_message の追加に prototype 宣言の漏れがあったので修正しています。さらにrb_ec_error_write() の 引数の不要な volatile 修飾子を削除しています。

a_matsuda: r61158 2017-12-12 21:12:38 +0900

Method#=== メソッドを追加して、これで Method#call と同じ機能を使えるようにしています。つまり meth.call(a) と同じことが meth === a でできるってことですね。たぶん case 文の when 節で使うことを前提にしているのかなと。チケットをみると Proc#=== は既に同じように call の別名になっているのでそれに揃えるという意図だそうです。 [ruby-dev:50329] [Feature #14142]

a_matsuda: r61159 2017-12-12 21:12:39 +0900

r61158 で追加したテストで Method.instance_methods(false) をチェックしている assertion は削除しています。

a_matsuda: r61160 2017-12-12 21:12:40 +0900

NEWS ファイルに r61158 の Method#=== の追加について追記しています。 [ruby-dev:50329] [Feature #14142]

sorah: r61161 2017-12-12 21:17:38 +0900

r61154 で追加した Exception#full_message の実装で追加した rb_ec_error_write() は rb_execution_context_t は引数に受け取ってないので rb_error_write() に改名しています。

ko1: r61162 2017-12-12 21:40:41 +0900

rubyspec の net/http と net/ftp のテストで警告メッセージのチェックをしているところで全体の一致ではなくメッセージ部分だけマッチすればいいことにしています。 r61155 の変更で Kernel#warn で位置情報も含まれるようになったのでそれでエラーになったのを修正しています。

2017-12-11 ruby-trunk-changes r61096 - r61115

[][]ruby-trunk-changes r61096 - r61115

今日は Windows の ReFS 対応の続きや Enumerable#all? や #any? などのメソッド引数でマッチするオブジェクトを指定できるようにする機能追加、各種 default gem のバージョン更新などがありました。いよいよ 2.5 のリリースが近いですね。

usa: r61096 2017-12-11 02:26:58 +0900

Windows の ReFS のサポートの一環で ReFS では inode 相当の id が 128bit の数値を利用しているので、これをサポートするため GetFileInformationByHandleEx() を呼ぶ処理を get_ino() という関数に切り出して、rb_w32_{,u,l,ul}stat64ns() を rb_w32_{,u,l,ul}stati128() と改名しています。 [ruby-dev:50166] [Feature #13731]

svn: r61097 2017-12-11 02:26:59 +0900

version.h の日付更新。

marcandre: r61098 2017-12-11 07:36:28 +0900

Enumerable#any?, #all?, #none?, #one? などのメソッドで、各要素をブロックに渡して呼び出して判定するかわりに、1つの引数を受け取った時はその引数の === メソッドを呼び出してマッチすることでブロックの実行に代替することができるようにします。つまり Regexp#=== は正規表現のマッチを行うので ary.any?(/some regex/) のように書けるようになるってことですね。 [ruby-core:69675] [Feature #11286]

yui-knk: r61099 2017-12-11 08:27:58 +0900

式展開付きの文字列リテラルの中に含まれる文字列片をもつ NODE_ARRAY の範囲情報を変更しています。

usa: r61100 2017-12-11 08:28:09 +0900

NEWS ファイルに [Feature #13726] [Feature #13731] の ReFS 関連の対応とタイムスタンプの精度の変更について追記しています。

yui-knk: r61101 2017-12-11 08:44:22 +0900

A::B のような "::" による名前空間のネストつきの定数への代入で、さらに代入に演算子がついている(A::B ||= 1 のような)時の NODE_COLON2 の範囲情報を、定数の部分だけ含めるように修正しています。一瞬 "::" の NODE_COLON2 は "::" の部分だけでも良いんじゃ、という気もするけど、AST の木構造的に NODE_COLON2 の子に A や B の部分が含まれてるので、前後の定数部分も含んでるんですね。

yui-knk: r61102 2017-12-11 09:06:11 +0900

module M ... end のような文が生成する NODE_SCOPE の範囲情報を "module M" の部分は含めないように変更しています。

yui-knk: r61103 2017-12-11 09:28:27 +0900

parse.y の list_append_gen() の未使用になってた最後の引数 location を削除しています。

hsbt: r61104 2017-12-11 10:04:46 +0900

lib/bundler/templates/.document というファイルを追加して rdoc にこのディレクトリのファイル群を無視させるようにしています。 [ruby-core:84141] [Bug #14163]

svn: r61105 2017-12-11 10:04:47 +0900

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

yui-knk: r61106 2017-12-11 11:19:43 +0900

%W や %I のリテラル記法で生成される個々の NODE_DSTR の位置情報開始位置が %W/%I の全体の開始位置になっていたのを修正しています。

usa: r61107 2017-12-11 11:30:21 +0900

lib/mkmf.rb で Windows プラットフォームでは常に include/ruby/win32.h への依存関係を追加するようにしています。

usa: r61108 2017-12-11 11:30:42 +0900

lib/mkmf.rb に bccwin というプラットフォームについての分岐が残っていたのを削除しています。

hsbt: r61109 2017-12-11 12:27:47 +0900

標準添付ライブラリにして default gem の cmath の gemspec のバージョンを 1.0.0 に更新しています。

hsbt: r61110 2017-12-11 12:56:01 +0900

標準添付ライブラリにして default gem の date の gemspec のバージョンを 1.0.0 に更新しています。

mame: r61111 2017-12-11 13:46:57 +0900

標準添付ライブラリ pp.rb で Kernel#pp の再定義の警告除去のための alias のコードを削除しています。 インタプリタに埋め込まれる prelude.rb で既に警告除去のための alias pp pp が入っているため。

hsbt: r61112 2017-12-11 15:03:53 +0900

標準添付ライブラリにして default gem の fcntl の gemspec のバージョンを 1.0.0 に更新しています。

hsbt: r61113 2017-12-11 15:48:09 +0900

標準添付ライブラリにして default gem の sdbm の gemspec のバージョンを 1.0.0 に更新しています。

hsbt: r61114 2017-12-11 17:18:01 +0900

標準添付ライブラリにして default gem の scanf の gemspec のバージョンを 1.0.0 に更新しています。

hsbt: r61115 2017-12-11 17:37:49 +0900

標準添付ライブラリにして default gem の zlib の gemspec のバージョンを 1.0.0 に更新しています。 zlib も default gem になってたんでしたね。

2017-12-10 ruby-trunk-changes r61094 - r61095

[][]ruby-trunk-changes r61094 - r61095

今日は NODE の範囲情報の修正とテストの追加だけでした。

nobu: r61094 2017-12-09 20:58:25 +0900

Process.maxgroups のテストを戻り値が Integer であることの確認だけしてたのをもうちょっと真面目なテストにしています。Process.groups の数が maxgroups を超えてないとか Process.groups= で maxgroups を超えたサイズの配列をセットできないとかの確認をしています。

yui-knk: r61095 2017-12-09 22:13:58 +0900

x.attr= のような代入記号つきメソッドの呼び出しの NODE_ATTRASGN の子ノードの NODE_ARRAY の範囲情報を引数である右辺値のみ含めるようにする修正。

2017-12-09 ruby-trunk-changes r61083 - r61093

[][]ruby-trunk-changes r61083 - r61093

今日は webrick の race condition の不具合修正、Dir.chdir をブロック付きで呼び出した時に GVL 解放するのをやめる修正や NODE の範囲情報の修正などがありました。

normal: r61083 2017-12-09 03:51:56 +0900

標準添付ライブラリ webrickWEBrick::GenericServer#start でインスタンス変数 @status に :Running を代入するのを開始時の :StartCallback コールバックの呼び出し前にするように修正しています。 WEBrickサーバー停止時にうまく止まらなく可能性があったみたいです。1.9.2 でまだ再現するそうなのですが、それは他の multi thread 時の(おそらく修正済みの)不具合が絡んでるんじゃないかなぁとのこと。 [ruby-core:36787] [Bug #4841]

svn: r61084 2017-12-09 03:51:57 +0900

version.h の日付更新。

stomar: r61085 2017-12-09 07:42:19 +0900

拡張ライブラリ strscan の rdoc 用コメントの typo 修正。

stomar: r61086 2017-12-09 07:43:05 +0900

NEWS ファイルの syck 削除についての記述の文法修正。

stomar: r61087 2017-12-09 07:43:47 +0900

Integer#pow の rdoc 用コメントの英文の添削。

stomar: r61088 2017-12-09 07:51:42 +0900

doc/syntax/refinements.rdoc の typo 修正。

yui-knk: r61089 2017-12-09 12:03:34 +0900

class Xxx ... end のような class 文の NODE_SCOPE の範囲情報に、予約語 class の部分を含めないように修正しています。

yui-knk: r61090 2017-12-09 12:18:55 +0900

最適化命令つきの二項演算子の NODE_OPCALL の子ノードの NODE_ARRAY の範囲情報を、右辺値の範囲のみ含めるように修正しています。

normal: r61091 2017-12-09 12:46:39 +0900

r60583 で Dir.chdirchdir(2) 呼び出し中に GVL 解放するようにした変更の再修正で、ブロック渡しで呼ばれた時には GVL 解放はしないように修正されています。ブロックつき呼び出し時には multi thread での呼び出し時に復旧するディレクトリが混乱しないように chdir_blocking や chdir_thread といった変数chdir 要求中の thread 数などを管理していて、これの保護は GVL に依っているので、GVL 解放するとまずかったみたいです。

yui-knk: r61092 2017-12-09 12:52:59 +0900

class << ... end による特異クラス定義の文での NODE_SCOPE の範囲情報を本体部分と end だけ含むように修正しています。

yui-knk: r61093 2017-12-09 18:44:03 +0900

rescue 節の NODE_BLOCK の範囲情報を rescue と例外クラスの列挙部分は含めないように修正しています。