ruby-trunk-changes r33030 - r33047

今日は久しぶりにコミット多くて、大きな変更もありました。minitest, RDoc, Rubygems がそれぞれ新しいバージョンがマージされました。また大きなスクリプトで行数の情報がオーバフローしてしまう問題の対処がされています。

mame:r33030 2011-08-24 00:44:26 +0900

拡張ライブラリ coverage での coverage 情報の更新時に、スクリプト(の VM の命令列にコンパイルしたもの ISeq)が大きくなると行番号が正しく取れなくなるので、不正な行数を更新しようとして [BUG] でエラー終了してしまっていました。とりあえずそこは情報の更新をあきらめて return するようにしています。
ファイルの行数が 16bit しか持てないというのは知っていましたが、それ以前にも制限があったんですねー。 [ruby-dev:44413] [Bug #5217]

svn:r33031 2011-08-24 00:44:30 +0900

version.h の日付更新。

ryan:r33036 2011-08-24 06:47:25 +0900

minitest の 2.5.0 をマージしています。 __ で始まるメソッドを minitest 用に予約したり、エラー時のメッセージを強化したり、Module#infect_with_assertions を廃止(呼ぶと例外が発生)したり、その他リファクタリングです。

ryan:r33039 2011-08-24 07:34:13 +0900

r33039 の minitest のマージでこれまで直接 Object の拡張をしていたのを、MiniTest::Expectations にまとめてそれを include するように変更されています。これにより test_module.rb で mixin されているモジュールが増えたので、テスト用に判定する前に除去するコードを追加しています。

drbrain:r33040 2011-08-24 07:58:06 +0900

RubyGems 1.8.9 がマージされています。 gem uninstall や cleanup コマンドで gem 毎にパスの設定(GEM_HOME とか GEM_PATH とか)を戻していなくて失敗していたのを修正しているようです。

drbrain:r33043 2011-08-24 08:53:49 +0900

RDoc 3.9.3 をマージしています。 -K オプション対策(おそらくマジックコメントで US-ASCII を指定するようにしていることでしょう)、画像の URL のスキーマhttps の時にも <img> タグを生成するようにする対応、 <tt> タグの中で special markup を無効にする修正などが入っています。

ko1:r33045 2011-08-24 09:52:04 +0900

Class や Module の特異クラス内でクラス変数について defined? でチェックすると、元の Class や Module にそのクラス変数が存在したら "class variable" を返してしまっていたのを修正しています。 クラス変数用の cbase は vm_get_cvar_base() で取得しないといけないんですね。 [ruby-core:39022] [Bug #5204]

ko1:r33046 2011-08-24 15:31:15 +0900

r33030 の元のソースコードが長いと行番号がオーバフローする問題の対処です。CRuby の VM の命令列(ISeq) の各命令で行番号を含む情報を保持していたのを、行番号が変化するところだけで持つようにして、そのかわり命令のカウンタと行番号を unsigned int で持つようにしています。また既に不要になっていた sp(予想される消費スタックサイズ?)というメンバを削除して、構造体の名称を変更(iseq_insn_info_entry -> iseq_line_info_entry)しています。 これでコンパイル後の命令列のメモリ使用量も削減できるようです。[ruby-dev:44413] [Bug #5217]

naruse:r33047 2011-08-24 16:28:12 +0900

URI::Parser.new の rdoc 用のコメントにあるサンプルコードが閉じかっこが足りていなかったのを修正。