ruby-trunk-changes r37098 - r37108

nobu:r37098 2012-10-06 00:14:15 +0900

encoding.c の rb_encoding 型の値が Unicode かどうか判定する rb_enc_unicode_p() でエンコーディング名をチェック("UTF[^7]")していたのを鬼雲(コミットログには oniguruma と書かれていますが)が提供しているマクロ ONIGENC_IS_UNICODE() を利用するようにしています。しかしこれは後に revert されています。

svn:r37099 2012-10-06 00:14:19 +0900

version.h の日付更新。

tenderlove:r37100 2012-10-06 01:22:03 +0900

Object#dup, clone でオブジェクトが複製された時には それぞれ initialize_dup, initialize_clone という初期化メソッドが呼ばれるので、これを再定義することでカスタマイズできるようになっているのですが、その呼び出しを確認するテストを追加しています。

nobu:r37101 2012-10-06 09:42:14 +0900

エンディアンの指定を含まないダミーエンコーディング UTF-16/UTF-32 というのがあり、これも rb_encoding::flags の Unicode フラグを立てるようにしています。

nobu:r37102 2012-10-06 09:48:28 +0900

拡張ライブラリ objspace のテストのリファクタリング

nobu:r37103 2012-10-06 09:50:12 +0900

昨日の r37094 で markable_object_p() という関数に切り出した処理が残っていたところも、この関数呼び出しにおきかえています。

naruse:r37104 2012-10-06 12:04:55 +0900

r37098 の Unicode 判定を rb_encoding::flags の Unicode フラグのチェックにしたのを revert しています。なにかダメだったんでしょうか。よくわかりません。

shugo:r37105 2012-10-06 16:32:45 +0900

refinement で Class/Module の拡張する Module を管理する omod *1の有無で search_method() を search_method_with_omod() と search_method_without_omod() にわけて、Module#using を使っていない時にループ内に余分な分岐が入らないようにしています。実行時のパフォーマンスのための変更だとお思われます。

shugo:r37106 2012-10-06 18:36:35 +0900

CRuby はメソッドの探索に時間がかかるので、メソッドの定義が追加されない間有効なメソッドキャッシュがいくつかの粒度で実装されています。 OPT_GLOBAL_METHOD_CACHE というマクロ(デフォルトは 1 に定義されている)を 0 にすることで、クラス/モジュール毎のメソッドキャッシュを無効にしてコンパイルできるようにしています。メソッド探索の高速化をした時にキャッシュがあると効果を確認しずらいからということで導入されたようなので、通常は使うことはないでしょう。 [ruby-dev:46203] [Bug #7111]

nobu:r37107 2012-10-06 23:22:52 +0900

r37104 で revert された r37098 を再度入れています。 r37101 で UTF-16/UTF-32 の時も Unicodeフラグを立てるようにしてケアしたからいいでしょ、ということみたいです。

nobu:r37108 2012-10-06 23:26:29 +0900

r36666 で openssl のテストで OpenSSL::Config::DEFAULT_CONFIG_FILE を利用するものが不正なファイルパスが返ってくることがあるので Windows 版では skip していたのを、プラットフォームで判定するのではなくて OpenSSL::Config::DEFAULT_CONFIG_FILE のファイルパスにファイルがあるか(読めるか)で判断するようにしています。

*1:そういえば omod って override module の略なんでしょうか。[追記]overlaid modules の略だそうです https://twitter.com/shugomaeda/status/254598794732244993