ruby-trunk-changes r55021 - r55033

今日は Fixnum/Bignum というクラスは廃止されて、Integer クラスに統合され、Fixnum と Bignum は同じ Integer クラスの内部構造の違いという扱いになりました。また Enumerable#sum メソッドが追加されました。

nobu: r55021 2016-05-17 10:40:20 +0900

configure.in で _setjmp(), _setjmpex() などの組み込み関数のチェック用に sigsetjmp(3) のチェック用の処理を RUBY_CHECK_SETJMP というマクロに切り出して流用するようにしています。 _setjmpex() のチェック時に "setjmpex.h" ヘッダの include を追加しているようです。

svn: r55022 2016-05-17 10:40:21 +0900

version.h の日付更新。

nobu: r55023 2016-05-17 11:58:40 +0900

configure で __builtin_setjmp() の存在チェックをする時に生成するソースコードに NORETURN() マクロで関数が戻ってこないことを明示して -Wsuggest-attribute=nooreturn による警告を抑制するようにしています。 [ruby-core:75510] [Bug #12383]

akr: r55024 2016-05-17 15:53:48 +0900

しばらく前から Fixnum と Bignum にそれぞれ定義されていたメソッドを Integer に移動して統合していましたが、ついに Fixnum と Bignum というクラスは Integer に統合されて、即値の Fixnum と Bignum は実装上の詳細として Ruby レベルからは遮蔽されるようになったようです。 したがって 1.class は Integer になり、(1<<128).class も Integer になり、rb_cFixnum や rb_cBignum は rb_cInteger を参照するようにしています。また脱最適化のためにメソッドの再定義チェックしている箇所でも追随しています。 ううむ、これは大きな変更ですね。しかしコード上の変更点は思ったほどではないような…。下準備してきたからですかね。 [ruby-core:72918] [Feature #12005]

akr: r55025 2016-05-17 17:25:58 +0900

r55024 のコミット漏れでテスト用の拡張ライブラリのファイルを追加しています。

svn: r55026 2016-05-17 17:25:59 +0900

r55025 で新規追加されたファイルの svn property 設定。

kazu: r55027 2016-05-17 21:57:48 +0900

r55007 と r55024 の ChangeLog エントリの typo 修正。 r55007 のほうは is の重複じゃなくて "whether it is embeded ..." の typo じゃないかなぁ。

kazu: r55028 2016-05-17 21:57:49 +0900

r55024 での bootstraptest/test_literal.rb の修正でインデントというか空白でそろえてたところがずれていたのを修正しています。

akr: r55029 2016-05-17 22:15:57 +0900

r55024 の続きで、Fixnum/Bignum というクラス(C のコードだと rb_cFixnum と rb_cBignum)を参照しているところは、Integer を参照するように代入されていますが、コード上直接 Integer (rb_cInteger)を参照するように修正しています。なるほど変更点という意味ではこちらがおおきいですね。大部分テストですけど。

akr: r55030 2016-05-17 22:24:53 +0900

NEWS ファイルに Fixnum と Bignum が Integer に統合されたことを追記しています。

akr: r55031 2016-05-17 22:26:24 +0900

NEWS ファイルの Array#sum についてのエントリにチケットの参照を追記しています。

mrkn: r55032 2016-05-17 22:58:46 +0900

r54565 で Array#sum というメソッドが追加されて、その後 Float 対応や Rational 対応と最適化が施されてきましたが、Enumerable にも sum メソッドを追加しています。仕様は Array#sum と同様で、Float の加算は誤差を軽減するアルゴリズム (Kahan's compensated summation algorithm) を採用しているようです。

mrkn: r55033 2016-05-17 23:09:37 +0900

Enumerable#sum の rdoc 用コメントを追加しています。