ruby-trunk-changes r46486 - r46495

今日は標準添付ライブラリ uri の RFC3986 対応がありました。

akr: r46486 2014-06-22 08:43:50 +0900

bootstraptest/runner.rb で出力のインデントをそろえるための置換処理で行末の空白も除去するようにしています。

svn: r46487 2014-06-22 08:44:03 +0900

version.h の日付更新。

naruse: r46488 2014-06-22 09:21:37 +0900

標準添付ライブラリ open-uri のテストで httpsプロトコルのダミーサーバのために WEBrick を起動する時に :SSLTmpDhCallback オプションを追加しています。 警告除去のためだそうです。

naruse: r46489 2014-06-22 09:21:57 +0900

標準添付ライブラリ uri/ftpURI::FTP.new の引数の扱いが誤っていたのを修正。 *args で受け取ってメソッド内部で振り分けていたのを明示的に仮引数を書くように修正しています。

naruse: r46490 2014-06-22 09:22:15 +0900

r46489 と同様に標準添付ライブラリ uri/mailto でも URI::MailTo.new の引数の arg_check のチェックの間違いを修正しています。こっちは *args で受けとるのはそのままです。

naruse: r46491 2014-06-22 09:22:19 +0900

標準添付ライブラリ uri で RFC3986 に対応。 RFC3986 は RFC2396 に定義されていた URL および RFC2732 の IPv6 のアドレスのフォーマットの定義を更新するもので URI のフォーマットを定めているようです。 lib/uri/common.rb からパーサ部分を lib/uri/rfc2396_parser.rb に分離して、新たに lib/uri/rfc3986_parser.rb を追加してデフォルトではこの追加された RFC3986_Parser を利用するようにしているようです。 RFC3986_Parser の実装はなが〜い正規表現が2つありますがその他はシンプルで短くなっていますね。 またこれによりこれまで URI::InvalidURIError が発生していた URI もパースできるようになったためテストも一部変更されています。 [ruby-core:27360] [Feature #2542]
これで addressable.gem の Addressable::URI が不要になるかもしれませんね。

svn: r46492 2014-06-22 09:22:25 +0900

r46491 で新規追加されたファイルの svn property 設定。

naruse: r46493 2014-06-22 09:23:52 +0900

r46491 で追加した lib/uri/rfc3986_parser.rb で URI に非 ASCII 文字が含まれていたら URI::InvalidURIError を発生させるようにしています。 あれ、そうなんですね。確か Addressable::URI はこれを通すのだった気がするのでやっり微妙に違うのかも。

naruse: r46494 2014-06-22 09:24:11 +0900

標準添付ライブラリ uri の lib/uri/generic.rb から registry という未使用の属性を削除しています。

nobu: r46495 2014-06-22 10:47:14 +0900

signal.c の check_stack_overflow() で現在の Thread を取得するのに GET_THREAD() を呼んでいたのを、直接 ruby_current_thread を参照するようにしています。 ここで関数を呼ぶとさらにマシンスタックの push が行なわれてしまいデッドロックが発生するのを防ぐためとのこと。
というか GET_THREAD() ってマクロだと思ってましたが vm_core.h で inline 関数として定義されていました。ああ、r37293 で C 実装のメソッドを呼ぶ時に VM Frame を積まないようにする最適化(デフォルトでは無効になってる)のために変更されてたのでした。さすがにここまで憶えてない…。そしてこれは 2.0.0 でも 2.1 でも同様ですね。