ruby-trunk-changes r36367 - r36374

今日は Net::HTTP にローカルのアドレス/ポートを指定する機能が追加されました。

naruse:r36367 2012-07-12 03:37:18 +0900

Net::HTTP に local_host=, local_port= というメソッドを追加して、ソケットで接続する時に bind(2) を使ってローカル側のアドレス、ポート番号を指定できるようにしています。TCPSocket.open の第3、4引数に local_host と local_port が指定できるのでそこに渡すようにしています。 [Feature #6617]

svn:r36368 2012-07-12 03:37:22 +0900

version.h の日付更新。

nobu:r36369 2012-07-12 05:11:45 +0900

defined? のための YARV の命令で super の定義の有無を判定するために、コンパイルされた iseq の中に格納されている method entry テーブルを見るのではなくて cfp のものを見るようにしています。define_method で定義されたメソッドの場合 iseq に埋め込まれている情報は静的に決まってしまうので同じコードで別のメソッドが定義できる define_method を使った場合この情報を使うと期待と異なる結果になります。これも define_method で定義したメソッドの defined?(super) の結果がおかしくなるという現象の修正です。 [ruby-core:45831] [Bug #6644]
似たようなチケットがあったような気が。

ryan:r36370 2012-07-12 08:52:04 +0900

minitest 3.2.0 をマージしています。MiniTest::Mock#call というメソッドを __call に改名しています。また MiniTest::Unit#out という deprecated だったメソッドを削除しています。かわりに output を使うようです。あと RUBY_VERSION が 1.9 以上の時という分岐を削っているところを見ると 1.8 対応をやめているようです。

naruse:r36371 2012-07-12 10:27:42 +0900

Net::HTTP の local_host のテストでローカルアドレスを探す時に接続先が IPv4(127.0.0.1) なのでローカル側も IPv4 のアドレスを探すようにしています。

usa:r36372 2012-07-12 10:48:23 +0900

Windows では Net::HTTP のローカルアドレス/ポートの指定ができないのでテストを skip しています。 というのは間違いで、ローカルアドレス指定はできるのですが 127.0.0.1 に接続するためにローカルアドレスに外向きのアドレスを選択してしまうと接続できないので skip しているということでした。

nobu:r36373 2012-07-12 11:44:27 +0900

String#dup で文字列を複製する時に CoW 戦略を取っていて実際にコピーが必要になるまで複製を遅延していますが、TAINTED と UNTRUSTED のフラグのチェックが不完全で意図せず tainted な文字列になってしまう場合があったのを修正しています。[ruby-core:39745] [Bug #5374]

nobu:r36374 2012-07-12 12:32:28 +0900

test/runner.rb でビルドディレクトリで make test した時にインストール済みの gems を読んでしまい同梱されている gems パッケージが反映されなくなってしまうのを防ぐため GEM_SKIP 環境変数をセットしています。