ruby-trunk-changes r54641 - r54649

今日は Time.parse のタイムゾーンの扱いの変更の revert や syntax error や compile error のメッセージ作成用の関数群のリファクタリングなどがありました。

sonots: r54641 2016-04-19 00:54:45 +0900

r54639 の標準添付ライブラリ logger の Logger.new の shift_period_suffix のテストが Windows でこけるのを修正している、そうですがなんでこけるんだろう…と思って下のほうまで見たら同じファイルを開く Logger を2つ作って、ひとつずつ閉じてファイルを削除していたのでそのへんですね。 Windows では開いているファイルを消すのは何かフラグをつけて開かないといけないんだったかと。
[追記]よくみるとオリジナルのファイルは消してなくて、ログの rotate(shift) 時の rename がファイルを開いたままだとできない、というエラーだったようです。[/追記]

sonots: r54644 2016-04-19 12:55:13 +0900

NEWS ファイルに Logger.new のパラメータ追加について追記しています。

sonots: r54645 2016-04-19 13:13:19 +0900

r54644 の ChangeLog エントリの日付を修正しています。

nobu: r54646 2016-04-19 13:14:38 +0900

logger のテストで assert のかわりに assert_predicate や assert_not_predicate, assert_file などの assertion メソッドを使ってよりわかりやすいメッセージが出るようにしています。

sonots: r54647 2016-04-19 13:20:48 +0900

r54167 の 標準添付ライブラリ time による Time.parse の zone の扱いの修正を revert しています。 Time.parse は RFC 822 に記載されているタイムゾーンの省略記法のみ扱うと書かれていたのと、akr さんのコメントによると特殊なケースで動作が変わることがあるとのことでした。

nobu: r54648 2016-04-19 13:46:20 +0900

append_compile_error() で errinfo を current thread から取り出してたのを rb_iseq_t を渡してファイル名と errinfo はここから取り出すようにしています。また rb_compile_bug_str() は rb_report_bug_valist() と改名して可変長引数から va_list を受け取る関数に変更し、abort(3) はここでは呼ばず wrapper 関数の compile_bug() というのを追加してこちらで abort(3) を呼ぶようにしています。
いろいろリファクタリングしてますが rb_errinfo() に依存しなくしたのが主眼点なのかなぁ。

nobu: r54649 2016-04-19 17:42:50 +0900

error.c のリファクタリング。 compile_vsprintf() は err_vcatf() と改名し、関数内で String オブジェクトを生成していたのを呼び元で作成して渡すようにしています。 また rb_compile_err_append() も rb_syntax_error_append() と改名して、単に文字列連結だけしていたのを err_vcatf() の呼び出しもするようにしています。