ruby-trunk-changes r44920 - r44931

今日は Struct のフィールドに ! や ? などを使った時の setter メソッドを呼べるようにする修正や、Refinements とメソッドの可視性についての仕様の修正などがありました。

glass: r44920 2014-02-13 00:17:13 +0900

configure での memmem(3) の検出を AC_CHECK_FUNCS() を使ってしておいて、パターンに空文字列を渡した時の動作が期待したように動いていない時に HAVE_MEMMEM の定義を消すようにしています。

svn: r44921 2014-02-13 00:17:18 +0900

version.h の日付更新。

glass: r44922 2014-02-13 00:24:33 +0900

configre.in で AC_CHECK_FUNCS() を AC_CHECK_FUNC() を使うように変更しています。なんかこれ前も誰かがやってたような…。そして次で revert されています。

glass: r44923 2014-02-13 01:04:05 +0900

r44922 を revert しています。

kazu: r44924 2014-02-13 09:15:47 +0900

r44890 と r44920 の ChangeLog エントリの typo 修正。

nobu: r44925 2014-02-13 11:06:36 +0900

タイマースレッドのネイティブスレッドに名前をつけるのに Mac OS X の時は pthread_setname_np() を利用していたのが古い(10.6 以前)だと利用できなかったそうで configure で pthread_setname_np() の存在チェックをして利用可能な時だけ使うようにしています。 [ruby-core:60524] [Bug #9492]

nobu: r44926 2014-02-13 15:43:18 +0900

r42479, r42490 あたりで Struct のフィールド名に JUNK ID を使った時の挙動の修正が不完全でメソッド呼び出しできない場合があった不具合を追加修正しています。 [ruby-core:60668] [Bug #8756]

hsbt: r44927 2014-02-13 15:59:33 +0900

Marshal.dump の rdoc 用コメントの typo 修正。 https://github.com/ruby/ruby/pull/533

zzak: r44928 2014-02-13 16:55:34 +0900

Array のテストで Array#flatten! のテストメソッドで Array#flatten が使われてた assertion を修正しています。 よく気がつきましたねぇこれ。 https://github.com/ruby/ruby/pull/530

normal: r44929 2014-02-13 18:36:40 +0900

re.c の rb_reg_regcomp() で引数のオブジェクトをコンパイラ最適化による GC マーク漏れから保護するためと思われる volatile 変数への代入を削除しています。 r13261 から不要になったとコミットログに書かれているのですが、r13261 ってだいぶ古いですね。エンコーディングの対応が入った時のコミットみたいです。多分 rb_reg_new() が char* でなく VALUE 型のオブジェクトのまま受け取るようになったためではないかと(現在は関数名も変化しています)。これまたよく気がつきますねぇ。

normal: r44930 2014-02-13 18:40:03 +0900

re.c の rb_reg_raise() でも不要になった volatile つきの変数宣言から volatile 修飾子を削っています。こちらは r41597 なので割と最近で、rb_raise() に PRIsVALUE で文字列をオブジェクトのまま渡せるようになったので保護が不要になったというものです。

shugo: r44931 2014-02-13 23:44:41 +0900

Refinements と可視性(public, private)との仕様を修正しています。 private メソッドを public なメソッドで refine したモジュールを using していた時は public メソッドとして呼べるようにしています。つまり Refinements は可視性も変更できるようにしています。 逆に refine 内で private なメソッドを定義すると private なメソッドに変更することもできるようです。 [ruby-core:60111] [Bug #9452]