ruby-trunk-changes r51930 - r51940

今日は ENV.delete の RB_GC_GUARD() 追加や bundled gem の minitest の更新などがありました。

odaira: r51930 2015-09-25 08:02:19 +0900

拡張ライブラリ gdbm のテストで GDBM.open の lock のテストを AIX では skip するようにしています。 Solaris と同様に lockf を使う時の、拡張ライブラリではなくて利用する gdbm の不具合みたいですね。 [ruby-dev:47631]

svn: r51931 2015-09-25 08:02:51 +0900

version.h の日付更新。

hsbt: r51932 2015-09-25 09:47:17 +0900

id_table.c のコメントの typo 修正。 https://github.com/ruby/ruby/pull/1031

hsbt: r51933 2015-09-25 09:48:49 +0900

gems/bundled_gems の minitest のバージョンを 5.8.1 に更新しています。

hsbt: r51934 2015-09-25 10:07:30 +0900

標準添付ライブラリ net/http の未使用のインスタンス変数(r13648 で未使用になった)の代入を削除しています。 https://github.com/ruby/ruby/pull/1022

nobu: r51935 2015-09-25 16:08:45 +0900

ENV.delete で削除する環境変数名の文字列を RB_GC_GUARD() で最適化による GC mark 漏れから保護しています。引数のオブジェクトなので大丈夫では……と思いきや SafeStringValue() を呼んでいるので変換されて関数内で別オブジェクトが作成されているケースがあるというものでした。

nobu: r51936 2015-09-25 17:06:57 +0900

拡張ライブラリ json の parser で r29214 で追加された(かなり前ですね) rb_scan_args() の optional hash 用の指示子 ":" を利用するようにしています。 #ifdef HAVE_RB_SCAN_ARGS_OPTIONAL_HASH で条件コンパイルされているのは、json が外部 gem でもあって、古い Ruby と一緒に使われる可能性があるからだと思います。

nobu: r51937 2015-09-25 17:08:58 +0900

r51936 (コミットメッセージでは r51946 となっていますが typo だと思います)の拡張ライブラリ json の ext/json/parser/parser.rl の変更を生成される C のソースコード ext/json/parser/parser.c にも反映させています。

nobu: r51938 2015-09-25 21:38:26 +0900

marshal.c で MARSHAL_INFECTION が int に収まるかチェックするのに独自に配列の宣言を利用してたのを STATIC_ASSERT() マクロを利用するようにしています。

nobu: r51939 2015-09-25 21:45:10 +0900

marshal.c の dump/load の関数の再入チェック部分を dump_funcall() と load_funcall() というマクロに切り出すリファクタリング

nobu: r51940 2015-09-25 22:14:16 +0900

marshal.c の marshal_dump() と marshal_load() の引数チェック後の部分をそれぞれ rb_markshal_dump_limited() と rb_marshal_load_with_proc() という関数に分離して、rb_marshal_dump() と rb_marshal_load() から呼び出す時に冗長な arity check を省くようにしています。