ruby-trunk-changes r66428 - r66438

今日は継承したメソッドの private 化などをした Module を Module#extend で刺し込んだ時の不具合修正や fork した時の Mutex の処理の修正などがありました。

normal: r66428 2018-12-18 07:48:57 +0900

Process.euid= のテストでユーザー名を取得するのに環境変数 USER に依存していたのを Etc.getpwuid も試すようにしています。

svn: r66429 2018-12-18 07:49:01 +0900

version.h の日付更新。

hsbt: r66430 2018-12-18 11:01:39 +0900

拡張ライブラリ psych のバージョンを 3.1.0 に更新しています。また gemspec ファイルの files の .java ファイルのディレクトリ階層を変更しています。

akr: r66431 2018-12-18 12:09:54 +0900

r66416 で Pathname#relative_path_from の引数を respond_to? で判定するようにしていましたが、やっぱり is_a? で判定して Pathname のインスタンスかどうかの判定をするようにしています。 Pathname#=== で判定すると引数のオブジェクトで結果いじるのが難しいけど is_a? なら mock するのも簡単だし、本来の意図は維持されるので、ということですかね。

knu: r66432 2018-12-18 14:09:08 +0900

標準添付ライブラリ ipaddr に upstream から 1.2.2 がマージされています。 magic comment の frozen_string_literal が false から true に変更されています。

hsbt: r66433 2018-12-18 15:49:12 +0900

標準添付ライブラリ irb のバージョン番号を 1.0.0 にしています。おお、ついに irb が 1.0.0 に。

ko1: r66434 2018-12-18 17:11:52 +0900

主にデバッグ用途でオブジェクトの情報を文字列にダンプする rb_raw_obj_info() に T_MODULE と T_ICLASS 型のオブジェクトの対応を追加しています。

svn: r66435 2018-12-18 17:11:57 +0900

r66434 のインデントのタブを空白に展開。

ko1: r66436 2018-12-18 17:33:20 +0900

メソッド呼び出しで使われる vm_call_method_each_type() のメソッドの種類が ZSUPER (引数なし super 相当)だった時に Class として method entry の me->owner ではなく me->define_class の RCLASS_ORIGIN() を使うように修正しています。 include した Module のメソッドを private にした新しい Module を Module#extend で取り込んだ時にデバッグビルドで異常終了することがあったようです。このサンプルの場合 owner が M2 で defined_class が T_ICLASS(M2) だそうです。 [ruby-core:90589] [Bug #15427]

svn: r66437 2018-12-18 17:33:23 +0900

r66436 のインデントのタブを空白に展開。

normal: r66438 2018-12-18 18:21:05 +0900

VALUE から構造体 rb_mutex_t のポインタを取り出す mutex_ptr() で fork した時に子プロセスで既に対応する thread が存在しない Mutex の時に再初期化して待ちキューをリセットするように r66230 でしたのですが、mutex->next_mutex と mutex->th を 0クリアするのはやめています。 Mutex を unlock 状態にしてしまうと子プロセスで unlock しようとした時にエラーになってしまうため。うーん、いいのかな。ロックかかりっぱなしになると今度は存在しない Thread への参照が残ると思うけど…。 [ruby-core:90581] [Bug #15424] [ruby-core:90595] [Bug #15430]