ruby-trunk-changes r36784 - r36807

今日は 64bit 環境で Float の一部が即値(VALUE に埋め込み)になる flonum という表現で実装される変更が入っています。即値になるとオブジェクトを生成しなくてすむので GC の負荷が下がるので、数値演算が早くなるかもしれません。

tenderlove:r36784 2012-08-23 01:51:08 +0900

r36640 以降 Mutex#synchronize のブロック内のような C のメソッド経由で呼ばれているブロック内からの super の呼び出しがエラーになっていた不具合の修正。メソッドの最初のフレームを探す前に refinement によるクラスのすりかえを考慮するようにしています。 [ruby-core:47186] [Bug #6867]

svn:r36785 2012-08-23 01:51:13 +0900

version.h の日付更新。

tenderlove:r36786 2012-08-23 02:43:16 +0900

YAML のエンジンのひとつ 拡張ライブラリ syck が削除されています。 YAML::ENGINE.yamler= に syck が指定されたら警告を出すようになっています。今後は YAML の実装は psych のみになります。 [ruby-core:43360] [Feature #6163]

usa:r36787 2012-08-23 10:38:14 +0900

id.h の依存関係まわりで r36724 と r36751 を revert しています。 mswin で最初からビルドする時にエラーになっていたそうです。

naruse:r36788 2012-08-23 10:50:12 +0900

configure の --with-opt-dir で指定したディレクトリの include や lib を ruby 本体のビルド時の CPPFLAGS に反映させるようにしています。 libexecinfo のインストール先を指定することでバックトレース出力を有効にしようとして --with-opt-dir が効かなかったからとのことです。 [ruby-dev:46064] [Bug #6900]

usa:r36790 2012-08-23 11:35:01 +0900

open-uri の Net::ReadTimeout 発生のテストで待ち時間が短かすぎてサーバのスレッドが停止する前に動き出してしまうのでタイムアウトを 0.01 から 0.1 に伸ばしています。

naruse:r36791 2012-08-23 11:59:24 +0900

Haiku というプラットフォームのビルドエラーの対応と SIGBUS が存在しないので signal.c での定義の修正です。

usa:r36793 2012-08-23 12:30:58 +0900

win32/configure.bat に --with[out]-ext[ensions] というオプションに対応するようにしています。

usa:r36794 2012-08-23 12:33:53 +0900

同じく win32/configure.bat のヘルプメッセージにも --with[out]-ext の説明が表示されるようにしています。

shugo:r36795 2012-08-23 13:00:25 +0900

r36640 の一部を revert しています。 Thread のブロック内からの super がエラーになる不具合のため。そのかわり特異メソッド内からの super が NotImplementedError になるようになっています。 [ruby-core:47284] [Bug #6907]

ko1:r36796 2012-08-23 16:03:46 +0900

r36780 で導入された mkmf.rb で生成する Makefile の変数 ruby_headers を ext/date/depend ファイルで利用して ruby 標準のヘッダファイルへの依存関係を付けています。

usa:r36797 2012-08-23 16:15:27 +0900

さらに mkmf.rb で生成する Makefile にデフォルトでソースディレクトリ内のヘッダファイルへの依存関係を付けるようにしているので、ソースとヘッダがあるだけのシンプルなケースでは depend を書かなくてもよくなっているそうです。

ko1:r36798 2012-08-23 16:22:40 +0900

64bit 環境で Float の double を VALUE に即値として埋め込んだ表現ができるようにしています。これに伴い VALUE のビットの使われたかたが変化しています。 Float は毎回オブジェクトを生成するため GC の負荷が高くなっていましたが即値になるとオブジェクトを生成しなくてすむのでパフォーマンスの改善にもなる可能性があります。ただし double の値の範囲によって即値になるかどうかが変化するようです。

nobu:r36799 2012-08-23 16:45:46 +0900

いくつかのソースで行末の空白を削除。

nobu:r36800 2012-08-23 16:46:12 +0900

$LOADED_FEATURES に格納する feature名の文字列のエンコーディングファイルシステムエンコーディングを元にするようにしているのと、あと -r オプションで指定されたファイルを一時的に不可視(klass == 0)にして変更できないようにしていたり(ロードして feature list に追加する時に戻しています)、エンコーディングを default_external にセットしていたりします。 [ruby-core:44750] [Bug #6377]

usa:r36801 2012-08-23 19:18:23 +0900

win32/Makefile.sub の未使用のルールを削除したり $(srcdir)/win32 を $(win_srcdir) に置き換えたりというリファクタリングです。 ???.c.h を ???.c{}.h みたいにしているのがよくわからないです。

usa:r36802 2012-08-23 19:20:37 +0900

common.mk で win32/ の依存関係の記述が RUBY_H_INCLUDES という変数が未定義な位置だったので移動しています。

usa:r36803 2012-08-23 20:36:42 +0900

flonum (即値の場合の Float)は特異クラスを持てないようにしています。

usa:r36804 2012-08-23 20:51:30 +0900

Fixnum, Bignum, Float, Symbol に特異メソッドが定義できない(特異クラスを持てない)ということを確認するテストを追加しています。

naruse:r36805 2012-08-23 20:58:39 +0900

更に r36803 のテストとして flonum に extend した時に TypeError になるテストも追加しています。

kazu:r36807 2012-08-23 21:05:45 +0900

id.h のタイムスタンプ用ファイルを介さずに直接依存関係を記述して、id.h だけ削除して .id.h.time が残っていても make id.h で id.h を再生成できるようにしています。