ruby-trunk-changes r42782 - r42812

今日は Module#include と Module#prepend が public メソッドになる変更がありました。また define_method と super の組み合わせの不具合修正、bignum.c のリファクタリングAPI 追加などがありました。

ko1:r42782 2013-09-03 03:21:13 +0900

define_method 内で引数ありの super() を実行した時に引数の内容によってエラーになることがある不具合を修正しています。無引数の(かっこもない) super は define_method 内では利用できないのですが引数があってもそのエラーが発生していました。 [ruby-list:49575]

svn:r42783 2013-09-03 03:21:21 +0900

version.h の日付更新。

akr:r42784 2013-09-03 07:29:48 +0900

internal.h で定義している関数マクロ bit_length() で明示的なキャストを追加して clang 3.0 でのビルドエラー(警告をエラー扱いしているため)を修正しています。 [ruby-dev:47687]

knu:r42785 2013-09-03 07:39:22 +0900

r42781 で引数を仕様変更した Numeric#step の step、limit などの引数に数値でないオブジェクトが渡された時に TypeError を発生させるようにしています。

knu:r42786 2013-09-03 07:39:24 +0900

r42781 で Numeric#step の引数 step に nil を渡すのは OK になったので Float#step で TypeError になることを確認しているテストを削除し、Numeric#step のテストに同様のテストケースを追加しています。

akr:r42787 2013-09-03 07:41:07 +0900

bignum.c の bytes_2comp() という関数は little endianアーキテクチャでのみ利用されているので、同じ条件(#if !defined(WORDS_BIGENDIAN) ) で定義するようにしています。

knu:r42788 2013-09-03 07:54:58 +0900

r42786 で Numeric#step の第2引数 step に nil を渡すのを許容するようにテストケースを修正していましたが、やっぱり TypeError を発生させる元々の挙動に戻してテストケースも復活&修正しています。

naruse:r42789 2013-09-03 08:36:01 +0900

エンコーディング UTF-8-MAC の変換テーブルを修正して、一部ハングルなどの文字で UTF-8 との変換で正規化方法の変換ができなかったのを修正しています。最近の Mac OS X (10.2 以降)の変換テーブルを利用するようにしているとのこと。 [ruby-dev:47680]

usa:r42790 2013-09-03 10:08:09 +0900

r42695 の変更で rubyci のテスト環境のいくつかで OpenSSL のテストが失敗する状態が続いているため一時的に例外を捕捉してエラーにならないようにしています。

nobu:r42791 2013-09-03 10:17:36 +0900

internal.h の関数マクロ bit_length() の定義で引数の利用している箇所をかっこでかこむようにしています。

usa:r42792 2013-09-03 11:02:05 +0900

win32/win32.c の is_invalid_handle() および rb_w32_select_with_thread() で引数や変数に const を付けています。

usa:r42793 2013-09-03 11:28:14 +0900

win32/win32.c の rb_w32_select_with_thread() で select(2) 後にはさむ Sleep() の時間を msec にする時に端数を切り上げるようにしています。 rubyci の vc10-x64 (mswin64) での select の待ち時間のテストの失敗に対する対処だそうです。

akr:r42794 2013-09-03 12:03:32 +0900

bignum.c の rb_cstr_to_inum() から、文字列から数値部分を切り出す処理を str2big_scan_digits() という関数に切り出すリファクタリング

akr:r42795 2013-09-03 12:10:41 +0900

Process.clock_gettime の受け付ける clock_id に times(3) を利用した単調増加する実時間を返す :TIMES_BASED_CLOCK_MONOTONIC を追加しています。 times(3) をベースにした clokc_id は既に追加されていたような気がしていましたが、:TIMES_BASED_CLOCK_PROCESS_CPUTIME_ID でこちらは CPU 時間を返すものだったようです。

akr:r42796 2013-09-03 12:36:18 +0900

Bignum の文字列化のテスト用の拡張ライブラリで NUM2INT() での変換結果を使いまわすようにして NUM2INT() の利用を減らしています。

akr:r42797 2013-09-03 12:50:15 +0900

bignum.c に文字列から整数に変換する rb_str2big_poweroftwo() (基数が2の累乗の時に使える最適化版)、rb_str2big_normal()、rb_str2big_karatsuba() などの関数を追加して internal.h で ruby core 内で利用可能にしています。

nobu:r42798 2013-09-03 12:52:22 +0900

r42797 で新規追加されたファイルの svn property 設定。

kazu:r42799 2013-09-03 13:24:00 +0900

r42779, r42782, r42784, r42788 の ChangeLog エントリの typo 修正。
r42788 の ChangeLog の Numeral#step は Numeric#step の typo じゃないでしょうか。

zzak:r42800 2013-09-03 14:38:48 +0900

rb_bug() で表示する不具合報告用の URL が既に存在しないページになっていたので Redmine の URL に変更しています。 [DOC] タグが付いていますが厳密にはメッセージの修正ですね。 https://github.com/ruby/ruby/pull/390
r42802 に関連してテストの修正があり、また r42803 でサイトのほうで対応すべしとして revert されています。

zzak:r42801 2013-09-03 14:49:45 +0900

標準添付ライブラリ thread.rb の ConditionVariable#wait の rdoc 用コメントでタイムアウト時の挙動についての説明の英語の文法を修正しています。 https://github.com/ruby/ruby/pull/386

usa:r42802 2013-09-03 17:07:49 +0900

r42800 の rb_bug() 時に出力するメッセージの変更に伴なって SEGV 時のテストが失敗していたので追随してチェックする文字列内容を変更しています。

naruse:r42803 2013-09-03 17:20:48 +0900

r42800 を revert しています。
リリースしたバージョンまでは変更できないのでメッセージを変更するのではなくて公式サイトの URL のほうで転送するなどの対応を取るべきとのこと。 https://github.com/ruby/www.ruby-lang.org/issues/288 [ruby-core:56982] [Bug #8854]
r42802 のテストの修正と入れ違いになってしまいましたね。

knu:r42804 2013-09-03 18:29:22 +0900

misc/*.el ファイルのいくつかの関数に ";;;###autoload" というコメントを付けています。どうやらこのコメントを書いておくと必要になった時に動的に読んでくれるような directive として働くようです。

usa:r42805 2013-09-03 19:46:58 +0900

拡張ライブラリ win32 の Win32::Registry#values というメソッドを追加して値を配列にして取得できるようにしています。 [ruby-core:51783] [Feature #7763]

akr:r42806 2013-09-03 20:20:02 +0900

bignum.c で文字列の数値化にも大きな数の時は GMP を使った実装を使うようにしています。

akr:r42807 2013-09-03 20:20:17 +0900

Bignum の GMP を使った乗算や文字列化のテストを追加しています。

nobu:r42808 2013-09-03 21:35:22 +0900

HP-UX でスタックアドレスとサイズの取得で型の間違いでコンパイルエラーが発生していたのを修正し、また "sys/dyntune.h" というヘッダを #include するようにしています。 [ruby-core:56983] [Feature #8793]

a_matsuda:r42809 2013-09-03 21:42:01 +0900

Module#include と Module#prepend が public なメソッドに変更されています。つまり mod.include(MyModule) とか klass.prepend(MyModule) みたいに書けて module_eval とか __send__ を使ったりする必要がなくなるわけですね。 [ruby-core:56911] [Feature #8846]
これも先日の開発者会議で採用された仕様変更みたいですね。

a_matsuda:r42810 2013-09-03 21:52:32 +0900

r42809 の ChangeLog エントリにチケット番号の参照を追記しています。

nobu:r42811 2013-09-03 22:03:54 +0900

rb_enc_str_new_cstr() という公開 API を追加しています。これまで無かったのが意外ですが、C の文字列(const char *) とエンコーディング(rb_encoding) を指定して String 文字列を生成する関数です。ただしエンコーディングは ASCII 互換でないと(最小の1文字のバイト数が1でないと)エラーにしています。 UTF-16UTF-32 は渡せないってことですね。

akr:r42812 2013-09-03 22:22:05 +0900

Process.clock_getres のテストで誤って Process.clock_gettime を呼んでいたのを修正しています。