ruby-trunk-changes r65973 - r65990

今日は Object#=~ メソッドの deprecate 化などがありました。

yui-knk: r65973 2018-11-25 21:31:35 +0900

undef 文に複数引数があった時の引数の Node NODE_UNDEF の位置情報を修正しています。

naruse: r65974 2018-11-26 01:23:18 +0900

Time.local などで day が月の最大の日を超えていた時に自動的に次の月に修正する処理を time_arg() に入れています。この挙動は変更前にも存在しますがチケットを読むと 2038年の UNIX Time で 32bit を超えるところでうるう日の判定? がおかしくなっていたみたいです。 [ruby-core:90060] [Bug #15340]

svn: r65975 2018-11-26 01:23:20 +0900

version.h の日付更新。

duerst: r65976 2018-11-26 08:16:18 +0900

common.mk の Unicode の絵文字用にダウンロードするデータファイルに emoji-sequences.txt、emoji-test.txt、emoji-variation-sequences.txt、emoji-zwj-sequences.txt などを追加しています。これも grapheme clusters 関連のテストで使う予定とのこと。

hsbt: r65977 2018-11-26 10:23:06 +0900

r65963 の bin/ や libexec/ のファイル群の更新に伴なって tool/sync_default_gems.rb で掃除するファイルも libexec/ 配下のものを消すように修正しています。

hsbt: r65978 2018-11-26 10:43:02 +0900

r65977 に続いて tool/sync_default_gems.rb で bundler の更新時にコマンドファイルを bin/ でなく libexec/ にコピーするようにしています。

hsbt: r65979 2018-11-26 10:54:53 +0900

r65509 の bundler の添付で追加された bin/bundler_ruby を削除しています。 Bundler 1.0.2 には存在しないとのこと。 去年の r59779 の bundler の添付での後も r59997 で bin/bundler_ruby が削除されてましたね。 [ruby-dev:50663] [Bug #15291]

shyouhei: r65980 2018-11-26 11:21:25 +0900

.travis.yml の build matrix の MSAN という名前のものに cflags に -fsanitize-memory-track-origins=2 -fno-omit-frame-pointer を optflags に -O1 を追加し configure 時に --with-out-ext=openssl で openssl の拡張ライブラリはビルドしないようにしています。

kazu: r65981 2018-11-26 11:31:46 +0900

標準添付ライブラリ un.rb の httpd サブコマンドの rdoc 用コメントに r65965 で追加したオプションについて追記しています。

shyouhei: r65982 2018-11-26 11:46:50 +0900

.travis.yml の warnflags の設定に bash 依存があったみたいでそれを避けるようにしています。

nobu: r65983 2018-11-26 12:47:47 +0900

r65960 で common.mk の ruby.imp の生成コマンドで AIX 向けに for 文使うように書き換えてましたが sed を使うように再度書き換えています。

mame: r65984 2018-11-26 14:29:45 +0900

標準添付ライブラリ webrickWEBrick::HTTPResponse の #[]= メソッドでヘッダの値として数値をそのまま入れていることろがあったのを、明示的に to_s で文字列化してから入れるようにしています。これは Object#=~ を削除しようという変更の準備で、これまでは =~ の左が数値でも自動的に Regexp#=~ に委譲されて期待されたように動いてたのですが、これが動かなくなるのでちゃんと文字列を入れるようにしたとのこと。 [ruby-core:89438] [Feature #15231]

mame: r65985 2018-11-26 14:32:50 +0900

これも Object#=~ 削除の準備で標準添付ライブラリ rdoc で変数を左辺値に置いた =~ メソッド呼び出しがあったのを削除しています。ここは消すだけでいいのかな? と思ったけどコメントによると変数には Array が入っているため、そもそも =~ が nil を返していて分岐の意味がなかったみたいです。もしかすると本来の意図は別にあるのかもしれないけど、とりあえず今の挙動と同じになるように分岐だけ消しています。なるほどこうみると Object#=~ でなんとなく無視されてしまう間違いというのが結構ありそうですね。 [ruby-core:89438] [Feature #15231]

mame: r65986 2018-11-26 14:46:02 +0900

標準添付ライブラリ rdoc のテストで RDoc::Option の exclude という属性は実行状況に応じて Array か nilRegexp が入るそうで、テストによっては finish が呼ばれた後であるようにエミュレートするため明示的に nil を入れるようにしています。これもたぶん Object#=~ の存在でなんとなく動いてたのをこれに頼らいようにするためです。 [ruby-core:89438] [Feature #15231]

mame: r65987 2018-11-26 14:46:24 +0900

rubygems でも Object#=~ を使う可能性があるコードがあったけど、結果を使ってない無意味なコードだったので単に削除しています。 [ruby-core:89438] [Feature #15231]

mame: r65988 2018-11-26 16:13:53 +0900

rubygems で他にも Object#=~ に依存していたところを、String かどうかのチェックつきに修正しています。 [ruby-core:89438] [Feature #15231]

mame: r65989 2018-11-26 16:55:07 +0900

Object#=~ を deprecate にしています。既にみてきたように Object#=~ はなんとなく動いて便利なんですが、ミスを遮蔽してしまうことも多いので deprecate にして、nil の場合は動くように NilClass#=~ を追加しています。 [ruby-core:89438] [Feature #15231]

duerst: r65990 2018-11-26 18:03:11 +0900

Encoding 関係のテストに複数の codepoint の連続で 1つの絵文字になるような絵文字を String#each_grapheme_cluster で分割したテストを追加しています。 r65976 でダウンロードするようにした emoji-test.txt などのデータファイルを使うようにしています。一度 make update-unicode-property-files で明示的にダウンロードしないと自動では落とさないようですけどね(テスト用なので)。 [ruby-core:90073] [Bug #15343]