ruby-trunk-changes r43886 - r43903

今日は昨日の Hash#keys に続いて Hash#values の高速化、fstring が回収されてしまう可能性があった不具合修正などがありました。

glass:r43886 2013-11-28 01:36:44 +0900

r43885 の Hash#keys の高速化のための変更時にハッシュサイズを int 型の変数で受けていたので st_index_t 型に修正しています。

ko1:r43887 2013-11-28 09:22:45 +0900

文字列リテラルなどで共有化された freeze 文字列を返す rb_fstring() で共有化された文字列はコピーを生成して利用するようにしています。 rb_gc_resurrect() で解放予定のオブジェクトを一時的に延命した文字列がくる可能性があって、それを登録してしまうと解放されたオブジェクトを fstring として使ってしまう不具合があったそうです。

nobu:r43888 2013-11-28 13:56:08 +0900

make Doxyfile で生成した Doxyfile 内で利用する ruby を $(MINIRUBY) から $(BASERUBY) に変更しています。 r43617 で tool/file2lastrev.rb を実行するのに拡張ライブラリが必要になってしまったので miniruby では実行できなくなってしまったようです。 2.0.0-p353 の前でツールの変更をしてデグレしてしまってましたね。 [ruby-dev:47823] [Bug #9169]

a_matsuda:r43889 2013-11-28 14:44:29 +0900

標準添付ライブラリ drb の DRb::DRbSSLSocket の rdoc 用コメントの typo 修正。

nobu:r43890 2013-11-28 16:15:56 +0900

Windows 版用の dup2() の実装を io.c の rb_cloecxec_dup2() に直接条件コンパイルで書かれていたのを win32/win32.c に切り出して Windows 版でも dup2() が呼べるようにしています。 redirect_dup2() でのデバッグ出力が DEBUG_REDIRECT が定義されていた時だけだったのが条件がなくなっているようですけどいいんでしょうか。

nobu:r43891 2013-11-28 16:34:15 +0900

標準ライブラリ optparse.rb で正規表現と文字列の =~ 演算子でのマッチで文字列がレシーバ(左辺)になっていたのを正規表現をレシーバにするように入れ替えています。多分最近巷で流行っている =~ の左辺を Regexp にするか String にするかというブログ記事の影響で「左辺は Regexp だろう」と思ったら逆になってたのがあったのでこっそり修正という感じだと思います。

nobu:r43892 2013-11-28 16:34:18 +0900

ruby インタプリタの --copyright オプション(こんなオプションあったっけ…)で終了時に exit(3) に 0 を渡していたので EXIT_SUCCESS を渡すようにしています。実際の値は同じでしょうけど。

tmm1:r43893 2013-11-28 16:40:35 +0900

GC.stat に :last_collection_flags という項目を追加して最後の GC のトリガーや種類(major, minor)などを返すようにしています。また返された値を解釈するために GC::Profiler.decode_flags というメソッドを追加しています。ふーむなんか最初から decode したものを返しても良いような気もしますけど。

glass:r43894 2013-11-28 17:15:26 +0900

r43885 で追加した st_keys() で未使用のキーを表すための Qundef が使われていましたが st.c のなかで Qundef を使うべきではないという方針のようで、引数 never で使われることがないことがわかっている値を外から与えるように変更しています。また st_keys() ではこのキーのチェックは行なわないようにして、チェックありの st_keys_check() を追加して、hash.c からはこちらを使うように修正されています。

glass:r43895 2013-11-28 17:39:16 +0900

Hash#values の実装でも keys と同様に st.c に st_values() および st_values_check() を追加して st_table の値を配列で取得する処理を直接書いてその関数を利用するようにして高速化しています。

glass:r43896 2013-11-28 17:46:19 +0900

r43885 の ChangeLogtypo 修正。

zzak:r43897 2013-11-28 19:29:54 +0900

doc/contributing.rdoc に最近(2.0 のリリース前くらいから?)行なわれている新機能の提案で、スライドを提出して短時間のプレゼンで Matz の采配を仰ぐというイベントについて追記しています。

glass:r43898 2013-11-28 19:50:41 +0900

Hash#keys, Hash#values, Hash#flatten の性能をはかるベンチマークスクリプトを追加しています。最近行なっていた Hash#keys と Hash#values を st_table を直接操作するようにした変更の効果を測るものだと思います。 2.0.0p353 に比べて 4倍から 5倍高速になったそうです。よく使うメソッドだと思うのでけっこう効果がありそうですね。

zzak:r43899 2013-11-28 21:15:59 +0900

doc/contributing.rdoc にパッチ投稿時の注意事項(ブランチのメンテナンス状態についてやライセンスへの同意など)や好ましいパッチの作りかたなどを追記しています。 cosmetic changes を混ぜないとか異なる変更を混ぜないとかなかなかいいことが書いてありますね。

zzak:r43900 2013-11-28 21:17:11 +0900

doc/contributing.rdoc に r43899 で追加した節と繋がってしまったコーディングスタイルについての文章に Coding style のタイトル(ヘッダ?)を付けて節を分離しています。

zzak:r43901 2013-11-28 21:18:35 +0900

同じく doc/contributing.rdoc の ChangeLog の記述方法についての文章に ChangeLog というタイトル(ヘッダ)を付けています。

zzak:r43902 2013-11-28 21:44:38 +0900

doc/dtrace_probes.rdoc という DTrace の仕様についてのドキュメントを追加しています。 bugs.ruby-lang.org の Wiki にあったものを移植してきているそうです。そういえばこの Wiki の記述って今の実態に合ってるんでしょうか。あと今後はどちらが master になるんでしょうね。

a_matsuda:r43903 2013-11-28 23:36:07 +0900

lib/gserver.rb の rdoc 用コメント内の FixNum -> Fixnum の typo 修正。