ruby-trunk-changes r59975 - r59984

今日は fork 時の signal 処理の不具合修正や load path に入れるパスを symbolic link を解決して実際の名前にしておくようにして二重loadを防ぐ変更などがありました。

normal: r59975 2017-09-21 03:47:14 +0900

Kernel#fork などで子プロセスを作る時にシグナルハンドラなどをリセットする必要があるので pthread_sigmask() で一時的にシグナル処理をマスクする処理が入っていなくて子プロセスのシグナル処理が正常に行なわれない不具合を修正しています。 [ruby-core:82883] [Bug #13916]

svn: r59976 2017-09-21 03:47:15 +0900

version.h の日付更新。

eregon: r59977 2017-09-21 04:45:19 +0900

spec/rubyspec に upstream の変更をマージしています。

svn: r59978 2017-09-21 04:45:20 +0900

r59977 の新規追加ファイルの svn property 設定。

eregon: r59979 2017-09-21 05:18:52 +0900

spec/rubyspec を spec/rubyディレクトリ名を変更しています。 upstream のリポジトリ名が ruby/spec になっていて、他の ruby 実装でも spec/ruby というディレクトリ構成を使っているそうなのでそれに合わせるみたいです。 [ruby-core:82287] [Misc #13792]

eregon: r59980 2017-09-21 05:19:54 +0900

r59979 の spec/rubyspec -> spec/ruby の改名に .travis.yml や common.mk などのビルドツールやドキュメントも追随させています。 [ruby-core:82287] [Misc #13792]

eregon: r59981 2017-09-21 06:50:14 +0900

標準添付ライブラリ ftp で rubyspec での Net::FTP#initialize のテストで Net::FTP#connect の引数の数が1であるという前提で書かれてたために、それを壊さないような workaround をしていたのを消して、ruby/spec のほうを修正しています。

eregon: r59982 2017-09-21 07:02:10 +0900

check_funcall_missing() でも respond_to_missing? を呼ぶ時の第2引数を rubyspec を壊さないようにあえて false にしていたのを true に直して、spec 側でバージョンによって分岐して変更を明示的にテストするようにしています。

nobu: r59983 2017-09-21 16:29:16 +0900

rb_check_realpath() というほぼ rb_realpath_internal() を外部に見せるようにした C API を追加しています。 symbolic link を解決した本当のパスを返すもので、解決ができない時に Qnil を返すようになっているそうです。

nobu: r59984 2017-09-21 16:29:20 +0900

r59983 で追加した rb_check_realpath() を利用して require などで load path のリストを symbolic link を解決した後のディレクトリ名にしておくようにして、symbolic link による別名経由で同じファイルが二重に load されないようにしています。 [ruby-core:64928] [Feature #10222]