ruby-trunk-changes r51969 - r51984

今日は式の埋め込みつきの文字列リテラルの扱いの修正などがありました。

nobu: r51969 2015-09-29 09:21:10 +0900

r51968 で追加した benchmark スクリプトのファイル名を変更して、書きかたも 1行に詰めこんで書いてたのを普通の書きかたにしています。

nobu: r51970 2015-09-29 16:37:40 +0900

文字列リテラル内の #{} による埋め込みなどで用いられる VM の命令 concatstrings で Encoding の処理を変更して後の文字列の Encoding が US-ASCII 以外で前の文字列の Encoding が US-ASCII だったら後の文字列の Encoding を保持するようにしています。また "#{}" のように文字列リテラルの先頭に埋め込みがあった場合に先頭の空文字列を作らないように最適化しています。 [ruby-core:70930] [Bug #11556]
r51820 で先頭に埋め込みがあった時に script encoding にならなかった問題を修正するために先頭の空文字を入れるようにしたのをやめて、後の文字列の Encoding を優先するようにしたということですかね。

duerst: r51971 2015-09-29 16:54:05 +0900

tool/unicode_norm_gen.tmpl と lib/unicode_normalize/tables.rb で文字列リテラルに .freeze を呼び出していたところを r51953 で導入された magic comment の frozen_string_literal: true を指定することでおきかえています。

nobu: r51972 2015-09-29 17:00:36 +0900

r51971 の magic comment の emacs 用の marker を修正しています。

nobu: r51973 2015-09-29 17:03:12 +0900

benchmark/bm_vm3_gc.rb から1行目の shebang を削っています。

nobu: r51979 2015-09-29 21:13:30 +0900

parse.y の parser_mark() で struct parser_params::compile_option を mark するようにしています。 r51953 の frozen_string_literal pragma の導入時に導入された時に mark が漏れていたようです。

eregon: r51980 2015-09-29 22:29:44 +0900

parse.y の for 文の規則のところのコメントの typo (かっこの閉じ忘れ)を修正しています。 https://github.com/ruby/ruby/pull/1038

nobu: r51981 2015-09-30 01:34:37 +0900

parse.y で struct parser の解放処理で token_info が解放漏れしていたのを修正しています。

svn: r51982 2015-09-30 01:36:57 +0900

version.h の日付更新。

nobu: r51983 2015-09-30 01:38:02 +0900

parse.y で token を切り出した時にその長さを token_info_push() や token_info_pop() に渡すようにして strlen() で長さを再計算するのを省いています。

nobu: r51984 2015-09-30 01:47:13 +0900

r51983 の追加修正。 token_info_pop() で indent のずれの警告を出すために token_info_get_column() や token_info_has_nonspaces() で情報を取得するのを parser->token_info_enabled のチェック後にして不要なチェックを省くようにしているみたいです。