ruby-trunk-changes r48178 - r48188

今日は標準添付ライブラリ matrix.rb の機能追加、Kernel#load でのファイルパスのエンコーディング変換の不具合修正、メソッド定義の引数のデフォルト値の式でその引数自体を参照していたときの警告の追加などがありました。

normal: r48178 2014-10-29 03:39:45 +0900

install_sighandler() でシグナルハンドラ設定する時に rb_disable_interrupt() と rb_enable_interrupt() で割り込みから保護していたのですが、シグナルハンドラの設定は起動時に Init_signal() でまとめて実行するだけなのでこまめに割り込み保護する必要もないので Init_signal() で全体でまとめて割り込み制御するようにしています。起動時のシステムコール呼び出しを削減し、実行形式のサイズも少し小さくできるとのこと。 [ruby-core:59480] [Feature #9345]

svn: r48179 2014-10-29 03:40:03 +0900

version.h の日付更新。

hsbt: r48180 2014-10-29 10:00:23 +0900

gems/bundled_gems の test-unit を 3.0.3 に、minitest を 5.4.2 に更新しています。

marcandre: r48181 2014-10-29 11:42:56 +0900

標準添付ライブラリ matrix で Vector#dot と Vector#cross というメソッドをそれぞれ inner_product と cross_product の alias として追加しています。 [ruby-core:65571] [Feature #10352]

marcandre: r48182 2014-10-29 11:43:28 +0900

標準添付ライブラリ matrix に Matrix#adjucate という行列の余因子行列(随伴行列とも)を返すメソッドを追加しています。 NEWS ファイルにも追記されています。 [ruby-dev:48425] [Feature #10056]

marcandre: r48183 2014-10-29 11:43:52 +0900

標準添付ライブラリ matrix の Vector#cross_product を 3次の Vector だけでなく n-次の Vector について実行できるようにしています。このため引数の数は可変になっています。 [ruby-core:63860] [Feature #10074]

nobu: r48184 2014-10-29 11:48:25 +0900

古い Mac OS X でしばしば __builtin_setjmp() が原因で TAG_JUMP() が無限ループ状態に陥るという不具合が報告されてたのですが、configure で Mac OS X で古い gcc や clang では(OS X じゃなくてコンパイラのほうのバージョンだったんですね)、__builtin_setjmp() を利用しないようにしています。 [ruby-core:65174] [Bug #10272]

nobu: r48185 2014-10-29 14:44:20 +0900

test/ruby/test_require.rb のテストメソッド test_load2 を test_load_scope ともう少し descriptive な名前に変更して、エラー時のメッセージにML番号やチケット番号を追加しています。

nobu: r48186 2014-10-29 14:44:33 +0900

Kernel#load で読み込むファイル名のエンコーディングが、ファイルシステムエンコーディングに変換されていなかったため、非 ASCII 文字を含むファイルパスの時にエンコーディングが異なるとファイルが見付からないで LoadError になっていた不具合を修正しています。 [ruby-list:49994]

nobu: r48187 2014-10-29 20:41:03 +0900

parse.y で struct parser_params の未使用になっていたメンバ cur_mid を削除しています。 だいぶ前から使われていなかったみたいです。

nobu: r48188 2014-10-29 21:13:26 +0900

メソッドの省略可能引数のデフォルト値の式で引数自体を参照している時にこれを警告するようにしています。 チケットはデフォルト値では引数と同名のメソッドがあったらそっちを呼んで欲しいというようなものでしたが、この位置では引数が見えるのが仕様ということにしていて、しかし

def m(foo = foo)
end

のような定義では無意味なので警告するようにしています。[ruby-core:65990] [Bug #10314]
なお

def m(foo = 0, bar = foo)
  [foo, bar]
end

のように別の引数のデフォルト値で参照するのはOKなので警告は出さないようになっています。