ruby-trunk-changes r61524 - r61535

今日は rb_warn_m() のスタックフレームを巻き戻す指定があった時のエラー処理や最適化、パースエラー時のエラー箇所のハイライト化などの変更がありました。
2018年もよろしくお願いします。

nobu: r61524 2017-12-31 21:21:53 +0900

r61459 で template/prelude.c.tmpl に導入した #pragma ですがさらに __GNUC__ のバージョン番号もチェックするようにしています。古い gcc だと使えない記法なので使わないようにしています。

nobu: r61525 2017-12-31 22:01:55 +0900

rb_warn_m() で表示する位置をバックトレース上巻き戻す数 uplevel に負の値を指定されたら ArgumentError を発生させるようにしています。 [ruby-core:84568] [Bug #14262]

nobu: r61526 2017-12-31 22:12:47 +0900

r61525 の修正のテストに assertion を追加しています。 [ruby-core:84568] [Bug #14262]

nobu: r61527 2017-12-31 22:15:52 +0900

rb_warn_m() でバックトレースを巻き戻した位置を取得するために rb_vm_thread_backtrace_locations() を呼ぶ時に 2引数で取得するスタックフレームの数を制限するようにして不要なメモリ消費を抑えるようにしています。

nobu: r61528 2018-01-01 00:00:23 +0900

parser_yyerror() でエラー位置の抽出時に yyloc->last_loc の行が first_loc と別の行になっていた時にバッファを超えた位置をみないように対応しています。

svn: r61529 2018-01-01 00:00:24 +0900

version.h の日付更新。

nobu: r61530 2018-01-01 00:05:26 +0900

parse.y に yyerror1() という位置情報付きの yyerror0() の代替関数マクロを追加して、location を渡せるところではこちらを利用するようにしています。

hsbt: r61531 2018-01-01 08:29:59 +0900

r58657, r58660, r58692, r58723 などの rubygems のテストの CI での失敗の調査用のコードを削除しています。

kazu: r61532 2018-01-01 09:13:54 +0900

doc/NEWS-2.5.0 の不要なカンマを削除しています。

nobu: r61533 2018-01-01 10:04:50 +0900

parser_yyerror() で標準出力が端末の時にエラー箇所をエスケープシーケンスを使ってハイライトするようにしているようです。

mame: r61534 2018-01-01 18:16:27 +0900

struct rb_iseq_constant_body の insns_info と insns_info_size を 一箇所にまとめて埋め込み構造体としてまとめています。

mame: r61535 2018-01-01 18:30:06 +0900

r61534 の struct rb_iseq_constant_body の構造の変更に追随漏れしていたところが VM_CHECK_MODE が有効な場合の箇所にあったので追加変更しています。