ruby-trunk-changes r40007 - r40022

今日は define_method が public/protected/private/module_function などの無引数の呼び出しによるデフォルトの可視性のコンテキストの影響を受けるようになる変更がありました。

naruse:r40007 2013-03-31 02:07:32 +0900

ARGF のテストで ruby という IO.popen を呼び出すユーティリティメソッドに external_encoding を指定する引数を追加しています。 また不要になっていた一時ファイルの作成を削除しています。

svn:r40008 2013-03-31 02:07:36 +0900

version.h の日付更新。

nobu:r40009 2013-03-31 06:08:30 +0900

gc.c で Windows 環境向けに aligned_malloc() のプロトタイプ宣言を追加しています。 古い VC でコンパイルするためとのこと。

nobu:r40010 2013-03-31 06:08:34 +0900

thread.c と time.c で time_t 型の変数の fprintf(3) フォーマットの指示子を PRI_TIMET_PREFIX というマクロを使うように修正しています。

nobu:r40011 2013-03-31 06:08:36 +0900

thread_pthread.c や thread_win32.c, time.c でそれぞれ定義されていた time_t についてのマクロ定義などを timev.h に切り出して共有するようにしています。

nobu:r40012 2013-03-31 06:08:42 +0900

x64-mingw 環境では struct timeval の tv_sec メンバの型が time_t ではないそうで、その差異を吸収するために TYPEOF_TIMEVAL_TV_SEC というマクロを定義して、浮動小数点数を struct timeval に変換する double2timeval() という関数で利用するようにしています。

nobu:r40013 2013-03-31 06:27:27 +0900

"ARGF.singleton_class.instance_eval do end" を -w オプションつきで実行すると __attached__ という内部利用のインスタンス変数が未初期化であるという警告が出る不具合を修正しています。特異クラスを返す(まだ特異クラスがなければ作る)マクロ ENSURE_EIGENCLASS() で特異クラスが持つ __attached__ というインスタンス変数をチェックする前に flags で特異クラスであるかどうかをチェックするようにしています。 [ruby-core:53839] [Bug #8188]

hsbt:r40014 2013-03-31 10:47:47 +0900

標準添付ライブラリ net/ftp.rb, net/http.rb, net/pop.rb, net/smtp.rb などの rdoc コメントに属性(attr_reader など)のデフォルト値についての追記をしています。 https://github.com/ruby/ruby/issues/269

hsbt:r40015 2013-03-31 11:01:17 +0900

標準添付ライブラリ timeout.rb で rdoc コメントに引数に 0 や nil を渡した時の挙動について追記しています。 https://github.com/ruby/ruby/issues/270

ところで [GH fixes #270] のような記法が Github issues を指すために使われていますが*1Redmine のチケットと関連付けられてしまっていますね。これについてのチケットも既に作られていたような気もします。

hsbt:r40016 2013-03-31 11:21:07 +0900

File#to_path という file と同じメソッドを rdoc コメントに追加しています。 https://github.com/ruby/ruby/pull/263
なおコミットログには alias と表記されていますが正確には alias ではなく、同じ C の関数を実装にもつメソッドとして別々に定義されています。

akr:r40017 2013-03-31 13:51:29 +0900

数値オブジェクトを C の unsigned long に変換する rb_num2ulong() の実装を rb_num2ulong_internal() として切り出して、signed にした時にオーバフローするかどうかのフラグを返すことができるようにしています。そして追加した rb_num2ulong_internal() を rb_num2uint(), rb_num2short() でも再利用するようにリファクタリングしています。

nobu:r40018 2013-03-31 14:28:19 +0900

r40017 の ChangeLogtypo 修正。

nobu:r40019 2013-03-31 15:40:37 +0900

tool/mkconfig.rb に r39507 で入れた configure へのオプションを Windows 環境でのコマンドラインの仕様で空白と"="のほかに "," や ";" でも区切りになるのに対処するようにしていたのを revert して、win32/configure.bat で対処しようとしているらしいです。bat ファイルの変更はよくわかりませんでしたけど。空白を1つから2つにしている行は意味があるんでしょうか?

akr:r40020 2013-03-31 16:51:35 +0900

test/-ext-/num2int/test_num2int.rb の整数変換 C API のテストにテストケースを追加しています。

nobu:r40021 2013-03-31 17:18:04 +0900

test/ruby/test_method.rb で長いテストメソッドを3つに分解しています。

nobu:r40022 2013-03-31 17:18:09 +0900

define_method は public, protected, private, module_function などを無引数で呼び出した時のデフォルトの可視性(module_function は可視性のみでなく同名の特異メソッド(クラスメソッド)の定義も一緒に追加する意味を持ちますが)には影響されず、デフォルトで public のメソッドを定義していましたが、この変更で define_method によるメソッド定義も普通のメソッド定義と同様にこれらの可視性のコンテキストの影響を受けるようにしています。 これは NEWS にも記載したほうがよさそうですね。 https://github.com/ruby/ruby/pull/268

*1:これって一般的というか、Github 上では意味のあるコミットログになるんでしょうか?