ruby-trunk-changes r51305 - r51319

今日は Linux で IO.copy_stream に poll(2) を使うようにする最適化や、VC6 でビルドできるようにする修正などがありました。

normal: r51305 2015-07-21 05:33:50 +0900

IO.copy_stream で IO#nonblock= で nonblock に指定した IO オブジェクトから読み書きする時に Linux では select(2) のかわりに poll(2) を使うようにしてたくさんファイルを開いていて fd が大きな数値になっている時の効率化を図っています。 [ruby-core:70051] [Feature #11377]

svn: r51306 2015-07-21 05:35:42 +0900

version.h の日付更新。

nobu: r51307 2015-07-21 13:28:03 +0900

test/ruby/test_process.rb の IO.popen についてのテストメソッドを分割しています。

nobu: r51308 2015-07-21 13:36:57 +0900

標準添付ライブラリ optparse の OptionParser#complete の rdoc 用コメントでの typo 修正。 https://github.com/ruby/ruby/pull/973

normal: r51309 2015-07-21 16:09:36 +0900

load.c の ruby_dln_librefs というグローバル変数を static 変数にしています。

normal: r51310 2015-07-21 17:17:48 +0900

r51288 で Socket の BasicSocket#sendmsg_nonblock に使うバッファサイズを OpenBSD の制限にあわせて小さく(63 に)していましたが、実はそんなに小さくなかったということがわかったそうで([ruby-core:70058]) 4096 まで増やしています。 [ruby-core:70016] [Bug #11364]

ko1: r51311 2015-07-21 19:47:45 +0900

iseq_add_mark_object(), iseq_add_mark_object_compile_time(), rb_iseq_add_mark_object() などの関数の引数の rb_iseq_t * に const 修飾子を付けています。

nobu: r51312 2015-07-21 19:51:14 +0900

古い VC でのビルエドエラーを修正するため include/ruby/win32.h や socket で _MSC_VER をチェックして 1200 以前のバージョンでは #include の前に #include を追加するようにしています。

nobu: r51313 2015-07-21 19:51:40 +0900

VC6 でのビルドの修正のため include/ruby/missing.h に M_PI と M_PI_2 の代替定義を追加するようにして、complex.c では #include の後に "internal.h" を #include するようにしています。

nobu: r51314 2015-07-21 19:51:56 +0900

VC6 でのビルドのために win32/win32.c で rb_w32_wreadlink() で利用しているマクロ FILE_DEVICE_FILE_SYSTEM, FSCTL_GET_REPARSE_POINT, IO_REPARSE_TAG_SYMLINK などの定数が未定義だったら独自に定義するようにしています。

nobu: r51315 2015-07-21 19:52:09 +0900

これも VC6 でのビルドのための修正で cont.c に CreateFiberEx() が未定義の場合の代替マクロ定義(CreateFiber() を利用する)を追加しています。

nobu: r51316 2015-07-21 19:52:19 +0900

拡張ライブラリ io/console の Windows 用の key code 取得の IO#pressed? で利用する key code テーブルを生成する時に未定義のコードは -1 を入れておくようにして、未定義のコードは例外を発生させるようにしています。これも VC6 対応の一環でしょうか。

nobu: r51317 2015-07-21 20:29:12 +0900

win32/Makefile.sub での config.h の生成部分で UNREACHABLE マクロの定義を出力するようにしています。 __assume(0) という組み込み関数を利用するようにしています。

hsbt: r51318 2015-07-21 20:32:38 +0900

Range#hash のテストを追加しています。 https://github.com/ruby/ruby/pull/969

nobu: r51319 2015-07-21 21:21:35 +0900

set_unblock_function() や do_select()、rb_wait_for_single_fd() で goto を使って関数の先頭に戻ることでループを実現していたのを do { } while ループを使って書きなおしています。 またループの判定の条件を関数マクロや関数として切り出すリファクタリング