ruby-trunk-changes r50910 - r50922

今日は拡張ライブラリ socket の sendmsg_nonblock や recvmsg_nonblock でも :exception オプションをサポートする機能追加や recv で読み込みバッファを指定できるようにする機能追加などがありました。

normal: r50910 2015-06-16 04:38:49 +0900

拡張ライブラリ socket の BasicSocket#sendmsg_nonblock と BasicSocket#recvmsg_nonblock にオプション :exception を追加して exception: false を指定すると例外を発生させるかわりに :wait_readable や :wait_writable という Symbol を返すという挙動をするようにしています。 [ruby-core:69542] [Feature #11229]

svn: r50911 2015-06-16 04:39:56 +0900

version.h の日付更新。

normal: r50912 2015-06-16 05:02:43 +0900

拡張ライブラリ socket の BasicSocket#recv, BasicSocket#recv_nonblock で引数に明示的にバッファの String オブジェクトを渡せるようにしています。 バッファのオブジェクトを渡した場合別の Thread でその文字列オブジェクトを触るとまずいことになりますが、そこは抜かりなく(IO#read と同様に) locktmp を使って読み込み完了までその文字列オブジェクトを変更できないように処理してありますね。 [ruby-core:69543] [Feature #11242]

normal: r50913 2015-06-16 06:28:00 +0900

NEWS ファイルに r50910 および r50912 の拡張ライブラリ socket の機能追加について追記しています。

ko1: r50914 2015-06-16 17:38:55 +0900

ObjectSpace.dump のテストで dump 結果のチェックから uncollectible と marked の項目についてのチェックを削っています。これらのフラグは major GC 時に false になりえるとのこと。 Incremental GC の導入によるものですかね。[ruby-dev:48864] [Bug #10852]

ko1: r50915 2015-06-16 17:43:49 +0900

r50914 の ChangeLog エントリにチケット番号の参照を追記しています。 [ruby-dev:48864] [Bug #10852]

nobu: r50916 2015-06-16 18:26:26 +0900

r50910 の Socket#recvfrom_nonblock の機能追加時に追加したテストで接続済みの Socket の send で送信先のアドレスを渡していたのを削っています。 OS X でテストが失敗していたそうです。

nobu: r50917 2015-06-16 18:29:17 +0900

r50910 で追加されたテストで assert のかわりに assert_predicate を利用するようにしてエラー時によりわかりやすいメッセージになるようにしています。

nobu: r50918 2015-06-16 18:45:50 +0900

拡張ライブラリ date の ext/date/date_strptime.c の read_digits() で ALLOCA_N() を使っていたところを ALLOCV_N() を利用して、サイズが大きい時はスタック上でなく String オブジェクトで包んだバッファを確保するようにしてスタックを喰い潰さないようにしています。

nobu: r50919 2015-06-16 18:46:06 +0900

拡張ライブラリ date の ext/date/date_parse.c の s3e(), date_zone_to_diff(), parse_ddd_cb() などでも ALLOCA_N() のかわりに ALLOCV_N() を利用するように変更して、大きなサイズのメモリを確保した時にスタックオーバフローしないように対応しています。

akr: r50920 2015-06-16 19:22:16 +0900

拡張ライブラリ rbconfig/sizeof でチェックする型を追加しています。 _Bool や long double の他 double _Complex とか、x86_64 ABI 用の __float128, _Decimal32 なども。

kazu: r50921 2015-06-16 23:40:00 +0900

r50827 の ChangeLog エントリの typo 修正。

kazu: r50922 2015-06-16 23:40:20 +0900

拡張ライブラリ socket の UDPSocket#recvfrom_nonblock と UNIXSocket#recvfrom の rdoc 用コメントの call-seq の大括弧の対応が取れてなかったのを修正。