ruby-trunk-changes r37663 - r37687

今日は rake が 0.9.3, 0.9.4 とたて続けに更新されて、そのテストの修正などがありました。また dtrace 対応に関連してビルドシステムの修正、flonum を Marshal.dump した時の不具合の修正などがありました。

drbrain:r37663 2012-11-16 06:17:05 +0900

svn:ignore property に dmyprobes.h と .time.id.h を追加しています。

drbrain:r37664 2012-11-16 06:59:37 +0900

rake 0.9.3 がマージされています。 変更点はこちら http://rake.rubyforge.org/doc/release_notes/rake-0_9_3_rdoc.html
差分が多いので内容についてはスルーします。

svn:r37665 2012-11-16 06:59:43 +0900

version.h の日付更新。

nobu:r37666 2012-11-16 07:01:58 +0900

新規追加されたファイルの svn property を追加しています。

drbrain:r37667 2012-11-16 07:32:34 +0900

rake 0.9.4 をマージしています。連続で rake のバージョンアップですね。これも変更点はこちらをどうぞ http://rake.rubyforge.org/doc/release_notes/rake-0_9_4_rdoc.html
Rake.glob を FileList.glob に置き換えているという変更が目立ちます。メソッドの内容は同じなのでただのリファクタリングでしょうか。

naruse:r37668 2012-11-16 09:43:00 +0900

r37667 で make install がエラーになっていたのを修正しているそうなのですが、なぜこれで直るんだろう。 Rake::VERSION の作りかたを変更しているのですが、同じ結果になりそうなのですが何が違ったのか。はて。 [ruby-dev:46522] [Bug #7366]

naruse:r37669 2012-11-16 10:25:46 +0900

rake のテストで @orig_PWD というインスタンス変数にディレクトリを保存しておくのにビルドディレクトリ(Dir.pwd) ではなくてソースディレクトリを格納しておくように変更しています。

naruse:r37670 2012-11-16 12:49:09 +0900

r37669 を revert しています。 @orig_PWD はカレントディレクトリ(ビルドディレクトリ)でないといけなかったようです。 そのかわり @orig_PWD を使ってライブラリパスを追加したり require したりしていたところを __FILE__ との相対パスで指定するように変更しています。

glass:r37671 2012-11-16 15:37:06 +0900

標準添付ライブラリ net/pop の Net::POP3.certs の rdoc コメントの typo 修正。 [ruby-dev:46519] [Bug #7355]

nobu:r37672 2012-11-16 15:41:05 +0900

rake の test の行末の空白除去のみ。

nobu:r37673 2012-11-16 15:41:51 +0900

.gitignore に dmyprobes.h を追加しています。

nobu:r37674 2012-11-16 15:42:38 +0900

Makefile.in、win32/Makefile.sub で DTrace 対応で DTrace に非対応な環境で probes.h を生成するルールとして dmyprobes.h をソースディレクトリからコピーするようにしています。また VERBOSE によるメッセージの抑制がきくようにしています。 でも dmyprobes.h はビルドディレクトリに生成するようになっているような気が……。

nobu:r37675 2012-11-16 16:24:45 +0900

configure で DTrace 対応かどかのチェックに dtrace コマンドが利用可能かで判定しているのをクロスコンパイル時には考慮しないようにしています。ビルド環境で使えてもビルド対象の環境では使えないかもしれないからですね。

nobu:r37676 2012-11-16 16:28:30 +0900

Range#bsearch で rb_cmpint() で大小比較した結果が -1, 0, 1 のいずれかであることを前提とした swtich 文を負、0、正の数であれば良いように書き換えています。

nobu:r37677 2012-11-16 17:30:56 +0900

r37675 で dtrace のチェックをクロスコンパイル時に無効にするようにしましたが、クロスコンパイルかどうかの判定が AC_PROG_CC で行なわれているそうなので、その後になるように位置を移動しています。

nobu:r37678 2012-11-16 17:56:49 +0900

よく理解できていないのですが probes.h を incs というターゲットの依存にしていたのを all-incs という新しいターゲットに分離して、拡張ライブラリ関係の exts.mk と mkmain.sh の時だけ依存関係に含めるようにしています。 mkmain.sh ってなんだっけ……

nobu:r37679 2012-11-16 17:57:17 +0900

DTrace をサポートしているプラットフォームと無効なプラットフォームで Makefile.in のターゲットを分けて、ルールの部分で if を使って分岐しないですむようにしています。

naruse:r37680 2012-11-16 19:03:07 +0900

r37679 でまた dmyprobes.h がビルドディレクトリにあるように記述されていたところがあったのでソースディレクトリ下にあるように書き直しています。また common.mk にも同じくソースディレクトリに dmyprobes.h が起かれることを前提とするように変更しています。

ko1:r37681 2012-11-16 19:34:54 +0900

r36433 で追加された呼び出し後の割り込みチェックをしないで処理を続行することを指定できる rb_thread_call_without_gvl2() の引数の関数ポインタに渡す関数のインタフェースを int * でフラグを渡していたのを VALUE * で渡すようにして、ビットフラグとしてセットするようにしています。ビットフラグにしているのは将来的に他の指示も返せるようにするためでしょう。 int -> VALUE にしたのはビット幅が比較的安定しているからでしょうか。

nobu:r37682 2012-11-16 21:32:48 +0900

r37679 で DTrace の有効/無効でターゲットを分離した時に、有効な時の dtrace コマンドの出力先ファイル名を間違えていたのを修正。

kazu:r37683 2012-11-16 21:51:08 +0900

r37631 の ChangeLogtypo 修正。

nobu:r37684 2012-11-17 00:22:37 +0900

DTrace サポートのための probes.h の生成のためのルールを最初のように suffix rule による記述にしています。ただしDTrace がサポートされていない環境のための dmyprobes.h のかわりに .dmyh という拡張子を導入してシンプルに記述できるようにしています。

svn:r37685 2012-11-17 00:22:43 +0900

version.h の日付更新。

nobu:r37686 2012-11-17 00:40:30 +0900

probes.dmyh の依存関係にその生成に使うツール tool/gen_dummy_probes.rb を追加、incs に probes.dmyh を追加しています。 probes.dmyh は DTrace が有効な環境では作られないんじゃないかなーと思ったらこの変更で作られるようになったようです。まあ(使われないけど)作っても特に時間がかかるわけでもないしあまり問題なさそうですけど。

nagachika:r37687 2012-11-17 00:55:59 +0900

flonum (Float の即値)が有効なプラットフォームで flonum を含むオブジェクトを Marhshal.dump した時に、同じオブジェクトの参照が複数現れるとその参照がずれてしまって Marshal.load すると元と異なるオブジェクトをロードしてしまう不具合を修正しています。 flonum は即値ですが、ロード時は参照の一種としてカウントされるので、同一オブジェクトを管理しているテーブルに登録しておくようにしています。 [ruby-core:49323] [Bug #7348]