ruby-trunk-changes r56185 - r56188

今日は Enumerator::Lazy の高速化や bundled gems からの minitest の削除などがありました。

nobu: r56185 2016-09-19 10:36:56 +0900

Enumerator::Lazy で使うため struct enumerator に procs というメンバを追加して Lazy の高速化を図っています。この中に配列を格納して、その各要素に proc_entry_data_type という T_TYPEDDATA 型で定義した struct proc_entry という構造体を wrap したオブジェクトを並べています。この構造体内には Enumerator::Generator のオブジェクトと proc と size のふたつの関数ポインタが含まれていて、それぞれ Lazy 化した処理と Enumerator#size のための関数を持たせるようにしています。これを使ってブロックを受け取らない Enumerator::Lazy のメソッドでは method chain された処理を配列に詰めて直接関数を呼び出すようにして、ブロックを呼ぶ時も毎回 yield メソッドを呼んでいたのを直接 Proc オブジェクトを rb_proc_call_with_block() で呼ぶようにして高速化しています。久しぶりに Lazy の実装を読みましたけどやっぱり頭がこんがらがりますね。 [ruby-core:43529] [Feature #6183]

svn: r56186 2016-09-19 10:36:57 +0900

version.h の日付更新。

nobu: r56187 2016-09-19 17:05:26 +0900

r55024 の Fixnum と Bignum の Integer への統合で Fixnum と Bignum という定数は Integer への参照に変更されましたが、これらを deprecate constant として定義しておくことで明示的に参照していたら警告を出すようにしています。 [ruby-core:77219] [Feature #12739]

nobu: r56188 2016-09-19 17:21:16 +0900

gems/bundled_gems から minitest-5.9.0 を削っています。 certificate expired ということで、証明書の期限切れみたいですが gem パッケージの署名についてでしょうか。明示的に gem install すると入るみたいですが…。