今日は Encoding 関連の C API で引数に Encoding と関連付けできないオブジェクトが渡された時のエラー処理を例外発生にする変更などがありました。
eregon: r64172 2018-08-03 22:52:13 +0900
enc_set_index() を String や Regexp などの Encoding と関連しないオブジェクトが引数に渡された時に rb_bug() で異常終了していたのを ArgumentError 例外の発生に変更しています。
eregon: r64173 2018-08-03 22:52:26 +0900
rb_enc_get_index() でも引数のオブジェクトが Encoding と関連しないオブジェクトの時にむりやり enc_get_index_str() を呼び出してたのを -1 を返すようにしています。
eregon: r64174 2018-08-03 23:31:39 +0900
r64173 を revert しています。 拡張ライブラリ json のテストがこの仕様に依存していたみたいでテストが失敗したそうです。
eregon: r64175 2018-08-04 00:11:22 +0900
r62429 で rb_intern() をマクロ化して gcc 拡張で引数が定数の場合 1度読んだ結果を static 変数にキャッシュする仕組みを入れてましたが、拡張ライブラリ json の ext/json/parser/parser.rl から生成するコードでこのマクロを undef しています。
svn: r64176 2018-08-04 00:11:23 +0900
version.h の日付更新。
eregon: r64177 2018-08-04 00:11:36 +0900
拡張ライブラリ json のソースコードで、String オブジェクトがくると思ってたところに Time オブジェクトがくる場合もあるのに rb_str_resize() を呼んでいたのでクラスチェックしてから呼ぶようにしています。 https://github.com/flori/json/issues/342
eregon: r64178 2018-08-04 00:11:49 +0900
r64174 で revert した r64173 の rb_enc_get_index() の修正のリトライ。おそらく r64177 の拡張ライブラリ json の修正で文字列以外に rb_str_resize() を呼ばなくなったので、これを入れてもテストが失敗しなくなったようです。
eregon: r64179 2018-08-04 01:19:10 +0900
eregon: r64180 2018-08-04 01:19:40 +0900
normal: r64181 2018-08-04 06:53:21 +0900
rubyspec の Socket.getaddrinfo のテストで Datagram 型のアドレスの service 名に http が指定されていたので、"discard" という service 名を指定するようにしています。 discard ってなんだろ。