ruby-trunk-changes r42171 - r42195

今日は File.expand_path の追加修正、require のファイルパスのエンコーディングの扱いの修正、拡張ライブラリ syslog の機能追加などがありました。

naruse:r42171 2013-07-26 01:33:57 +0900

r42160 の File.expand_path でのホームディレクトリの処理で ~user の形式の時にユーザ名を取得するために "~" を飛ばし忘れていたのを修正しています。

svn:r42172 2013-07-26 01:34:01 +0900

version.h の日付更新。

naruse:r42173 2013-07-26 01:38:49 +0900

include/ruby/ruby.h で RGenGC のデバッグ用のマクロのチェックにマクロ未定義の時を考慮しています。

naruse:r42174 2013-07-26 05:49:36 +0900

Rinda のテストで IPv6マルチキャストソケットを作る時に Debian 6.0.7 だとアドレスにインタフェース名も含めないと EINVAL になるそうなので対応を追加しています。

nobu:r42175 2013-07-26 05:54:54 +0900

test-all 用のユーティリテイ EnvUtil の assert_separately で子プロセスに渡すスクリプトエンコーディング指定のマジックコメントを含めるようにしています。

naruse:r42176 2013-07-26 09:05:20 +0900

test/ruby/test_require.rb のブロックパラメータによるローカル変数の遮蔽の警告除去。

naruse:r42177 2013-07-26 09:06:45 +0900

r42174 の rinda のテストの修正で prepare_ipv6 の戻り値を受け取ってなかったのを修正しています。

nobu:r42178 2013-07-26 11:42:26 +0900

rational.c に Rational#* で Rational が返ってくることを前提としたコードがあったのですが require "mathn" するとそうとは限らないのでチェックした変換するコードを追加しています。 [ruby-core:56177] [Bug #8687]

nobu:r42179 2013-07-26 13:00:28 +0900

win32/file.c の convert_mb_to_wchar() に渡す文字列を String オブジェクト(VALUE)から const char * に変更するリファクタリング

nobu:r42180 2013-07-26 13:01:07 +0900

win32/file.c の fix_string_encoding() を rb_str_conv_enc() を使ってシンプルに書き替えています。

nobu:r42181 2013-07-26 13:02:01 +0900

file.c の rb_str_encoding_ospath() も rb_str_conv_enc() を使ってシンプルに書きかえています。

nobu:r42182 2013-07-26 13:04:18 +0900

test/ruby/test_require.rb のテストメソッドを分割しています。

nobu:r42183 2013-07-26 13:04:23 +0900

require/load でスクリプトファイルを検索する時にファイルパスのエンコーディングを保持したまま処理するようにして、Windows で NoN-ASCII 文字のファイルをロードできない不具合を修正しています。 [ruby-core:56136] [Bug #8676]

zzak:r42184 2013-07-26 13:11:27 +0900

拡張ライブラリ fiddle の Fiddle::Handle.new と Fiddle.dlopen の rdoc 用コメントに説明を少し追加しています。

nobu:r42185 2013-07-26 13:19:51 +0900

test/ruby/test_require.rb のテストで assert_in_out_err を使って書いていたものを assert_separetely を使って入出力に頼らず直接 assertion を実行するようにしています。

nobu:r42186 2013-07-26 13:19:56 +0900

test/ruby/test_require.rb の assert_require_nonascii_path は assert_separetely を使って子プロセスでテストしていたのを $LOAD_PATH と $LOADED_FEATURES の書き戻しをすることで子プロセスを作らず同じプロセスの中でテストするようにしています。

zzak:r42187 2013-07-26 14:06:57 +0900

r42184 に追加して Fiddle::Handle.new と Fiddle.dlopen の rdoc に man 3 dlopen の参照や挙動が OS によって異なることなどの説明を追記しています。

zzak:r42188 2013-07-26 14:08:26 +0900

r42187 の ChangeLogtypo を修正。

nobu:r42189 2013-07-26 15:43:33 +0900

win32/file.c のインデント修正のみ。

nobu:r42190 2013-07-26 17:49:31 +0900

r42180 で rb_str_conv_enc() を使って書きかえた win32/file.c の fix_string_encoding() で enciding が変換先のエンコーディングではなく元のエンコーディングなのに逆に渡していたのを修正しています。

nobu:r42191 2013-07-26 17:50:33 +0900

win32/file.c の convert_mb_to_wchar() の不要な引数の NULL チェックを消しています。未初期化変数の警告の除去のためだそうです。なぜこれで警告が出るのかちょっとよくわかってませんが。

ko1:r42192 2013-07-26 18:23:40 +0900

配列の一部を Write Barrier つきで上書きする ary_memcpy() で謎のエラーのため無効にしていた、要素数が多い時に各要素ではなく配列自体のほうを remember set に追加する処理を有効にして、要素数の下限を 128 / sizeof(VALUE) を元にするようにしています。キャッシュラインのサイズと何か関係があるそうで、これでエラーが起きなくなったとのことですが、なぜでしょうねぇ。それに sizeof(VALUE) はだいたいは 4 か 8 だと思うので、元々書かれていた 32 と同じかより小さいので、32 で起きてたのが直ったのだとしたらちょっと不思議ですね。

ko1:r42193 2013-07-26 18:31:17 +0900

r42192 の条件文で 128 / sizeof(VALUE) を int に明示的にキャストしてコンパイラの警告を除去しています。

ko1:r42194 2013-07-26 19:28:26 +0900

VM の命令を生成する tool/instruction.rb で各命令の前後でスタックオーバフローのチェックのために挿入しているマクロを CHECK_VM_STACK_OVERFLOW_FOR_INSN() というものに変更して、例外の発生ではなく rb_bug() で異常終了させるようにしています。いずれこのチェックを性能のために削除しようとしているそうで、異常検出時の対応を厳しくして問題があったら報告してもらうようにしているようです。

knu:r42195 2013-07-26 20:15:06 +0900

拡張ライブラリ の Syslog::Logger に facility というインスタンス変数を追加して syslog に表示する facility (メッセージの種類を指定する短かい文字列)を指定できるようにしています。 https://github.com/ruby/ruby/pull/305