ruby-trunk-changes r57492 - r57503

今日は RubyVM::InstructionSequence.iseq_load 関係の不具合修正や恒例になってきた gem 化で date と cmath の gem 化の変更などがありました。

nobu: r57492 2017-02-02 07:14:22 +0900

Queue とシグナルのテストで SIGUSR2 を使っていたのを portability のため SIGINT に変えています。Windows でも動くように、ということですかね。

svn: r57493 2017-02-02 07:14:23 +0900

version.h の日付更新。

nobu: r57494 2017-02-02 07:18:28 +0900

r57476 で追加した Time#strftime の一時オブジェクト生成抑制の最適化で追加したテストで Time.at に getutc を繋げて UTC の Time オブジェクトを返すようにしています。
……ということはもしかして normal さんはシステム上 UTCタイムゾーンにして作業しているのかな…。

nobu: r57495 2017-02-02 14:43:58 +0900

RubyVM::InstructionSequence.iseq_load のテストで all_assertions を利用して警告ではなく assertion メッセージとして diff を表示するようにしています。

nobu: r57496 2017-02-02 14:45:21 +0900

iseq_build_kw() にてキーワード引数が必須キーワード引数のみだった時に keyword->table をセットせずに返していた不具合を修正しています。 これ現状は表面化していなかったのかな。確かにコアの実装で必須キーワード引数のみの C 実装のメソッドというのは思いつかない。

nobu: r57497 2017-02-02 14:45:22 +0900

RubyVM::InstructionSequence.iseq_load で配列から ISeq を組み立てる時に misc params というのを再計算できるとして無視していたのをちゃんと読み取るようにしています。VM スタック消費量の計算に必要だった模様。

nobu: r57498 2017-02-02 14:56:06 +0900

compile.c の iseq_build_from_ary_exception() なのでやっぱり RubyVM::InstructionSequence.iseq_load ですね。例外テーブル(つまり rescue や ensure 節に関するブロック)のロード時に sp をインクリメントするようにしています。 コメントに TODO: Dirty Hack! Fix me とあるしコミットログにも 正確なスタックサイズが計算できないとあるので、暫定的な(アドホックな)修正みたいです。

nobu: r57499 2017-02-02 16:03:59 +0900

標準添付ライブラリ cgiCGI.unescape のテストで \u{} 記法を使った文字列リテラルを使ったチェックは Encoding がない場合(ってことは 1.8以前?)は実行しないようにしています。 gem 化を見据えた変更かな? しかし 1.8 まだサポートするんですかね。

hsbt: r57500 2017-02-02 16:49:19 +0900

今日の default gem 化シリーズ。標準添付ライブラリ cmath のための .gemspec ファイルを追加しています。 [ruby-core:79391] [Feature #13182]

nobu: r57501 2017-02-02 17:02:36 +0900

CGI.escape の高速化のための拡張ライブラリで encoding の引数に不正なオブジェクトが渡されてないか rb_to_encoding() を通してチェックするように修正しています。

hsbt: r57502 2017-02-02 17:38:54 +0900

拡張ライブラリ date に .gemspec ファイルを追加しています。 [ruby-core:79393] [Feature #13183]

kazu: r57503 2017-02-02 21:38:41 +0900

r57469 あたりからの IO#write や IO#syswrite で一時オブジェクトの生成を抑制する変更のテストでメッセージに write -> IO#write のようにクラス名を含めるようにしています。