ruby-trunk-changes r62588 - r62594

今日はツール類での ERB.new の引数の呼び分けのためのチェック方法の変更などがありました。

nobu: r62588 2018-02-26 23:30:39 +0900

object.c の数値の変換系の処理で rb_convert_type() を使っていたところを rb_convert_type_with_id() を使うようにして、変換用メソッドの指定を文字列でなく ID で行うように最適化しています。

nobu: r62589 2018-02-26 23:39:16 +0900

r62588 の続き。 rb_check_to_float() でも rb_check_convert_type() のかわりに rb_check_convert_type_with_id() を使うようにしています。

k0kubun: r62590 2018-02-26 23:42:39 +0900

tool/ruby_vm/helpers/dumper.rb でも ERB.new の引数を呼び分けるために RUBY_VERSION で分岐していたのを ERB.version でチェックするように修正しています。 https://github.com/ruby/ruby/pull/1826

nobu: r62591 2018-02-27 10:17:46 +0900

complex.c で "**" や "-@" を Init_Complex() で初期化時に rb_intern() していましたが id.h に組み込みのがあるのでそちらを参照するようにしています。

svn: r62592 2018-02-27 10:17:47 +0900

version.h の日付更新。

nobu: r62593 2018-02-27 17:15:27 +0900

defs/id.def で生成する id.h/id.c に "to_f" の ID idTo_f を組み込みで生成するようにしています。なんと to_f なかったのかー。
そしてこの idTo_f を使って各所で rb_intern("to_f") されていたところを置き換えています。といっても意外とそんなに使ってる場所ないですね。

k0kubun: r62594 2018-02-27 20:12:23 +0900

ERB.new の引数を呼び分けるため tool などの BASERUBY で実行される可能性のあるスクリプト(とも限らないかも)で ERB.version でチェックしていたのを ERB#initialize の UnboundMethod を Object#instance_method で取り出して、Method#parameters でキーワード引数の存在をチェックする方法に変えています。なるほどこのほうが直接的ですね。