ruby-trunk-changes r49762 - r49773

今日は特殊変数の処理の不具合修正? などがありました。

nobu: r49762 2015-02-26 23:42:11 +0900

r49760 の tool/runruby.rb での LD_PRELOAD や DYLD_INSERT_LIBRARIES 環境変数に複数のパスを指定するときのデリミタが空白になってた(LD_PRELOAD は空白でも OK だったそうですが DYLD_INSERT_LIBRARIES は ":" 区切り)のを File::PATH_SEPARATOR を使うように修正しています。

nobu: r49763 2015-02-26 23:42:24 +0900

test/ruby/test_io.rb で have_nonblock? とか RUBY_PLATFORM のチェックでテストをスキップしているのを、テストメソッド内で return していたところをそもそもテストメソッドを定義しないように分岐をするようにしています。

nobu: r49764 2015-02-26 23:42:26 +0900

io.c で文字列オブジェクトのバッファにアクセスするために RSTRING_PTR() や RSTRING_LEN() を GC が走ったりしないのに複数回呼んでいたところをローカル変数に格納して使いまわすようにしています。

nobu: r49765 2015-02-27 12:54:54 +0900

IO.copy_stream でどちらかのオブジェクトが T_FILE 型でなくて fd を持ってない(StringIO など IO を偽装している)場合に read/write メソッドを使う fallback 実装でエラー時にバッファサイズを切り詰める処理が飛ばされていたので常にリセットするようにしています。

nobu: r49766 2015-02-27 12:55:00 +0900

拡張ライブラリ thread のソースにある enum 型の定数で不要なのに値が指定されていたのをやめて、また最後に番兵用の要素を追加するようにしています。

svn: r49767 2015-02-27 12:55:07 +0900

version.h の日付更新。

nobu: r49768 2015-02-27 13:57:51 +0900

IO#ioctl や IO#fcntl で引数にバッファとして文字列を渡した時に未使用の領域を 0クリアしておくようにしています。

nobu: r49770 2015-02-27 16:02:04 +0900

compile.c で #if CPDEBUG < 0 という条件下でコンパイルされる APPEND_ELEM() というマクロの定義が ADD_ELEM() になっていたので修正しています。 たぶんデバッグ用にコンパイルした時にだけ問題があったのでしょう。

nobu: r49771 2015-02-27 16:23:23 +0900

今度は compile_debug (これは #define compile_debug CPDEBUG と定義されているので結局 CPDEBUG) が 2以上という条件の時にコンパイルした命令列を disassemble したものを printf しているところで #define printf ruby_debug_printf と利用する関数をすりかえたうえで fflush() の呼び出しを削除しています。

ko1: r49772 2015-02-27 17:10:04 +0900

special variable 用のインデックスを vm_core.h で enum 型として定義するようにして、マジックナンバーを埋め込んでいたところで定義した定数を利用するようにリファクタリングしています。 また lep_svar_place() で th が NULL の場合を考慮するようにしています。 たぶんこの th のチェックがこのコミットの肝なんだと思います。

hsbt: r49773 2015-02-27 20:55:47 +0900

rake に最新版をマージしています。 typo 修正や private メソッドの呼び出し削除など細かな修正みたいです。