ruby-trunk-changes r66553 - r66577

今日はリリースパッケージを作る時の tar アーカイブのファイルタイプ指定がおかしかった不具合修正や、VM の実装のリファクタリング、予定されてた 2.7 から警告の出しかたを変更するメソッドの対応などがありました。

nobu: r66553 2018-12-25 22:13:42 +0900

r65150 で tool/make-snapshot で tar パッケージを作る時に rubygems の Gem::Package::TarWriter というモジュールを使うようになりましたが、ファイル種類(ファイル/ディレクトリ)を指定する typeflag 渡すようにしています。一部の環境で展開に失敗するようになってたようです。 [ruby-core:90701] [Bug #15461]

nobu: r66554 2018-12-25 22:33:51 +0900

r66553 の続き? Gem::Package::TarWriter のテストで環境変数 SOURCE_DATE_EPOCH というのを変更するテストがあって、後始末で戻してなかったので戻すようにしています。

matz: r66555 2018-12-25 22:45:17 +0900

恒例の matz のコミットです。version.h の RUBY_VERSION と RUBY_API_VERSION_MINOR が更新され 2.7.0 の開発が始まりました。

k0kubun: r66556 2018-12-25 22:57:28 +0900

標準添付ライブラリ erb で ERB.new の deprecated にしたい引数の指定があった時の警告を $VERBOSE が真の時のみ出していたのを、常に出すように変更しています。2.7 ではすぐ消す予定だったけど一旦常に警告を出す状態にすることにしたとのこと。

kazu: r66557 2018-12-26 00:58:49 +0900

NEWS ファイルをクリアして空にしています。 doc/NEWS-2.6.0 に移動するつもりだったみたいですが、新規ファイルは追加もれしているようです。

svn: r66558 2018-12-26 00:58:51 +0900

version.h の日付更新。

kazu: r66559 2018-12-26 01:09:39 +0900

r66557 で追加されてなかった doc/NEWS-2.6.0 を追加。

svn: r66560 2018-12-26 01:09:40 +0900

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

kazu: r66561 2018-12-26 01:11:18 +0900

doc/NEWS-2.5.0 と doc/NEWS-2.6.0 の空のセクション C API updates の見出しを削除。

shyouhei: r66564 2018-12-26 09:58:26 +0900

VM のコード生成のテンプレートに tool/ruby_vm/views/_sp_inc_helpers.erb というのを追加して、insns.def の sp_inc という attribute の値を計算するための関数 sp_inc_of_sendish() と sp_inc_of_invokeblock() というのを追加しています。

shyouhei: r66565 2018-12-26 09:59:37 +0900

insns.def で主のメソッド呼び出しに使われる CALL_METHOD() というマクロや MJIT がキャンセルされた場合の後処理マクロ EXEC_EC_CFP() を廃止して、ブロック起動もまとめて vm_sendish() という関数を導入してこれを呼ぶようにしています。コミットログによると VM 命令実装部分のコードサイズを小さくするのが目的で、強制インライン化はしていないので速度面では悪化する可能性がありそうですが、ベンチマーク結果ではさほど悪くなってない、というか速くなってる? キャッシュが効きやすくなったとかですかね。 https://github.com/ruby/ruby/pull/2056

svn: r66566 2018-12-26 09:59:40 +0900

r66565 のインデントのタブを空白に展開。

normal: r66567 2018-12-26 13:04:01 +0900

r66534 で追加された doc/extension.ja.rdoc の rb_gc_register_mark_object() の引数の型を修正。ja のほうだけ間違ってた。

mame: r66568 2018-12-26 14:31:22 +0900

Kerne#system や IO.popenのテストで uid: オプションの機能のテスト時に Errno::EACCES のエラーも捕捉して無視するようにしています。root ユーザーで実行した時に EACCES が発生し得るみたいです。

mame: r66569 2018-12-26 15:01:18 +0900

rdoc のテストでも root ユーザーで実行すると失敗するものを skip するようにしています。

mame: r66570 2018-12-26 16:02:31 +0900

rubyspec の Process.setpriority のテストで Docker コンテナ内で実行すると権限が絞られてて nice 値を変更できない場合があるので Errno::EACCES を無視するようにしています。また nice 値を増減させるので、元から nice 値が上限下限だったら実行できないので、その時も定義しないようにしています。
が、この rescue は it のブロックの中にないとダメじゃないかな…と思いきや it の前にチェックのために Process.setpriority を呼んでるのでそこで例外が発生して it の定義自体を省略させるってことか。そういえば確か rspec って it のブロック内でチェックが1つもないとエラーになるんですよね。

mame: r66571 2018-12-26 16:04:31 +0900

rubyspec で Socket#bind のテストを root ユーザーで実行すると Errno::EACCES の発生を期待していたところで発生しなくて失敗するので、as_user というヘルパーメソッドを使って root では実行しないように? しています。

shyouhei: r66572 2018-12-26 16:23:35 +0900

VMソースコード生成用のテンプレート tool/ruby_vm/views/_leaf_helpers.erb および tool/ruby_vm/views/_sp_inc_helpers.erb に #line 指示子でテンプレートの行数をセットするようにしています。

naruse: r66573 2018-12-26 17:01:51 +0900

r66551 で追加したツール tool/format-release のヘッダの date フィールドのところ typo していたのを修正。

mrkn: r66574 2018-12-26 17:17:30 +0900

拡張ライブラリ bigdecimal を 1.4.2 に更新しています。 extconf.rb で "rake -rdevkit compile" ってコマンドでビルドされる時には build_dir を RUBY_VERSION ごとの場所にするようにしています。 devkit というのはどうも Windows 環境向けのコンパイル環境みたいなもののようです(適当に検索しただけなので勘違いかも)。 https://github.com/ruby/bigdecimal/compare/v1.4.1..v1.4.2

mame: r66575 2018-12-26 17:52:19 +0900

String#bytes, #lines, #chars, #codepoints, #grapheme_clusters などのメソッドでブロックが渡された時の警告を削除しています。 おや、なんでだろう。どうやら https://bugs.ruby-lang.org/issues/6670#change-75907 ここで開発者会議で deprecated 化を取り下げる決断がされたみたいですね。この議論はよく終えてませんが(チケットの元々の要望とはちょっと違う話っぽい?)。 [ruby-core:90728] [Feature #6670]

mame: r66576 2018-12-26 18:04:12 +0900

2.6 で deprecated 警告出力を追加した Object#=~ ですが 2.7 以降は -w つきでなくても($VERBOSE が nil でも)警告メッセージが出るように警告の強さを上げています。

kazu: r66577 2018-12-26 18:14:28 +0900

tool/ruby_vm/views/_sp_inc_helpers.erb のコメントの typo 修正。