ruby-trunk-changes r58688 - r58701

今日は Math.lgamma の実装の整理や autoload で multi thread で同時にロードした時に稀に NameError になる不具合の修正などがありました。

nobu: r58688 2017-05-13 00:29:55 +0900

String#unicode_normalize の rdoc 用コメントに Unicode のマルチバイトの文字が直接書かれていたのを \uxxxx の記法で書くようにしています。日本語版の VC はコメントに UTF-8 があると警告が出るそうです。

nobu: r58689 2017-05-13 01:01:17 +0900

ライブラリ関数 lgamma_r(3) の有無で tgamma() の定義そのものを preprocessor で大きく分岐していたのを、同じ関数定義内で小さく分岐するように修正しています。

svn: r58690 2017-05-13 01:01:18 +0900

version.h の日付更新。

nobu: r58691 2017-05-13 01:12:46 +0900

math.c に Windows 環境用の tgamma() が定義されていたのを configure.in で mingw の時には強制的に HAVE_TGAMMA を偽にして独自実装を利用するようにしてまとめています。

naruse: r58692 2017-05-13 02:02:25 +0900

r58642 あたりから続く rubygems のテストの CI でのデバッグ用のコード追加で require 'rubygems/gem_runner' で例外が発生した時に環境変数の GEM_HOME の値自体も例外メッセージに含めるようにしています。

nobu: r58693 2017-05-13 02:02:48 +0900

Array#insert で引数が1つしかなくて何も配列に追加しない時でも第1引数がインデックスとして利用可能か(整数に変換できるか)をチェックするようにしています。 [ruby-core:81125] [Bug #13558]

nobu: r58694 2017-05-13 02:23:46 +0900

Array#insert で第1引数のインデックスが負の時に配列の先頭より前になってしまったら(つまり配列サイズ+1の符号を反転したものよりも小さかったら)その例外を発生させて、例外メッセージの最小の値が間違っているのを修正しています。

usa: r58695 2017-05-13 05:10:16 +0900

rubyspec で Windows でのテストで C:\Windows\nodepad.exe というパスを決め打ちで書いていたところを環境変数 WINDIR を利用して etc/services ファイルを参照するように書き換えています。

normal: r58696 2017-05-13 06:52:04 +0900

autoload の時の排他処理で、他の Thread がロード処理中だった時に rb_provide_feature() の途中でコンテキストスイッチが起きると $LOADED_FEATURES への追加はされてもまだ定数にセットが完了しない間に進んでしまって定数が未定義になってしまう可能性があるので、check_autoload_required() で別 Thread の完了を待つようにしています。 [ruby-core:81105] [Bug #11384]

nobu: r58697 2017-05-13 09:50:20 +0900

math_gamma() で Inf や 0 が渡された時の処理を tgamma() を呼ぶ前に分岐してやっておくようにしています。

nobu: r58698 2017-05-13 10:05:30 +0900

r58697 で tgamma() を呼ぶ前にエッジケースを返してしまうようにしたのと同様に math_lgamma() も 0 が渡された時の処理を分岐するようにして、lgamma_r() の独自実装を用意していたのをやめています。

nobu: r58699 2017-05-13 10:16:36 +0900

thread_win32.c で native_cond_broadcast()、abs_timespec_to_timeout_ms() などの現在未使用の関数を #if 0 でコメントアウトしています。また thread.c の thread_cleanup_func() で rb_thread_t::interrupt_cond の解放処理(native_cond_destroy())を追加しています。

shugo: r58700 2017-05-13 11:05:40 +0900

標準添付ライブラリ net/imap のテストで Thread 間で例外を送信して停止する処理に排他処理を加えて race condition 対策をしているようです。

nobu: r58701 2017-05-13 18:55:23 +0900

make test-rubyspec の依存関係に test-rubyspec-precheck を追加して必要なら fake.rb を生成するようにしています。