ruby-trunk-changes r63192 - r63211

今日はなんといっても終端を省略した Range オブジェクトがサポートされるようになり、そのためのリテラル (a..) も追加されています。

mame: r63192 2018-04-20 00:18:50 +0900

Range オブジェクトに終端を省略して無限に続く列のようなオブジェクトを作ることができるようにしています。数列に限らず succ メソッドでインクリメントできるものなら文字列でもいいようです。さらに Range リテラルでも (0..) のように終端を省略した記法を許すようにしています。こいつはでかい変更ですね。この文法衝突しないのか……。 [ruby-core:78061] [Feature #12912]

svn: r63193 2018-04-20 00:18:51 +0900

version.h の日付更新。

mame: r63194 2018-04-20 00:18:53 +0900

Range#min, Range#max, Range#include?, Range#cover? や Range#=== などのメソッドで終端が nil の Range オブジェクトに対応するようにしています。 max は nil を返すんですね。 [ruby-core:78061] [Feature #12912]

mame: r63195 2018-04-20 00:18:57 +0900

Range#bsearch も終端がない Range オブジェクトに対応するようにしています。 終端がないのにどうやって二分探索するの!? と思ったら終端がない時は先頭から最初は 1だけずらしたところを pivot にして、探索範囲が大きいほうだったらずらす量を2倍に増やしていくようです。なるほどなー。 [ruby-core:78061] [Feature #12912]

mame: r63196 2018-04-20 00:19:00 +0900

range.c でメソッド名の ID を static 変数から CONST_ID() を使って確保するように変更しています。

mame: r63197 2018-04-20 00:23:34 +0900

r63192 の終端のない Range オブジェクトとそのリテラルの追加について NEWS ファイルに追記しています。 [ruby-core:78061] [Feature #12912]

k0kubun: r63198 2018-04-20 01:19:48 +0900

rb_str_upto_endless_each() の第2引数の関数ポインタの方を正確に宣言するようにしています。 mswin でビルドエラーになったようです。

k0kubun: r63199 2018-04-20 01:57:59 +0900

mjit_compile.c の get_iseq_if_available() を has_valid_method_type() と改名して、条件を一部呼び元の MJIT で生成するコードのほうに吊り上げるリファクタリングをしています。

kou: r63200 2018-04-20 05:45:16 +0900

標準添付ライブラリ rexml のテストで使っている XML をよみやすく改行やインデントを整形しています。

kou: r63201 2018-04-20 05:48:28 +0900

標準添付ライブラリ rexml のテストで配列の各要素について assertion でチェックしていたのを、エラー時にわかりやすいように全体で比較するようにしています。

kou: r63202 2018-04-20 05:49:53 +0900

標準添付ライブラリ rexml のテストで無理にループで書いてたチェックをループ展開しています。ruby の for 文久しぶりにみた。

kou: r63203 2018-04-20 05:51:07 +0900

標準添付ライブラリ rexml のテストで res と res.sort を比較するみたいなことをしてましたが、ここの結果は上にある XML で決まってるので固定の値と比較するようにしています。

kou: r63204 2018-04-20 06:34:40 +0900

標準添付ライブラリ rexml の XPath の解釈で先頭の空白文字を削ってしまっていた不具合を修正しています。

nobu: r63205 2018-04-20 08:35:39 +0900

拡張ライブラリ fiddle の Fiddle::Importer が Windows 環境で定数の未定義でエラーになっていたのを修正しています。定数アクセスの NameError を後置 rescue で捕捉して別の定数に fallback してたんですが、この書きかた動きそうだけどだめだったのか。 [ruby-core:86536] [Bug #14686]
[追記]--debug オプションつきで実行すると例外が発生すると(rescue されても発生しただけで)標準エラー出力にメッセージが出るため、それでテストがエラーになることがあったそうです。[/追記]

nobu: r63206 2018-04-20 08:46:55 +0900

r63205 で追加したテストで子プロセスの rubyコマンドラインオプションに --disable=gems を追加しています。 警告除去のためとのこと。 [ruby-core:86536] [Bug #14686]

nobu: r63207 2018-04-20 09:10:46 +0900

r63192 の終端なし Range の導入の変更で range_step() の Fixnum から変換した整数同士の加算はオーバーフローしないため逆に Fixnum に戻した時に負の数になる数値になることがあったのでチェックを修正しています。 [ruby-core:78061] [Feature #12912]

nobu: r63208 2018-04-20 09:23:01 +0900

同じく r63192 の終端なし Range の対応の Bignum の加算を rb_funcallv() でメソッド呼び出ししてたところを rb_big_plus() を直接呼ぶようにして、step を考慮するようにしています。 [ruby-core:78061] [Feature #12912]

nobu: r63209 2018-04-20 09:25:30 +0900

vm_core.h のインデント修正のみ。

normal: r63210 2018-04-20 12:22:26 +0900

複数 Thread を作った状態で fork した時に autoload 用のロック機構で解放済みの領域を触ってしまわないように修正しています。multi thread + fork はまだまだなんかありそうですねー。 [ruby-core:86410] [Bug #14634]

hsbt: r63211 2018-04-20 16:10:53 +0900

gems/bundled_gems のバージョンを did_you_mean を 1.2.1、rake を 12.3.1 に更新しています。