ruby-trunk-changes r44729 - r44750

今日は拡張ライブラリ fiddle の不具合修正、openssl の read_nonblock にオプションが効くようにする修正、新しめの Linux で IO.copy_stream にソケット以外の出力先にも sendfile(2) を利用するようにする変更などがありました。

normal: r44729 2014-01-29 03:42:39 +0900

doc/contributing.rdoc に GitHub にアカウントがないと contribute できない的な感じで書かれていたので、別のところにホスティングされた git リポジトリからだって OK だよと追記されています。
normalperson こと Eric Wong さんの初コミットです。 Welcome!

svn: r44730 2014-01-29 03:42:43 +0900

version.h の日付更新。

tenderlove: r44731 2014-01-29 03:53:23 +0900

拡張ライブラリ fiddle の Fiddle::Closure で mprotect(2) の第2引数のサイズに誤って対象のメモリ領域のサイズではなくてポインタのサイズを渡してしまっていたのを修正しています。 [ruby-core:57599] [Bug #8978]

tenderlove: r44732 2014-01-29 04:31:48 +0900

拡張ライブラリ openssl の OpenSSL::SSL::SSLSocket で read_nonblock が呼ばれた時は wrap している IO の read_nonblock メソッドを呼ぶ時にはオプション引数も引き渡すようにしています。

nagachika: r44733 2014-01-29 09:25:01 +0900

r44726 の ChangeLog エントリが重複していたので 1つ削除しました。

nobu: r44734 2014-01-29 11:04:16 +0900

ext/socket/socket.c に r44728 で追加された SOCK_COEXEC が定義されている時だけ利用されるラベルを、警告除去のため #ifdef SOCK_CLOEXEC ... #endif で囲んでいます。

normal: r44747 2014-01-29 18:13:08 +0900

IO.copy_stream で sendfile(2) を利用する実装は送信先が socket の時だけ有効なようにチェックされていたのですが、新しい Linux では送信先の file descriptor が socket でなくても使えるようになっていて、EINVAL や ENOSYS などで失敗した時は別の実装に fallback するので、チェックを削っています。 [ruby-core:59856] [Feature #9427] ただこの次で Linux 以外のプラットフォームではチェックを復活させています。

nobu: r44750 2014-01-29 20:08:16 +0900

r44747 の IO.copy_streadm に sendfile(2) を使う時に書き込み先が socket かどうかのチェックを削ったのは Linux でのみ有効な可能性があるので他のプラットフォームではチェックを残すようにしています。 [ruby-core:59856] [Feature #9427]