ruby-trunk-changes r54554 - r54564

今日は開発者会議効果か、多値の代入を条件部に書けるようにする文法の変更や、Integer#floor, #ceil, Float#floor, #ceil が省略可能な引数で操作する桁を指定できるようにする拡張、File.empty? の追加などの新機能が多くありました。

nobu: r54554 2016-04-13 11:41:24 +0900

numeric.c の flo_round() から丸め処理が不要な場合のチェックを float_invariant_round() という関数に切り出しています。末尾呼び出しによる最適化がききやすくしているそうです。ふーむ、そうなのかな。

svn: r54555 2016-04-13 11:41:25 +0900

version.h の日付更新。

ko1: r54556 2016-04-13 12:03:37 +0900

即値のオブジェクト(nil, true, false, Symbol, Fixnum, Float(の一部))は freeze されたオブジェクトなのでインスタンス変数は持てませんが、継承や Mix-in で追加したメソッドで参照することは可能なので、それができるということを確認するテストを追加しています。

nobu: r54557 2016-04-13 14:12:01 +0900

Bignum#size の実装関数を rb_big_size() から rb_big_size_m() に改名して、rb_big_size() は BIGSIZE() マクロの wrapper 関数として定義して、numeric.c からこれを呼び出して rb_int_round() で利用するようにしています。

nobu: r54558 2016-04-13 14:36:26 +0900

条件部に a, b = ary のような多値(っぽい)代入文を書くのはこれまで SyntaxError でしたが、許可されるようになりました。条件としては右辺値の値が評価されるようです。 [ruby-core:66944] [Feature #10617]

nobu: r54559 2016-04-13 14:47:49 +0900

File.empty? を File.zero? と同じ実装のメソッドとして追加しています。 [ruby-core:63269] [Feature #9969]

nobu: r54560 2016-04-13 15:14:12 +0900

r54559 の File.empty? メソッドの追加を NEWS ファイルに追記しています。 [ruby-core:63269] [Feature #9969]

nobu: r54561 2016-04-13 15:47:55 +0900

Integer#floor に引数を受け付けて、10進数で 10 **-arg の桁(引数が正の数なら結果は Float になる)で切り捨てするようにしています。 Float#round の仕様にあわせているんですね。 [ruby-core:74788] [Feature #12245]

nobu: r54562 2016-04-13 15:50:24 +0900

r54561 と同様に Integer#ceil も引数を受け付けて切り上げる桁を指定できるようにしています。 [ruby-core:74788] [Feature #12245]

nobu: r54563 2016-04-13 15:54:38 +0900

Float#floor も Integer と同様に省略可能な引数を受け付けて切り捨てする桁を指定できるようにしています。 [ruby-core:74788] [Feature #12245]

nobu: r54564 2016-04-13 15:56:36 +0900

Float#ceil も同様に省略可能引数で切り上げる桁を指定できるようにしています。 [ruby-core:74788] [Feature #12245]