ruby-trunk-changes r54621 - r54640

今日は Integer#truncate や Numeric#float, #ceil, #truncate なども省略可能な引数を受け付けるようにする変更や、Logger.new のキーワード引数追加、ISeq の最適化の不具合修正などがありました。

nobu: r54621 2016-04-18 11:38:37 +0900

Integer#to_i の rdoc 用コメントに #floor, #ceil を同様のメソッドとして上げていましたが、これらのメソッドは省略可能引数を受け付けるようになったので削っています。 [Feature #12245]

svn: r54622 2016-04-18 11:38:38 +0900

version.h の日付更新。

nobu: r54623 2016-04-18 12:40:03 +0900

Float#floor, #round, #ceil のテストに receiver が負の時のテストケースを追加しています。 [Feature #12245]

nobu: r54624 2016-04-18 12:55:33 +0900

Integer#truncate も省略可能な桁を指定する引数を受け付けて、その桁で丸めるようにしています。 truncate って floor と違うのかなと思いましたが、符号が負の時に 0 に近いほうに丸める(つまり負の時は切り上げになる)みたいですね。 [Feature #12245]

nobu: r54625 2016-04-18 12:56:33 +0900

Float#truncate も同じように省略可能な桁を指定する引数を受け付けるようにしています。 [Feature #12245]

nobu: r54626 2016-04-18 12:57:34 +0900

Numeric#floor, #ceil, #truncate も省略可能な引数を受け付けるようにしています。 [Feature #12245]

nobu: r54628 2016-04-18 16:07:03 +0900

VM 命令列(ISeq)の最適化で jump 後の命令が leave だったら jump 命令のかわりに直接 leave するという最適化で、命令の linked list の操作を新しいノードを作って REMOVE_ELEM() で入れ換えていたのを、元々あるノードの内容を書き変えるように変更しています。 先頭のノードを置換すると呼び元に反映されずに SEGV する可能性があり、safe navigation operator を使った時に実際起こっていたようです。 [ruby-core:74993] [Bug #11816]

nobu: r54629 2016-04-18 16:08:34 +0900

compile_snprintf() という関数は可変長引数を受け付けるのではなくて va_list を受け付けているので compile_vsprintf() という名前に変更しています。

nobu: r54630 2016-04-18 16:08:35 +0900

error.c の rb_compile_warning() に rb_encoding * の引数を追加して warn_vsprintf() という関数名に改名して warning_string() からも利用するようにリファクタリングしています。

sonots: r54638 2016-04-18 19:45:40 +0900

標準添付ライブラリ logger で Logger.new のキーワード引数に level, progname, formatter, datetime_format などを追加して生成時に同時に属性をセットできるようにしています。 [ruby-core:74614] [Bug #12224]

sonots: r54639 2016-04-19 00:07:31 +0900

r54638 の続きで、さらに Logger.new にキーワード引数 shift_period_suffix も追加して生成時に指定できるようにしています。 https://github.com/ruby/ruby/pull/10772

svn: r54640 2016-04-19 00:07:32 +0900

version.h の日付更新。