ruby-trunk-changes r64449 - r64469

今日は主に revert されてた rubyspec の socket のテストの復活と一部プラットフォーム対応などがありました。

normal: r64449 2018-08-19 03:29:28 +0900

r64444 の再修正。sleep_forever() および sleep_timespec() で RUBY_VM_CHECK_INTS_BLOCKING() の後に th->status を変更するようにしています。 r64448 で言ってた semantic の修正というのがこれかな? [ruby-core:88510] [Bug #15002]

svn: r64450 2018-08-19 03:29:29 +0900

version.h の日付更新。

normal: r64451 2018-08-19 04:03:44 +0900

と思ったら r64449 が revert されています。また別の CI の失敗が出てしまったとのことで。

eregon: r64452 2018-08-19 04:35:02 +0900

r64269 で削除されてた rubyspec の socket のテストを復活させています。とりあえずそのまま復活させて続くコミットで失敗するプラットフォーム向けの対応を追加するようです。

svn: r64453 2018-08-19 04:35:03 +0900

r64452 で追加されたファイルの svn property 設定。

eregon: r64454 2018-08-19 04:35:20 +0900

rubyspec で IO.for_fd で既に存在している fd を wrap する IO オブジェクトを作った時には IO#autoclose を false に設定して GC で回収される時に close させないようにしています。 socket のテストのためみたいです。 [Feature #2250]

eregon: r64455 2018-08-19 04:35:37 +0900

rubyspec の Socket.getnameinfo のテストで不正な文字列を渡した時の例外が FreeBSD では TypeError になるのでそれも許容するようにテストを修正しています。

eregon: r64456 2018-08-19 04:35:54 +0900

rubyspec の Addrinfo のテストで "localhost" のかわりに "127.0.0.1" を使うようにしています。

eregon: r64457 2018-08-19 04:36:10 +0900

rubyspec の Addrinfo のテストで solaris で動かないものを platform_is_not で guard するようにしています。

eregon: r64458 2018-08-19 04:36:26 +0900

さらに rubyspec の solaris で失敗する socket のテストの platform_is_not に :solaris を追加。

eregon: r64459 2018-08-19 04:36:41 +0900

rubyspec で Socket::Constants の定数リストに SCM 関連ものがあるかチェックしていたところはプラットフォーム共通で存在する SCM_RIGHTS を選ぶようにしてプラットフォーム毎の分岐をなくしています。

eregon: r64460 2018-08-19 04:36:57 +0900

さらに rubyspec の Addrinfo のテストで service 名の解決に使ってるのを http から ftp に変更。 Solaris では http が解決できなかったそうで、それはそれですごい。

eregon: r64461 2018-08-19 04:37:12 +0900

rubyspec の Socket.pack_sockaddr_in のテストで Solaris でうまく動かないものを platform_is_not による guard を追加しています。

eregon: r64462 2018-08-19 04:37:29 +0900

rubyspec の Socket.getaddrinfo のテストで戻り値の 7番目の要素を Socket::IPPROTO_TCP か 0 かどっちか Windows かそれ以外かで決めてましたが、どちらでも受け付けるようにチェック方法を変更しています。古い Solaris (2.10) と新しいもので挙動が違うためみたいです。

eregon: r64463 2018-08-19 04:37:46 +0900

rubyspec の socket のテストで localhost の有無によって失敗するテストを solaris2.11 では実行しないように platform_is_not を追加しています。

normal: r64464 2018-08-19 05:04:07 +0900

r64444 や r64449 のリベンジかなと思いますが sleep_forever() や sleep_timespec() で RUBY_VM_CHECK_INTS_BLOCKING() で割り込みチェックするのを呼び元からのビットフラグの指定に依存させるようにして、rb_mutex_sleep_forever() や rb_mutex_wait_for() から呼ばれた時だけチェックさせるようにしています。

eregon: r64465 2018-08-19 08:49:34 +0900

rubyspec の Addrinfo のテストで SolarisWindows で実行しないようにしていたものを、逆に Linux でのみ実行するようにしています。

normal: r64466 2018-08-19 09:01:03 +0900

r64464 も revert しています。うーむ泥沼感……。

normal: r64467 2018-08-19 09:01:08 +0900

do_gvl_timer() 内の static 変数として持っていた err を構造体 rb_global_vm_lock_t のメンバー timer_err として保持させるようにして(この構造体のインスタンスVM に1つなので実質的にはここはリファクタリング)、gvl_acquire_common() 内で GVL 獲得待ちをしている Thread がなかった時に ETIMEDOUT に再初期化して、time slice のためのタイマーをリセットさせるようにしています。 [ruby-core:88503] [Bug #14999]

kazu: r64468 2018-08-19 10:33:33 +0900

NEWS ファイルの typo 修正。

nobu: r64469 2018-08-19 10:55:27 +0900

NEWS ファイルの組み込みの変更点のサブカテゴリを追加しています。