ruby-trunk-changes r62873 - r62897

今日は昨日に続きインデント除去つきヒアドキュメントで行継続した時の不具合修正や、String#each_grapheme_cluster が返す Enumerator の size メソッドの不具合修正、Exception#full_message のキーワード引数追加などの変更がありました。

nobu: r62873 2018-03-21 21:40:16 +0900

r62872 のインデント除去つきヒアドキュメント修正の続き。 行継続した次の行が終了トークンだった時に SyntaxError にするようにしています。 [ruby-core:86283] [Bug #14621]

nobu: r62878 2018-03-22 00:46:15 +0900

Proc#binding の rdoc 用コメントから Kernel#eval が第2引数として Proc を受け取れるという廃止された仕様への言及を削除しています。 https://github.com/ruby/ruby/pull/1843

svn: r62879 2018-03-22 00:46:16 +0900

version.h の日付更新。

nobu: r62881 2018-03-22 01:02:26 +0900

String#split の rdoc 用コメントで引数の pattern に空白文字1つが指定された時の特別処理について終端空白があった時の挙動についても明記するようにしています。 https://github.com/ruby/ruby/pull/1845

nobu: r62882 2018-03-22 01:03:59 +0900

標準添付ライブラリ uriURI#hierarchical? というメソッドの rdoc 用コメントに説明やサンプルを追加しています。テストも追加しています。 おお、こんなメソッド知らなかった。 https://github.com/ruby/ruby/pull/1846

nobu: r62887 2018-03-22 15:47:53 +0900

parse.y でキーワード引数のデフォルト値つきのやつと必須のやつをローカル変数テーブル内のインデックスの順序を調整しているところで、struct vtable を2つ作って後でマージしていたのを、一旦 linked list を舐めて必須キーワード引数と通常のキーワード引数の数を数えておいてから最初から目的の struct vtable に詰めていくように最適化しています。

naruse: r62888 2018-03-22 15:59:54 +0900

String#each_grapheme_cluster にブロックを渡さずに呼び出してできた Enumerator に Enumerator#size メソッドを呼ぶと本来のではなく each_char と同じサイズが返されてたのを修正しています。とりあえず nil を返すようにしています。 [ruby-core:84887] [Bug #14363]

naruse: r62891 2018-03-22 16:58:37 +0900

r62888 の String#each_grapheme_cluster の Enumerator#size の変更を revert しています。 [ruby-core:84887] [Bug #14363]

naruse: r62892 2018-03-22 16:58:38 +0900

r62888 の続きで String#each_grapheme_cluster が返す Enumerator の size メソッドで、専用の rb_str_each_grapheme_cluster_size() という関数を追加して to_a.size したのと同じ結果を返すようにしています。 [ruby-core:84887] [Bug #14363]

naruse: r62893 2018-03-22 16:58:39 +0900

r62892 で追加した rb_str_each_grapheme_cluster_size() から、grapheme cluster を切り出すための正規表現を作る部分を get_reg_grapheme_cluster() として切り出すリファクタリング

nobu: r62894 2018-03-22 17:26:23 +0900

Exception#full_message でバックトレースつきの例外メッセージを得る時にキーワード引数 highlight と reverse を追加して、ハイライト用のエスケープシーケンスを含めるかどうかと、バックトレースの順序を反転するかどうかを指定できるようにしています。 さらについでに(?) Exception.to_tty? という標準エラー出力が端末かどうか(捕捉されない例外のバックトレースの向きやハイライトの有無に影響する)を判定するメソッドが追加されています。 [ruby-core:84676] [Bug #14324]

naruse: r62897 2018-03-22 20:20:03 +0900

"Now URI is normally UTF-8" とのことで標準添付ライブラリ uriURI::RFC2396_Parser#unescape で元の文字列の Encoding が US-ASCII だったら pack した結果は UTF-8 に変換するようにしています。 Rails で行なわれてた monkey patch を本体に取り込んだみたいです。 https://github.com/rails/rails/issues/32294