ruby-trunk-changes r62749 - r62764

今日は Integer(), Float(), Rational(), Complex() などのメソッドに exception というキーワード引数を追加して、例外発生を抑制できるようにする変更や String#split がブロックを受け付けるようにする機能追加などがありました。

nobu: r62749 2018-03-14 23:07:00 +0900

configre.ac で darwin の時に ORIG_LIB という変数に -lm も追加するようにしています。拡張ライブラリに渡すようにするためみたいです。

tenderlove: r62750 2018-03-15 08:27:10 +0900

iseq.c の TRACE_INSN_P() というマクロの定義を OPT_DIRECT_THREADED_CODE や OPT_CALL_THREADED_CODE など VM のメインループの実装方法によらず定義するようにしています。2つめの引数 insn_encoded は不要で常に decode された insn で判定できる(これはおそらく trace 命令の廃止と、全ての命令に trace 版を作るようにした時にこうなったんじゃないかと思います)ので、不要な引数は削除しています。

svn: r62751 2018-03-15 08:27:11 +0900

version.h の日付更新。

nobu: r62752 2018-03-15 09:12:17 +0900

キーワード引数に展開する Hash のキーが Symbol でない時の例外メッセージを改善するため Check_Type() でチェックしていたところを専用の kw_check_symbol() という関数を定義して使うようにしています。 [ruby-core:86113] [Feature #14603]

nobu: r62753 2018-03-15 10:05:00 +0900

win32/configure.bat で生成する setup.mk で Makefile の作成時のエラー時に処理を止めるようにしています。

ko1: r62754 2018-03-15 12:55:33 +0900

test/ruby/test_io.rb でテスト用に Signal.trap をセットするシグナルを SIGUSR1 から SIGUSR2 に変更しています。コミットログによると並列テスト時に稀に SIGUSR1 でテストが失敗することがあるそうなのでそれがここのせいなのか確認するために変更しているみたいです。

nobu: r62755 2018-03-15 15:29:04 +0900

Enumerator#inspect の実装に使われている append_method() という関数で、メソッドのキーワード引数をキーワード引数っぽく表示するようにしています。

nobu: r62756 2018-03-15 16:15:26 +0900

rb_cvar_set() と rb_cvar_get() から警告出力する部分を cvar_overtaken() という関数に切り出すリファクタリング

mrkn: r62757 2018-03-15 16:19:43 +0900

Kernel#Integer() にキーワード引数 exception というのを追加して、これが false だったら to_i と同様に変換に失敗した時に例外を発生させずに nil を返すようにしています。へー、こんな提案があったのか。 [ruby-core:77171] [Feature #12732]

mrkn: r62758 2018-03-15 16:19:45 +0900

r62758 と同様に Kernel#Float() にもキーワード引数 exception を追加して、false を指定したら変換失敗した時に例外を発生させるかわりに nil を返すようにしています。 [ruby-core:77171] [Feature #12732]

mrkn: r62759 2018-03-15 16:19:46 +0900

r62759 と同様に Kernel#Rational() でもキーワード引数 exception を追加して、false が指定されたら変換に失敗した時に例外を発生させるかわりに nil を返すようにしています。 [ruby-core:77171] [Feature #12732]

mrkn: r62760 2018-03-15 16:19:48 +0900

r62759 と同様に Kernel#Complex() でもキーワード引数 exception を追加して、false が指定されたら変換に失敗した時に例外を発生させるかわりに nil を返すようにしています。 [ruby-core:77171] [Feature #12732]

nobu: r62762 2018-03-15 18:58:50 +0900

Array#slice! のテストがなぜか test/ruby/test_string.rb にあったので test/ruby/test_array.rb に移動しています。

nobu: r62763 2018-03-15 20:08:04 +0900

String#split にブロックを受け付けるようにして、分割した部分文字列を渡してブロックを呼び出すようにしています。ブロックを渡した時は戻り値は receiver の文字列のままになるようです。大きな文字列を分割した時に巨大な配列を作らずに逐次処理できるようにするためみたいです。 [ruby-core:36466] [Feature #4780]

mrkn: r62764 2018-03-15 21:01:08 +0900

r62757, r62758, r62759, r62760 の Integer(), Float(), Rational(), Complex() のキーワード引数 exception の追加について NEWS ファイルに追記しています。 [ruby-core:77171] [Feature #12732]