ruby-trunk-changes r47588 - r47594

今日は sprintf の "%f" に Rational を渡した時の処理の修正、拡張ライブラリ fiddle や pathname の不具合修正などがありました。

nobu: r47588 2014-09-15 08:13:36 +0900

r47214 で sprintf の "%f" 指示子に Rational の数値を渡した時に精度を落とさず文字列化できるようにしましたが、符号の有無のフラグなどと組みあわせた時の処理に抜けがあったので修正しています。 元のパッチをくれた matthewd さんは Rubinius の sprintf 実装にもパッチを投げてて "I have tangled with sprintf in a past life" とか書いててなんか職人芸チックですね。 https://github.com/ruby/ruby/pull/717

svn: r47589 2014-09-15 08:13:47 +0900

version.h の日付更新。

nobu: r47590 2014-09-15 09:43:14 +0900

拡張ライブラリ fiddle に同梱されている ext/fiddle/lib/fiddle/import.rb で定数名を typo していたのを修正しています。 https://github.com/ruby/ruby/pull/714 [Bug #10241]

nobu: r47591 2014-09-15 10:29:21 +0900

拡張ライブラリ pathname に同梱されている pathname.rb で大文字小文字を区別しない環境での比較のための Proc オブジェクトを生成しているところで String#casecmp の戻り値に zero? を呼んでいるのですが、casecmp は Encoding が異なる時に nil を返すことがあるので "== 0" での比較に修正しています。うーんなるほど…。 nil が返るのはつらい感じですが +1 も -1 もまして 0 も返せないしな…。 https://github.com/ruby/ruby/pull/713

normal: r47593 2014-09-15 16:17:37 +0900

benchmark/bm_app_aobench.rb のコメントの typo 修正。

normal: r47594 2014-09-15 16:31:38 +0900

構造体 struct io_internal_writev_struct、struct io_advise_struct、struct waitpid_arg で構造体メンバの順番をアライメントを意識して調整することで構造体サイズを小さくするようにしています。そろそろ利用頻度それほど高くない構造体にも手を出しはじめてる感じですね。