ruby-trunk-changes r56903 - r56907

今日は Fixnum や nil, true, false などに dup を呼んでも例外を発生させない変更などがありました。

ktsj: r56903 2016-11-27 18:40:51 +0900

gem/bundled_gems の power_assert のバージョンを 0.4.1 に更新しています。

svn: r56904 2016-11-27 18:40:52 +0900

version.h の日付更新。

knu: r56905 2016-11-27 19:08:00 +0900

r50152 で OS X で libruby ビルド時のオプションの -compatibility_version に $(RUBY_PROGRAM_VERSION) を使うようにしていましたが、$(MAJOR).$(MINOR) までのバージョンを使うようにして、逆に -current_version のほうを $(RUBY_PROGRAM_VERSION) を使うようにしています。 teeny が変わったバージョンで拡張ライブラリが使えなくなる問題があったようです。ふーむ普段使ってるけど特に気がつかなかった…。

nobu: r56906 2016-11-27 20:07:27 +0900

即値のオブジェクト (Fixnum(今は独立したクラスではなくて Integer のうち VALUE に埋め込めるものという内部的な区別になっていますが)、nil, true, false など)に対して dup を呼んだ時に TypeError が発生するようになっていましたが、例外は発生させずにかわりに同じ即値を返すようにしています。うんうん、このほうが嬉しですよね。 [ruby-core:78308] [Feature #12979]
test/rubygems/test_gem_specification.rb のテストが書きかわっているのはなんでしょうね?
[追記]Symbol#dup が例外を発生させることに依存したテストだったので singleton class に変更しておいたそうです。[/追記]

nobu: r56907 2016-11-27 20:22:42 +0900

signal.c の check_stack_overflow() で stack base pointer のレジスタの値を取得して、segmentation fault がおきたアドレスが bp と sp の間にあったら stack overflow によるものと判定するようにしています。一気に page size 以上に sp が突き抜けた場合を考慮しているのかな。