ruby-trunk-changes r45499 - r45509

今日は Pathname#join の不具合修正や __builtin_longjmp() の最新の gcc/clang への対応などがありました。 gcc も clang も新しいバージョンについていくのは大変なんですね…。

kazu: r45499 2014-04-02 11:51:20 +0900

r45407 での拡張ライブラリ pathname の Pathname#join の変更で引数がなしの時にエラーになるようになっていたので修正しています。

svn: r45500 2014-04-02 11:51:24 +0900

version.h の日付更新。

hsbt: r45501 2014-04-02 14:55:44 +0900

doc/syntax/assignment.rdoc の <code> タグが閉じられてなかったのを修正しています。 https://github.com/ruby/ruby/pull/574

hsbt: r45502 2014-04-02 15:15:19 +0900

make help で表示される DeveloperHowto へのリンクを最新版の有効な URL に変更しています。 [ruby-core:60657] [Bug #9511]

nobu: r45503 2014-04-02 17:43:18 +0900

configure で __builtin_setjmp() と __builtin_longjmp() が利用可能かチェックするための C コード片で __builtin_longjmp() の第2引数に変数を使っていたのが gcc 4.9 でエラーになるそうで、定数 1 を渡すようにしています。というか 1 しか渡しちゃいけないそうです。えー…。 [ruby-core:61800] [Bug #9692]

nobu: r45504 2014-04-02 19:57:45 +0900

r45503 で configure での検出でも修正したように gcc 4.9 からは __builtin_longjmp() の第2引数は 1 固定でないといけないので rb_threadptr_tag_jump() で利用しているところでも値は rb_thread_t::state へ格納して ruby_longjmp() には 1 を渡すように修正しています。マジか。まあ生のまま ruby_setjmp() 使っているところはあまりなくてだいたい TH_EXEC_TAG() 経由なので値はちゃんと th->state から取り出しているのであまり影響なさそうでした。 [ruby-core:61800] [Bug #9692]

ko1: r45505 2014-04-02 20:59:50 +0900

rb_objspace_each_objects_without_setup() という C API を追加しています。 gc.h での宣言なので内部的な利用のみ想定していて ObjectSpace.each_object のブロック呼び出しのかわりに C のコールバック関数を呼び出すものみたいです。

nobu: r45506 2014-04-02 21:03:55 +0900

ChangeLog と LEGAL の行末の空白除去です。

nobu: r45507 2014-04-02 21:04:01 +0900

r45384 で追加したベンチマークスクリプトsvn property 設定。

nobu: r45508 2014-04-02 21:50:07 +0900

r45503 で修正した configure での __builtin_setjmp()/__builtin_longjmp() の検出の再修正。 今度は clang 5.1 で第1引数の型が jmp_buf ではなく void** だそうで、キャストの必要性の有無も含めて検出したうえで RUBY_SETJMP()/RUBY_LONGJMP() マクロを定義するようにしています。 [ruby-core:61796] [Bug #9692]

nobu: r45509 2014-04-02 22:00:31 +0900

r45508 の configure.in の修正の追加修正。 キャストの有無の検出でキャストなしでうまくいったら break してそれを利用するようにしています。 [ruby-core:61796] [Bug #9692]