ruby-trunk-changes r56768 - r56780

今日は complex.c での最適化やリファクタリング、拡張ライブラリ psych の更新などがありました。

mrkn: r56768 2016-11-14 01:21:54 +0900

complex.c で k_float_p(), k_exact_p(), k_complex_p() といった inline 関数を削除してタイプ判定のマクロで代替するようにしています。また f_addsub() という関数を削除して呼び元に展開しています。

svn: r56769 2016-11-14 01:21:55 +0900

version.h の日付更新。

mrkn: r56770 2016-11-14 01:22:08 +0900

complex.c の k_rational_p() という関数を削除して nucomp_expt() で引数が Rational の時のチェックに RB_TYPE_P() を使うようにしています。また denominator が 1 かどうかのチェックに f_one_p() を使っていたのを RRATIONAL()->den を直接比較するようにして最適化しています。

mrkn: r56771 2016-11-14 01:22:26 +0900

r56770 で不要になった complex.c の f_one_p() の定義を削除しています。

mrkn: r56772 2016-11-14 01:43:43 +0900

complex.c の f_zero_p() の戻り値を VALUE から int に変更して rb_complex_mul() での !! で 0 or 1 に変換するのを省けるようにしています。

hsbt: r56773 2016-11-14 09:40:04 +0900

拡張ライブラリ psych の 2.2.0 をマージしています。 bundle している libyaml の 0.1.7 への更新などがありました。

svn: r56774 2016-11-14 09:40:06 +0900

r56773 の行末の空白除去。

nobu: r56775 2016-11-14 13:02:45 +0900

rational.c の f_kind_of_p() で rb_obj_is_kind_of() の結果を RTEST() で真偽値にしていたのを int へのキャストにしています。うーん、まあ Qtrue か Qfalse だからこれでいいんでしょうけど、RTEST() で判定するほうが意味的にはいいような。

nobu: r56776 2016-11-14 13:06:15 +0900

complex.c の f_negative_p()、f_kind_of_p()、k_numeric_p()、f_signbit()、f_tpositive_p() などの関数で戻り値を VALUE から int に変更してメソッド呼び出ししていたり f_boolcast() を使っていたところを省略するようにしています。

nobu: r56777 2016-11-14 14:17:55 +0900

r56747 で fstring の singleton_method を禁止したため今度は fstring の文字列に対して instance_eval が呼べなくなっていたので、singleton_class_for_eval() で fstring に対応して Qnil を返し rb_singleton_class() を呼ばないようにしています。おー singleton class についていじると instance_eval 用の class の取得に影響があるんですね。 [ruby-core:78116] [Bug #12930]

nobu: r56778 2016-11-14 16:53:31 +0900

拡張ライブラリ socket の Addrinfo#connect_from, #connect_to, #connect および Socket.tcp で :timeout や :connect_timeout などのオプション引数をキーワード引数にするようにしています。

nobu: r56779 2016-11-14 16:53:32 +0900

標準添付ライブラリ net/protocol で Net::BufferedIO#initialize にも :read_timeout, :continue_timeout, :debug_output というキーワード引数を追加して Net::HTTP, Net::FTP, Net::POP, Net::SMTP などで IO 用のクラスのインスタンス化の時に使うようにしています。

nobu: r56780 2016-11-14 16:59:50 +0900

標準添付ライブラリ net/ftp の Net::FTP#open_socket でも r56779 で追加した read_timeout キーワード引数を使うようにしています。