ruby-trunk-changes r39735 - r39746

今日は必須キーワード引数や GC のパラメータの環境変数での調節などの新機能の追加や prepend に関する不具合修正などがありました。

nobu:r39735 2013-03-12 22:20:50 +0900

2.0 で追加されたキーワード引数は省略時のデフォルト値というのを定義することで常に省略可能になっているのですが、省略不可能なキーワード引数というのを定義できるようにしています。

def m(a, k1: k2:)
  [a, k1, k2]
end

のようにキーワード引数の ":" の後にデフォルト値を省略すると必須キーワード引数になるようです。さてこれは 2.0.0 ではどうしましょうかねぇ。ささださんが指摘しているように僅かな文法の非互換がありますが、2.0.0 もまだ p0 なのでまだインパクトは大きくないでしょうけど。 [ruby-core:51454] [Feature #7701]
AST を作る時にデフォルト値なしのキーワード引数のデフォルト値部分を (NODE*)-1 にすることで表現しているみたいなんですけど、これは NULL ではだめなんでしょうか。arg_value をみると値がない時でも NODE_NIL のノードが入りそうですけど。
あと iseq_set_arguments() で VALUE 型の required を 0 で初期化してたのが少し気になりました。必要になった時に Array を生成して代入しているので動作に問題はないと思いますけど。
あと NEWS ファイル、と思いましたが 2.0.0 に入れるとしたら NEWS ファイルはどうするんだろう……。

drbrain:r39736 2013-03-13 05:49:44 +0900

lib/irb.rb のコメントの typo 修正。

svn:r39737 2013-03-13 05:49:48 +0900

version.h の日付更新。

nobu:r39738 2013-03-13 11:09:18 +0900

make uninstall を実行する tool/rbuninstall.rb で、ディレクトリに対する symbolic link がパスの最後に "/" が付いていると file.symlink? でリンク先のディレクトリの判定になって false を返すのを回避しています。余計に消し過ぎてたとかでしょうか。

shugo:r39739 2013-03-13 11:43:09 +0900

refinements のかつての機能のひとつで using が呼ばれた時のフックメソッドの Module#used を削除しています。 [ruby-core:52719] [Bug #7916]

nobu:r39740 2013-03-13 11:58:52 +0900

Windows 版での File.expand_path の再修正で r39697, r39701, および r39716 あたりの続き。
テストでルートディレクトリとしてドライブレターを含んだ文字列を使うようにしています。 [ruby-core:53354] [Bug #8034]

nobu:r39741 2013-03-13 13:06:47 +0900

configure で local 変数を使っていてそれが ksh では動かないという問題を修正しています。 bash 依存してしまっていたようです。 [Bug #7959] [ruby-core:53293] [Bug #8071]

nobu:r39742 2013-03-13 14:51:29 +0900

標準添付ライブラリの test/unit の Test::Unit::Assertion#assert_respond_to で第2引数のメソッドの指定のところに配列で private のフラグを渡して Object#respond_to? のチェックする時の第2引数に指定することができるようにしています。

nobu:r39743 2013-03-13 14:51:32 +0900

Module#prepend で Module を prepend した後でメソッドを private/protected などで可視性を変更するとそのメソッドが呼べなくなる(NoMethodError になる)不具合を修正。 [ruby-core:53106] [Bug #8005]
可視性変更時にメソッドが定義されているクラスを特定する時に prepend でメソッドエントリを移植された IClass も対象にするようにしています。 [ruby-core:53106] [Bug #8005]

nobu:r39744 2013-03-13 15:13:08 +0900

特異クラスに prepend すると Object#methods(false) で特異メソッドがかえってこなくなるのを修正しています。 [ruby-core:53207] [Bug #8044]

kazu:r39745 2013-03-13 19:50:21 +0900

lib/irb.rb のコメント及び拡張ライブラリ tk のドキュメントの typo を修正しています。

nari:r39746 2013-03-13 23:52:00 +0900

GC のヒープを追加するたびに徐々にサイズを大きくして確保するようにする時のパラメータを RUBY_HEAP_SLOTS_GROWTH_FACTOR という環境変数で起動時に指定しておくと変更できるようにする機能を追加しています。 NEWS ファイルにも追記が欲しいですね。 [ruby-core:53131] [Feature #8015]