ruby-trunk-changes r45350 - r45357

今日は定数を上書きした時のメモリリークの修正や Mac OS X での OS バージョンの表現の変更などの他、引数に const を付けるなど内部的な変更がいくつかありました。

normal: r45350 2014-03-17 10:24:06 +0900

rb_const_set() で定数を設定する時に既に定数が定義済みだった時に元の rb_const_entry_t が解放されていなくてメモリリークしていたのを修正しています。 [ruby-core:61546] [Bug #9645]

svn: r45351 2014-03-17 10:24:10 +0900

version.h の日付更新。

nobu: r45352 2014-03-17 13:05:32 +0900

configure の os_version_style の検出時に Mac OS X では /usr/bin/ruby -v から検出するようにしています。どういう影響があるのかよくわかっていませんが Mavericks から /usr/bin/ruby -v で表示される OS のバージョン番号のフォーマットが変化しているようで(darwin12.0 から darwin13 になっている)、それにあわせるようにしているようです。

ko1: r45353 2014-03-17 13:20:16 +0900

RGenGC の shady 対策としてあちこちで読み込みのみの RARRAY_PTR() を RARRAY_CONST_PTR() に変更しています。

nobu: r45354 2014-03-17 13:57:14 +0900

complex.c, rational.c および拡張ライブラリ date の ext/date/date_core.c で未使用の関数の除去、ext/utf_16be.c, enc/utf_16le.c の未使用の(利用箇所がコメントアウトされている) const 変数のコメントアウトなどです。 clang 5.1 が警告を出すようになったそうです。

nobu: r45355 2014-03-17 13:57:17 +0900

Complex#to_s や Complex#inspect の定義で実数部、虚数部の文字列化に rb_funcall() でメソッド呼び出しするのではなくて rb_String() や rb_inspect() を直接呼び出すように変更しています。 再定義した時にはどうなるのかな。
また rb_raise() で例外メッセージに PRIsVALUE を使ってオブジェクトを直接埋め込むようにして RB_GC_GUARD() しなくてもすむようにしています。

nobu: r45356 2014-03-17 13:57:19 +0900

拡張ライブラリ json の ext/json/parser/parser.c で定数を static const int で宣言していたのが未使用の const 変数として警告されるらしく enum を使って宣言するようにしています。 またこのファイルを生成するための prereq.mk でも置換する処理を追加しています。 うえー、妙な感じですね。

nobu: r45357 2014-03-17 17:21:47 +0900

rb_execarg_init() および rb_execarg_new() の VALUE* の引数に const 修飾子をつけています。そのぶん rb_execarg_init() で argv をコピーしているのがちょっと気になりますけど。