ruby-trunk-changes r59693 - r59705

今日は標準添付ライブラリ net/http の不具合修正、String#grapheme_clusters などの書記素クラスタ毎に分割するメソッドの追加、File#path で TMPFILE フラグの指定つきで open されていた時の仕様変更などがありました。

naruse: r59693 2017-08-31 02:24:05 +0900

標準添付ライブラリ net/http の Net::HTTP#add_field などでヘッダ名に改行が入っているとそこから次のヘッダになってしまう不具合を修正しています。 ArgumentError 例外を発生させるようにしています。

svn: r59694 2017-08-31 02:24:05 +0900

version.h の日付更新。

ko1: r59695 2017-08-31 07:23:45 +0900

r59693 で追加した Net::HTTP::Header#set_field で文字列化に to_str を使っていたのを、より存在する可能性が高い to_s を呼ぶように変更しています。

kazu: r59696 2017-08-31 09:05:29 +0900

doc/globals.rdoc に特殊グローバル変数 $= の説明を、もう効果がないという内容に変更しています。

nobu: r59697 2017-08-31 12:06:05 +0900

return 文の parse についてのテストで all_assertions のかわりに all_assertions_foreach を、assert_ruby_status のかわりに assert_in_out_err を使うようにリファクタリングしています。

naruse: r59698 2017-08-31 15:35:28 +0900

String#each_grapheme_cluster と String#grapheme_clusters というメソッドを新規追加しています、これは文字列を文字(書記素クラスタ)ごとに分割して yield したり配列を返したりするメソッドですが、chars は codepoint 毎に分割されるけど UTF-8 (Unicode?)では複数の文字を結合して1つの文字にしたりする場合があるので、そのひとまとまり(書記素クラスタ)を一緒にするように分けるためのものだそうです。絵文字の扱いがうまくできるようになるのかな。 [ruby-core:82233] [Feature #13780]

nobu: r59699 2017-08-31 17:04:49 +0900

r59697 でリファクタリングした return 文の parse のテストで子プロセスを起動する時のオプションに -W0 を渡して警告を抑制するようにしています。

nobu: r59700 2017-08-31 17:07:59 +0900

r59698 のインデント修正のみ。 [ruby-core:82233] [Feature #13780]

nobu: r59701 2017-08-31 17:21:46 +0900

io.c の io_setstrbuf() で戻り値の型を void から int に変更して新規の String オブジェクトを確保した時に TRUE を返すようにして、呼び元で capacity が大きすぎたら capacity を必要なサイズに縮めるようにしています。 [ruby-core:81370] [Bug #13597]

naruse: r59702 2017-08-31 17:29:38 +0900

拡張ライブラリ socket の Socket::Ifaddr に vhid というメソッドを追加しています。これはその環境の struct if_data に ifi_vhid というメンバーが存在する時だけ定義されます。 Virtual Host ID の略みたいですね。 [ruby-core:82336] [Feature #13803]

naruse: r59703 2017-08-31 17:33:35 +0900

NEWS ファイルに r59702 で追加した Socket::Ifaddr#vhid について追記しています。

sorah: r59704 2017-08-31 20:14:36 +0900

File::TMPFILE フラグを指定して開いた時の File オブジェクトの File#path は実際に開いているファイルに対応しない(環境によって開いたファイルは既に unlink(2) された状態になるので)、という問題のため File#path は O_TMPFILE を指定して開かれていた時には例外を発生させるように変更しています。 r58734 でとりあえず rdoc 用コメントでは言及していましたが仕様変更することになったようです。 [ruby-core:81164] [Feature #13568]

sorah: r59705 2017-08-31 20:22:15 +0900

r59704 の File#path の仕様変更について NEWS ファイルに追記しています。