ruby-trunk-changes r65955 - r65972

今日は Windows で pipe もデフォルト non-blocking にしないように戻す変更や将来の Unicode 11.0.0 のための準備の変更などがありました。

duerst: r65955 2018-11-24 21:10:25 +0900

String#each_grapheme_cluster のテストを追加しています。 [ruby-core:90031] [Bug #15337]

naruse: r65956 2018-11-24 21:26:07 +0900

String#each_grapheme_cluster などで yield する文字列を rb_str_subseq() を使って作るようにしています。taint フラグを伝播させるためらしい。 r65954 の変更の再修正とのことだけどどう影響しているのかぱっと見だとわかりませんね。

svn: r65957 2018-11-24 21:26:11 +0900

r65956 のインデントのタブを空白に展開。

duerst: r65958 2018-11-24 21:33:10 +0900

r65955 で追加された String#each_grapheme_cluster のテストで CR+LF の改行コードの扱いのために例外処理していたところが r65954 で修正済みだったので削除しています。 [ruby-core:90031] [Bug #15337]

nobu: r65959 2018-11-24 21:48:56 +0900

r65956 で修正した String#each_grapheme_cluster が yield する各要素に taint フラグが伝播することをチェックするテストを追加しています。

odaira: r65960 2018-11-25 04:54:32 +0900

r65767 で ruby.imp に MJIT_FUNC_EXPORTED がついている関数も追加するようにしてましたが AIXgrep が -A オプションをサポートしていないそうなのでこれを使わないように for と cut コマンドと組み合わせるように書き換えています。

svn: r65961 2018-11-25 04:54:35 +0900

version.h の日付更新。

normal: r65962 2018-11-25 04:59:51 +0900

r65922 の pipe と socket の fd のデフォルト non-blocking 化に関連して Windows では r65929 で socket はデフォルト non-blocking にするのをやめましたが、pipe もうまくいかないみたいで無効にしています。 [ruby-core:90042] [ruby-core:90044] [Bug #14968]

hsbt: r65963 2018-11-25 10:20:00 +0900

bin/ サブディレクトリ化にあるコマンド用のファイルを rubygems が生成した binstub ファイル? っていう形式のものに変更しています。こうしないと gem パッケージからインストールした時に不一致がおきるためとのこと。 https://github.com/ruby/ruby/pull/2023 [ruby-core:38257] [Bug #5060]

svn: r65964 2018-11-25 10:20:06 +0900

r65963 の新規追加ファイルの svn property 設定。

nobu: r65965 2018-11-25 12:36:09 +0900

標準添付ライブラリ un.rb の httpd サブコマンドの時のオプションに ServerName と ServerSoftware を指定するものを増やしています。

nobu: r65966 2018-11-25 12:36:10 +0900

variable.c の global_id() でスタックにメモリ領域を確保するのに ALLOCA_N() を使っていたのを ALLOCV_N() を使ってサイズが大きい時はヒープから確保するようにしています。

nobu: r65967 2018-11-25 13:05:09 +0900

variable.c の rb_global_entry() から rb_global_tbl から lookup する部分を rb_find_global_entry() という関数に切り出して、これを使いまわすのかと思いきやこれは関係なくて find_global_id() というグーバル変数名が ID として登録済みかの確認だけする関数を追加して rb_gv_get() でまずこれでチェックだけして未定義なら警告を出力して Qnil を返すようにして、不要な ID 定義を追加しないようにしています。

nobu: r65968 2018-11-25 15:07:28 +0900

NEWS ファイルのマークアップの修正のみ。

nobu: r65969 2018-11-25 17:31:40 +0900

ParseError 発生時に予約語は keyword_xxxx のような内部的な token 名で表示されていたのをそれぞれ自然な文字列で表示するようにしています。 https://github.com/ruby/ruby/pull/2011

nobu: r65970 2018-11-25 17:32:52 +0900

tool/vcs.rb で ChangeLog ファイルをコミットログから生成するときに svn と git のログの違いを吸収するようにしています。 空行の削除や行数のカウントの変更など。

duerst: r65971 2018-11-25 19:12:45 +0900

enc/unicode.c で小文字の文字に ONIGENC_CASE_TITLECASE フラグがついているというケースも対応するようにしています。これは Unicode 11.0.0 で追加される Georgian Mtavruli という文字群(グルジアジョージアの文字?)で大文字小文字の区別がちょっと特殊な扱いが必要になるのに対応するためみたいです。

duerst: r65972 2018-11-25 20:02:41 +0900

regparse.c の node_extended_grapheme_cluster() から共通部分を create_property_node() という関数に切り出すリファクタリング