ruby-trunk-changes r43566 - r43582

今日はメモリ確保時に GVL 取得しないまま GVL 確保が必要な関数を呼んでいたため稀に異常終了することがあった不具合の修正や、Array の参照で適切なマクロを使って shady 化を防ぐ変更などがありました。

zzak:r43566 2013-11-08 01:03:48 +0900

golf_prelude.rb の空白を挿入したりするコードのスタイルの変更のみです。 https://github.com/ruby/ruby/pull/425

svn:r43567 2013-11-08 01:03:54 +0900

version.h の日付更新。

hsbt:r43568 2013-11-08 02:02:56 +0900

標準添付ライブラリ thwait.rb の ThreadWait.all_waits の rdoc 用コメントの typo 修正。[DOC] タグをつけとかないといけませんね。 https://github.com/ruby/ruby/pull/435

zzak:r43569 2013-11-08 02:10:34 +0900

標準添付ライブラリ csvCSV.parse_line の rdoc 用コメントの typo や文法の修正。 https://github.com/ruby/ruby/pull/430

zzak:r43570 2013-11-08 02:15:49 +0900

Array の rdoc 用コメントの Array#[] の記述に引数に Range を受け取った時に終端が負の整数だった時に末尾からのインデックスとして解釈することを追記しています。 https://github.com/ruby/ruby/pull/427

zzak:r43571 2013-11-08 02:38:18 +0900

標準添付ライブラリ net/ftp の rdoc 用コメントで typo 修正および説明の追記を行っています。 https://github.com/ruby/ruby/pull/426

zzak:r43572 2013-11-08 02:44:43 +0900

拡張ライブラリ objspace の trace_object_allocations_{start,stop} の rdoc 用コメントの文法を修正しています。 https://github.com/ruby/ruby/pull/421

zzak:r43573 2013-11-08 02:53:42 +0900

コミットログおよび ChangeLog をみると標準添付ライブラリ securerandom.rb のドキュメントの修正みたいですが ChangeLog だけ更新されています。 r43575 で本体もコミットされているようです。 https://github.com/ruby/ruby/pull/412

ko1:r43574 2013-11-08 03:03:12 +0900

xmalloc() などでメモリ確保する時に GC 起動のチェックに使う vm_malloc_increase() で gc_rest_sweep() を呼んで全て sweep して条件を再チェックしているところで GVL を確保済みかどうかをチェックするようにしています。 gc_rest_sweep() は GVL 確保した状態で呼ばれることを想定しているのに vm_malloc_increase() は GVL を保持していない状態で呼ばれる可能性がありまれに [BUG] による異常終了が発生する可能性があったのを修正しているそうです。 [ruby-dev:47794] [Bug #9090]

zzak:r43575 2013-11-08 03:04:05 +0900

r43573 で ChangeLog だけコミットしていた securerandom.rb の rdoc コメントの引数に nil を受け取るケースの追記をしています。

nobu:r43576 2013-11-08 03:10:33 +0900

gc.c の rb_objspace_call_finalizer() でオブジェクトの BUILTIN_TYPE() による型で分岐しているところを if-else if から switch 文に変更しています。

nobu:r43577 2013-11-08 03:11:38 +0900

標準ライブラリ Logger のテストでテスト時にできるローテートされたログファイルも後始末時に削除するようにしています。

glass:r43578 2013-11-08 10:52:07 +0900

Enumerator#inspect で利用する append_method() や Enumerator::Lazy 用の関数 lazy_init_iterator() などの関数で RARRAY_PTR() を利用していたところを参照するだけなので RARRAY_CONST_PTR() を利用するようにして shady 化を防いでいます。

glass:r43579 2013-11-08 11:00:35 +0900

compile.c でも RARRAY_PTR() を利用していたところを RARRAY_CONST_PTR() を利用するように変更しています。

glass:r43580 2013-11-08 11:37:47 +0900

dir.c, pack.c, ruby.c, struct.c, vm_eval.c でも配列のバッファを参照するだけの時に RARRAY_PTR() から RARRAY_CONST_PTR() を利用するように変更しています。

glass:r43581 2013-11-08 13:30:40 +0900

io.c の open_key_args() でも RARRAY_PTR() のかわりに RARRAY_CONST_PTR() を利用するようにしています。またその影響でいくつかの関数の宣言の引数に const 修飾子を付加しています。

glass:r43582 2013-11-08 18:41:55 +0900

標準添付ライブラリ open3.rb で rest 引数を使って引数の解釈をがんばっていたところをキーワード引数やキーワード rest 引数を利用して簡単に書くようにリファクタリングしています。