ruby-trunk-changes r60965 - r60980

今日は正規表現エンジン Onigmo の更新、Refinements で Module を refine した時の不具合修正などがありました。

yui-knk: r60965 2017-12-01 22:40:03 +0900

for 文の NODE の位置情報を修正しています。 なんか ruby の for 文久しぶりに見た。

naruse: r60966 2017-12-01 22:50:13 +0900

正規表現エンジンの Onigmo を upstream から 6.1.3 をマージしています。 チケットによると \b を使った正規表現のマッチがうまく行なわれないという不具合の修正が含まれているようです。 [ruby-core:82760] [Bug #13892]

naruse: r60967 2017-12-01 23:08:13 +0900

r60966 で enc/shift_jis.c から切り出した enc/shift_jis.h がコミット漏れしてたので追加しています。

svn: r60968 2017-12-01 23:08:14 +0900

r60967 で新規追加された enc/shift_jis.h の svn property 設定。

naruse: r60969 2017-12-01 23:32:12 +0900

r60755 の正規表現の absent operator を使った時のマッチ範囲の不具合修正を再度適用しています。

naruse: r60970 2017-12-02 00:09:41 +0900

標準添付ライブラリ urischeme が file と postgres の URI の to_s メソッドで file:/path のように '//' が含まれていなかったのを file:///path のようになるように修正しています。慣習的にこうなるもんだと思ってましたが https://url.spec.whatwg.org/#url-serializing で明示的に file scheme については記述があるみたいです。

svn: r60971 2017-12-02 00:09:42 +0900

version.h の日付更新。

eregon: r60972 2017-12-02 00:41:23 +0900

ruby/mspec に upstream からマージしています。

eregon: r60973 2017-12-02 00:41:50 +0900

ruby/spec に upstream から最新版をマージしています。

svn: r60974 2017-12-02 00:41:52 +0900

r60973 の spec/ruby/language/fixtures/begin_file.rb でファイル末尾に改行コードがなかったので追加しています。

eregon: r60975 2017-12-02 02:51:16 +0900

ruby/spec もう一度 upstream からマージしています。 TracePont のテストで TracePoint#disable を ensure 節に移動して trace がリークするのを防いでいるようです。

nobu: r60976 2017-12-02 12:12:50 +0900

tool/enc-unicode.rb で uniname2ctype_p() や uniname2ctype_hash() の引数の size_t 型を unsigned int に変更するようにしています。コミットログによると gperf 3.1 対応だそうです。

nobu: r60977 2017-12-02 12:12:51 +0900

make update-unicode-property-files でダウンロードする Unicode のデータファイルに emoji-data.txt を追加しています。また casefold.h を gperf 3.1 を使って再生成しているみたいです。

nobu: r60978 2017-12-02 12:16:01 +0900

r60977 で make update-unicode-property-files で emoji-data.txt のダウンロード時に表示するメッセージの version を $(UNICODE_VERSION) から $(UNICODE_EMOJI_VERSION) に変更しています。

nobu: r60979 2017-12-02 16:09:16 +0900

rb_external_str_new_with_enc() で Ruby の管理していないメモリ領域をバッファとして持つ String オブジェクトを生成する時に、ptr が NULL だったら rb_tainted_str_new_with_enc() を使って普通の文字列オブジェクトを生成するようにしています。バッファ領域が NULL だったら特別扱いする必要はないし search_nonascii() を呼ぶと SEGV してしまうため。 [ruby-core:84055] [Bug #14150]

shugo: r60980 2017-12-02 19:54:39 +0900

Module#refine でモジュールに対する refinements を定義した時にその Module や include したクラスが GC で解放される時に SEGV など異常終了が起きる不具合を修正。 Module#refine で引数の klass が Module だった時に RCLASS_SET_SUPER() のかわりに rb_include_module() で Module#include 相当の処理をするようにしています。うーん Refinements 難しい。 [ruby-core:83617] [Bug #14070]