ruby-trunk-changes r38416 - r38424

今日は Class/Module を clone した時の特異メソッド内での定数探索の修正などがありました。

drbrain:r38416 2012-12-17 08:00:04 +0900

RubyGems が 2.0.0.preview2.1 から 2.0.0.preview2.2 にバージョンアップされています。といってもテストの警告除去と、やはりテストのRDocのバージョン依存の部分のチェックを分岐しているだけでした。

svn:r38417 2012-12-17 08:00:08 +0900

version.h の日付更新。

drbrain:r38418 2012-12-17 08:07:49 +0900

RDoc を 4.0.0.preview2 から 4.0.0.preview2.1 にバージョンアップしています。
不要な条件分岐の除去やリンクの生成機能の強化、脚注(footnote)の表示の改善などが含まれているそうです。

drbrain:r38419 2012-12-17 11:26:15 +0900

doc/syntax.rdoc と doc/syntax/*.rdoc に Ruby の文法の基本的なドキュメントを追加しています。こういうドキュメントはるりま(Rubyリファレンスマニュアル)にはあるけど英語版はそういえばどこにあったのでしょう。

drbrain:r38420 2012-12-17 11:36:30 +0900

doc/.document に doc/syntax サブディレクトリの指定を追記しています。

drbrain:r38421 2012-12-17 12:05:45 +0900

doc/syntax/method.rdoc に特異メソッドの定義方法について追記しています。

kosaki:r38422 2012-12-17 14:04:04 +0900

r38399 で rb_thread_call_without_gvl2() を使った io_flush_buffer_async2() で 0 を返すと rb_thread_call_without_gvl2() で割り込みを先に検出して関数を呼ばずに返った時と区別がつかなくて無限ループになる可能性があったので io_flush_buffer_sync2() で 0 のかわりに (void*)1 を返して io_flush_buffer_sync2() で再度読み変えて 0 を返すようにしています。 rb_thread_call_without_gvl2() の仕様の難点ですね。

charliesome:r38423 2012-12-17 18:49:00 +0900

Class/Module を clone した時にその特異メソッド内の cref が複製されていなくて Class/Module 内の定数が探索できていない不具合を修正しています。rewrite_cref_stack() という関数で iseq->cref_stack (スタックといっているけど linked list で表現されている)の nd_klass を新しい Class/Module にすりかえています。node->nd_class == old_klass の時に更に nd_next を辿って変更しようとしていないのはいいんでしょうか。 cref なので同じクラスが複数回でてくることはあるりそうですけど。 [ruby-core:47834] [Bug #7107]

naruse:r38424 2012-12-17 21:48:12 +0900

dtrace のテストで指定する ruby はインストールされている Gem.ruby ではなくテストに用いている実行形式ファイルを EnvUtil.rubybin で決めるようにしています。 [ruby-core:50943] [Bug #7581]