ruby-trunk-changes r36571 - r36579

今日は無名モジュール/クラスの Module#name の付きかたについての不具合修正などがありました。

nagachika:r36571 2012-07-30 01:31:15 +0900

parse.y から生成した parse.c をコンパイルするには同時に生成される parse.h を使って自動生成する id.h が #include されているので id.h への依存関係も追加することで id.h を再生成させるようにしています。 [ruby-core:46741] [Bug #6789]

nobu:r36572 2012-07-30 13:11:21 +0900

configure に enable-shared が指定された時に LIBRUBY_RELATIVE=no の設定をしています。 load-relative が可能な時は実行するためにフルパスの指定が不要なので make runnable で作るリンクに影響させているのではないかと思うのですが、そうだとすると enable-shared=yes の時は LIBRUBY_RELATIVE=${load_relative} なんじゃないのかと思うのですが。あまり自信ないです。

nobu:r36573 2012-07-30 13:11:56 +0900

Mac OS X でのリンクオプションの -flat_namespace はシンボルテーブルが大きくなるのを回避するため外しています。昔はこれが必要だったんですよね、確か。

nobu:r36574 2012-07-30 14:24:24 +0900

無名モジュールの下に定義したクラスの Module#name が、無名クラスを定数に代入した場合に通常はその時点でその定数名がクラスの名前になるのに、保存されていなかったのを修正。class/module 文で作ったときは登録されていました。 [ruby-core:42865][Bug #6078]

n = Module.new
m = Module.new
n::M = m
n::M.name => nil

しかしこれだとテストに失敗していたようです。

naruse:r36575 2012-07-30 14:56:51 +0900

Process.daemon のスレッド数を検出するために /proc/self/task を利用しているテストで NetBSD では /proc/self/task はあるものの期待した動作をしないみたいでこのテストを省略するようにしています。

naruse:r36576 2012-07-30 15:03:15 +0900

test/ruby/test_process.rb で未使用の変数の初期化の警告を除去するため "_" を変数名の頭に付けています。

nobu:r36577 2012-07-30 21:00:56 +0900

r36574 の Module#name の修正の再修正です。 クラスの名前は __classid__ というインスタンス変数(@ で始まっていないので処理系内部でしか見えない変数)で格納されるのでこれがあった時は優先させるように。また無名モジュールを含む名前は __classpath__ ではなく __tmp_classpath__ というインスタンス変数に格納しておくようにしていたのでこのルールに従うようにしているようです。

naruse:r36578 2012-07-30 23:04:44 +0900

r36575 で NetBSD で省略するようにしたテストの分岐条件が netbsdelf[1-6] だったのを netbsd[a-z]*[1-6] にしています。 amd64 だと x86_64-netbsd6.99.7 のような表記になるため。

naruse:r36579 2012-07-30 23:04:48 +0900

lib/rubygems/platform.rb でのプラットフォームの解析でも同じように x86_64-netbsd??? のような表記に対応するように RUBY_PLATFORM を検査する正規表現を修正しています。