ruby-trunk-changes r62742 - r62748

今日は ripper の不具合修正などがありました。

k0kubun: r62742 2018-03-13 21:32:31 +0900

r62741 で comment_id() の中身を無効にするため定数マクロとその分岐を追加してましたが、#ifdef で分岐してたのでマクロ定義してしまうと無効になってなかったので、マクロ定義自体を削除しています。

k0kubun: r62743 2018-03-13 21:56:04 +0900

拡張ライブラリ ripper の ext/ripper/lib/ripper/lexer.rb に magic comment の frozen_string_literal: true があるので文字列リテラルが freeze されていて FrozenError が発生することがあるので String#+@ を使って dup しておくようにしています。 https://github.com/ruby/ruby/pull/1837

k0kubun: r62744 2018-03-13 22:03:12 +0900

r62743 の修正に対応する ripper のテストを追加しています。

kazu: r62745 2018-03-14 00:10:59 +0900

r62739 で追加した FileUtils.cp_lr の rdoc 用コメントの typo 修正。

svn: r62746 2018-03-14 00:11:00 +0900

version.h の日付更新。

nobu: r62747 2018-03-14 11:35:51 +0900

snprintf などの実装に使われる指示子をカスタマイズする ruby__sfvextra() という関数で Symbol の時に NUL 文字や non-printable な文字、記号などを含まない識別子のような文字列で表現できないものの場合(まあつまりは :sym みたいなリテラルで表現する時に :"a b" のようにクオートが必要かどうかという判定かと思います)クオート付きの文字列にするようにしています。

nobu: r62748 2018-03-14 20:55:07 +0900

標準添付ライブラリ weakref の WeakMap のテストでオブジェクトを GC させるために深くネストした frame の底でオブジェクトを確保しておく処理を assert_weak_include というメソッドに切り出して再帰呼び出しするようにしています。確かこれって昔は深く再帰するように書いてたけど、なにかの理由(たぶん一部の CI 環境でスタックが足りなかったとか)で浅くしたんだったような気が。と思って検索したけどみあたらないので記憶違いかなぁ。