ruby-trunk-changes r62574 - r62585

今日は Kernel#Integer() で変換のため to_int を呼んだ時に戻り値が Integer でない時の扱いの修正(変更)や tool/make-snapshot の git 対応などがありました。

nobu: r62574 2018-02-25 22:17:35 +0900

r62573 の追加修正。 date_core.c と同じように date_parse.c と date_strptime.c のマクロ set_hash()、ref_hash()、del_hash() の引数も文字列リテラルのみ受け付けるようにしています。

eregon: r62575 2018-02-25 22:52:07 +0900

Enumerable#filter および Enumerable#filter! を Enumerable#select, #select! の別名として追加しています。 alias じゃなくて同じC関数で別の名前のメソッド定義を追加しています。同様に Array, Enumerator::Lazy, Hash, Set などにも同名のメソッドを追加しています。 https://github.com/ruby/ruby/pull/1824 [ruby-core:82285] [Feature #13784]

svn: r62576 2018-02-25 22:52:08 +0900

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

nobu: r62577 2018-02-26 15:00:08 +0900

tool/vcs.rb の VCS::GIT#export で clone したリポジトリの .git ファイルは削除していましたが、after_export というフックメソッド? で削除する処理があったので、ここでは削除しないようにしています。after_export は tool/make-snapshot で Makefile の作成あたりの後で呼ばれてますね。

nobu: r62578 2018-02-26 15:00:09 +0900

tool/make-snapshot で環境変数 GNUMAKEFLAGS から -j オプションの指定は消すようにしています。

nobu: r62579 2018-02-26 15:00:10 +0900

コミットログを読むかぎり tool/make-snapshot で ChangeLog の自動生成を git を使って export した時でも生成できるようにしているようです。 r62577 はこのために git リポジトリとしての機能を残しておくためだったみたいですね。ただこの差分(位置を移動しただけ)でどうして git を利用することになるのかはよくわからず。
[追記]親ディレクトリで実行してエラーになっていたために修正したとのことで、git を使うようにしたというより git でも実行できるようにしたということのようです。[/追記]

svn: r62580 2018-02-26 15:00:10 +0900

version.h の日付更新。

mrkn: r62581 2018-02-26 16:31:10 +0900

Kernel#Integer は内部で未知のオブジェクトに対しては to_int が定義されていればそれを呼びますが、その結果が整数かどうかは判定していなかったため、おかしな to_int (たとえば String を返す)を定義したオブジェクトを引数に渡すと Integer でないオブジェクトを返してしまっていたので、結果が Integer でなかった場合は無視して to_i の呼び出しに fallback するようにしています。 [ruby-core:85813] [Bug #14552]

mrkn: r62582 2018-02-26 16:57:15 +0900

rb_to_integer() (to_int の実装)、rb_check_to_integer(), Range.new の begin, end の値の扱いなどで rb_obj_is_kind_of() で継承関係も含めてチェックしていましたが Integer を継承したクラスはインスタンス化できないということで RB_INTEGER_TYPE_P() を使って直接 type をチェックするようにしています。

nobu: r62583 2018-02-26 16:57:16 +0900

tool/make-snapshot のヘルプメッセージに -unicode_version、-svn、-git、-help などのオプションの説明を追加しています。

naruse: r62584 2018-02-26 17:01:05 +0900

defined? の定数の判定の仕様を 2.5 でネストした参照でトップレベル変数がみえないようにした仕様に追随した変更 r62071 が 2.5 に backport されたので、rubyspec のテストのバージョンの guard を変更しています。 [ruby-core:85142] [Bug #14407]

nobu: r62585 2018-02-26 17:37:02 +0900

make mjit_config.h の生成のための shell コマンドで関数定義しているところで printf コマンドの使いかたで環境によってはエラーになるようなので書き換えています。