ruby-trunk-changes r46421 - r46430

今日は Array#permutation, #repeated_permutation, #repeated_combination などの実装に再帰を利用しないようにするリファクタリングなどがありました。

zzak: r46421 2014-06-14 08:30:20 +0900

man/rake.1 の rubyforge のリンクをまとめて GitHubruby/rake へのリンクへおきかえています。 [ruby-core:62942] [Bug #9904] https://github.com/ruby/ruby/pull/628

svn: r46422 2014-06-14 08:30:25 +0900

version.h の日付更新。

zzak: r46423 2014-06-14 08:42:35 +0900

CONTRIBUTING.md の英文法の修正。

nobu: r46424 2014-06-14 10:53:32 +0900

r46413 で(r46408 からの続き) rb_str_resize() でバッファサイズを切り詰めるときに実際に realloc() を呼んだかどうかにかかわらず capa を len にそろえていたので、REALLOC_N() を呼んだ時だけ capa を更新するように修正しています。

nobu: r46425 2014-06-14 10:54:33 +0900

array.c で rb_ary_combination() から [-1, 0, 1, 2, ...] の stack を作って yield_indexed_values() を呼び出す処理(ってこれ stack[0] は -1 で開始なのか。よく読まないとわからないな…)を combinate0() として関数に切り出すリファクタリング

nobu: r46426 2014-06-14 10:54:45 +0900

Array#permutation の実装で再帰を使わずループで実装することで大きな引数を受け取ったときに SystemStackError になることを防いでいます。しかしこのテスト時間かかりそう…いやブロック付きで呼び出して最初の1回目で break しているのですぐ終わるのか。 [ruby-core:63103] [Bug #9932]

nobu: r46427 2014-06-14 10:55:07 +0900

Array#repeated_permutation の実装でも再帰を使わずループで実装するように変更しています。

nobu: r46428 2014-06-14 10:55:25 +0900

Array#repeated_combination の実装も再帰を使うものからループを使うものに変更されています。

akr: r46429 2014-06-14 12:47:05 +0900

r46419 の ChangeLog エントリの typo 修正。

akr: r46430 2014-06-14 22:52:04 +0900

標準添付ライブラリ rssRSS::Maker::SetupDefaultDate#_set_default_values で self.date を上書きした後で ensure 節で書き戻す時に self.date= を使うべきところで date ローカル変数への代入になっていたため復帰できていなかったのを修正しています。