ruby-trunk-changes r61641 - r61652

今日は Exception#full_message のハイライトつきの時のエスケープシーケンスの付けかたの修正などがありました。

mrkn: r61641 2018-01-07 10:20:10 +0900

doc/NEWS-2.5.0 の例外のバックトレースの順序の反転やハイライトの有無は $stderr が端末かどうかを見ていますが、STDERR で判定すると書かれていたので修正しています。

svn: r61642 2018-01-07 10:20:11 +0900

version.h の日付更新。

nobu: r61643 2018-01-07 11:49:27 +0900

ext/extmk.rb でコンパイル必須な拡張ライブラリかどうかの判定で --without に指定したディレクトリの配下の拡張ライブラリは全て除外するようにしています。

nobu: r61644 2018-01-07 12:10:00 +0900

prelude.rb で Thread の下に private constant MUTEX_FOR_THREAD_EXCLUSIVE を追加していたのを、Thread の特異クラスを定義してそのスコープのローカル変数として定義するようにして global な名前空間を使わないようにしています。メソッドを define_method のブロック渡しで定義することでこのローカル変数を Proc オブジェクトから参照できるようにしています。

hsbt: r61645 2018-01-07 12:14:19 +0900

make test-bundled-gems で依存する gem パッケージに bundler を追加しています。なるほど、bundler 一時添付していたので不要だったけど外したので明示的にインストールが必要になったんですね…。

nobu: r61646 2018-01-07 13:10:06 +0900

io.c の $stderr がオリジナルの出力から変更されているかどうかの判定条件を rb_stderr_to_original_p() という関数に切り出しています。

nobu: r61647 2018-01-07 13:16:31 +0900

eval_error.c の print_errinfo() の引数でハイライト処理するかどうかの指定をする colored の仮引数名を highlight に変更しています。

nobu: r61648 2018-01-07 13:23:55 +0900

Exception#full_message メソッドのテストのメッセージでメソッド名を long_message と書いていたところがあったので full_message に修正しています。

nobu: r61649 2018-01-07 13:57:04 +0900

eval_error.c の write_warn(), write_warn2() などで出力する文字列を組み立てる時に rb_str_concat() を使うため一時オブジェクトとして文字列オブジェクトを使っていたのを、C 文字列を受け取る rb_str_cat_cstr() を使うようにして一時オブジェクトの生成を抑制しています。

nobu: r61650 2018-01-07 14:38:37 +0900

eval_error.c の print_errinfo() で出力をハイライト化する時に、エスケープシーケンスの reset を最後に出力していたのを、改行ごとに reset するようにしています。 Exception#full_message で文字列としてバックトレースつきメッセージを取得した時に、最後の改行の後に reset があると IO#puts で出力した時に余分な改行が追加されていたとのこと。

nobu: r61651 2018-01-07 18:36:48 +0900

メソッド呼び出しの NODE_QCALL ノードの生成時に位置情報を渡して、メソッド呼び出しの "." などで改行された時に意図した行番号を付けるようにしています。

nobu: r61652 2018-01-07 18:44:34 +0900

parse.y の new_command_call() というマクロは未使用になっていたので削除しています。