ruby-trunk-changes r29807 - r29819

RubyConf のレポートを読んでいると海外の Ruby のもりあがりは日本以上なのかなーと思わされます。英語を学ばないと。

mame:r29807 2010-11-16 22:32:30 +0900

vm_insnhelper.c で余分な代入文の重複を削除。 Coverity Scan による検出だそうです。

VALUE epc = epc = val

こんな C言語の文なんですけど、これが「undefined behavior」なんだそうです。ふーむ。

jeg2:r29808 2010-11-17 08:55:29 +0900

標準添付ライブラリの csv の to_csv で US-ASCII と UTF-8 の文字列を含む配列を csv にすると結果の文字列の Encoding が US-ASCII になるのを修正。[ruby-core:33135]
けど [ruby-core:33229]akr さんは、ASCII 範囲の文字しか含んでないけど ISO-8859-1 な文字列と UTF-8 の文字列を含む配列の場合、内容に UTF-8 の文字列を含んでいるのに Encoding が ISO-8859-1 な文字列になっちゃうよと報告しています。この場合は勝手に UTF-8 になってくれると嬉しいのかも。
しかし非ASCII文字を含む異なる Encoding の文字列を含んでいたらどれに変換するんだとか、まず仕様決めをしないといけないような気がします。csv文字コードの問題に関心のある人は要チェックです。

svn:r29809 2010-11-17 08:55:31 +0900

version.h の日付更新。

naruse:r29810 2010-11-17 09:49:49 +0900

enc/shift_jis.c と enc/euc_jp.c の property_name_to_ctype() で ALLOCA_N(マシンスタック上にメモリ確保)とまちがえて ALLOC_N(ヒープ上に確保)を使っていてメモリリークしていたのを修正。
多分 r29732 で入ったばかりなので 1.9.2 は問題ないと思います。

naruse:r29811 2010-11-17 15:21:11 +0900

regint.h、regcomp.c、regexec.c など正規表現関連のソースで関数の引数の char* -> const char* への変更、フォーマット文字列の移植性を考慮したマクロの利用、適切なキャストの追加などの変更。

yugui:r29812 2010-11-17 16:08:07 +0900

envutil.rb(Ruby 自体のテスト用ユーティリティ)で Test::Unit::Assersions#assert_warn というメソッドを追加しています。stderr への出力の内容を検査する assert の一種です。

yugui:r29813 2010-11-17 16:14:13 +0900

r29280 のテストとして trunk/test/test_tracer.rb を追加しています。-rtracer オプションと -e をつけて起動して変な出力が出ないようにしています。lines.size が 1 の時というのはあるんでしょうか。手元では2行でしたが。

nobu:r29814 2010-11-17 18:22:45 +0900

ripper.c と json の parser.c を生成する時もデフォルトではメッセージだけでコマンドラインを隠すようにしています。

nobu:r29817 2010-11-17 18:32:44 +0900

make V=1 した時に lex.c を生成するコマンドラインを表示するようにしています。これは元々表示しないようになってたみたいですね。

nobu:r29818 2010-11-17 18:38:38 +0900

make でディレクトリ作成のコマンドラインは常に隠していたのを V=1 があれば表示するようにしています。
あと今気がついたんですが、make V=1 のように V 変数を指定する方法だけじゃなくて make Q="@" とか make Q="" と指定しても効くんですね。多分 V を使うほうが公式だと思いますけど。

nobu:r29819 2010-11-17 19:13:25 +0900

mkmf.rb を使って生成する拡張ライブラリ用の Makefile もデフォルトでコマンドラインを表示せず短いメッセージを表示するようにしているようです。