ruby-trunk-changes r38657 - r38661

今日はブロックパラメータにもキーワード引数が使えるようになりました。

ktsj:r38657 2012-12-30 11:06:28 +0900

ブロックパラメータにもキーワード引数を渡せるようにしています。というか文法的には既に受け付けられるようになっていて(なってしまっていた?)、実際に渡そうとすると SEGV など不正メモリアクセスが発生するという状態だったのでそれを修正しています。 vm_callee_setup_arg_complex() からキーワード引数の処理を切り出してブロックパラメータを用意する vm_yield_setup_block_args() でも再利用しています。 [ruby-core:51172] [Bug #7630]

ktsj:r38658 2012-12-30 11:06:32 +0900

2.0 から導入されたキーワード引数ですが実はキーワード引数を持つメソッドに通常の引数の最後のものに Hash を渡したうえでキーワード引数の指定を省略した呼び出しをすると ArgumentError になる(ハッシュがキーワード引数の指定だと解釈されてしまって必要な引数が足りなくなってしまう)のですが、これは残念ながら仕様とのこと。この仕様を明示するテストケースを追加しています。 [ruby-dev:46712] [Bug #7529]

svn:r38659 2012-12-30 11:06:35 +0900

version.h の日付更新。

charliesome:r38660 2012-12-30 12:11:17 +0900

crt_externs.h の存在チェックをする configure.in の AC_CHECK_HEADERS() に第4引数の includes に #include directive を明示的に指定するようにしています。 autoconf のドキュメントを読むと preprocessor によるチェックと compiler によるチェックの両方を行なって、両者が食い違う場合デフォルトではコンパイラの結果を優先するとあります。コミットログにも compiler の結果を利用するようにするとあるので指定する意味があるのかどうかよくわかりませんが。 (参考URL: http://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Generic-Headers.html )

nobu:r38661 2012-12-30 21:57:25 +0900

Mac OS X (Lion) でビルド時に拡張ライブラリのビルドでディレクトリ間の移動に失敗する対処として Makefile.in に CDPATH 変数の初期化を追加しています。 CDPATH は make の特有の環境変数ではなくて多分シェルの機能で複数のパスをセミコロンで連結して指定でき、cd で移動する時に CDPATH に含まれるパスからの相対パスとして解釈できたらそこに移動してしまうといういかにもヤバそうな機能があるらしく、おそらくそれが指定されていたためにおかしな移動をしてしまっていたのでそれを抑制するために明示的にカレントディレクトリ(".")にリセットしているのだと思います。 (参考URL: http://stackoverflow.com/questions/12885548/unable-to-build-ruby-1-9-3-on-lion)