ruby-trunk-changes r40114 - r40126

今日、というか昨日は寝落ちのため途中までです。
class_variable_set の Symbol 生成遅延と curses の不具合修正、defined? に空の式を渡した時に SEGV する不具合の修正などです。

nobu:r40114 2013-04-05 06:36:38 +0900

r40100 および r40104 の Symbol 生成の遅延のうち r40108 で revert された Module#class_variable_set の部分を再度修正しています。 else if の条件部の rb_is_class_id() -> rb_is_class_name() に変更。

svn:r40115 2013-04-05 06:36:45 +0900

version.h の日付更新。

zzak:r40116 2013-04-05 12:10:14 +0900

ext/curses/hello.rb のサンブル内で ?文字 の記法を使っていたのをシングルクオートの記法に変更しています。1.8 だと ? 記法は整数を返していたけど 1.9 以降は文字列なのでこれは今は同じ結果になりますけど。 http://github.com/ruby/ruby/issues/273

nobu:r40117 2013-04-05 13:23:02 +0900

拡張ライブラリ curses の getch のテストを追加しています。

nobu:r40118 2013-04-05 13:23:05 +0900

拡張ライブラリ curses の crmode の実装が nocbreak になっていたのを cbreak と同等にしています。 こんなバグが残っていたとは。 [ruby-core:54013] [Bug #8222]

nobu:r40119 2013-04-05 16:46:26 +0900

dl.h の Windows 版での dlopen の代替関数マクロで未使用の引数があるため警告がでるのを抑制するため (void)(flag), を追加しています。

nobu:r40120 2013-04-05 16:46:29 +0900

API テスト用の拡張ライブラリ ext/-test-/win32/dln/ の extconf.rb で make clean 時に static library も削除するようにしています。

nobu:r40121 2013-04-05 16:49:49 +0900

ext/-test-/win32/dln/ の svn property 設定。

nobu:r40122 2013-04-05 19:29:38 +0900

gcc の拡張の #pragma GCC visibility push/pop という pragma が使えるか configure で調べて RUBY_SYMBOL_EXPORT_BEGIN, RUBY_SYMBOL_EXPORT_END というマクロとして定義して #if で調べて使っていた箇所で使うようにしています。

nobu:r40123 2013-04-05 19:29:42 +0900

configure で XCFLAGS に -include オプションで ruby/config.h と ruby/missing.h を include させるのをやめています。既にこれらのヘッダはソース内で #include されているはずとのこと。

nobu:r40124 2013-04-05 19:40:03 +0900

defined? に空の式 "()" が渡された時に parse した AST を命令列にコンパイルしようとして SEGV するのを修正しています。 [ruby-core:53999] [Bug #8220]
なおチケットでは 1.9.3 では SyntaxError になるので同じように振る舞って欲しいとありますがこの修正は SyntaxError にするのではなくて、受け付けて "nil" を返すようにするので、これでいいのでしょうか。

akr:r40125 2013-04-05 20:23:36 +0900

addr2line.c に ruby/missing.h の include が足りなかったので追加。

nobu:r40126 2013-04-05 20:31:50 +0900

pack/unpack の Q!/q! 指示子の対応で long long を指定していたのを LONG_LONG を使うようにしています。 mswin 版のコンパイルのため。