Rubyで遊んだ日々の記録。あくまで著者視点の私的な記録なので、正確さを求めないように。
Rubyと関係ない話題にはその旨注記しているはず。なので、一見関係無いように見える話題もどこかで関係あるのかもしれません。または、注記の書き忘れかもしれません...
is_ruby_native_thread()が追加されました。--with-pthread-extは、今回の変更に伴い削除されました。sendじゃなくて__send__を使うようになりました。って今頃かよ!pthread_tを使用していたため、一部のプラットフォームでビルドできなくなっていた問題が修正されました。[ruby-dev:21987]HAVE_NATIVETHREADが定義されないときにはis_ruby_native_thread()をマクロとして定義するようになりました。TkWindow#pack_propagateとTkWindow#grid_propagateのバグが修正された、ということですが、差分をみたところ、それぞれの引数の初期値がnilからNoneにかわり、かつ、効果が反転したようです。TkEntry::ValidateArgs.scan_argsで、UTF-8のときに何か不幸があった問題が修正されたんだと思いますが、よくわかりませんごめんなさい。
_ 仕事(そう、休日出勤なのです)でちょっとしたスクリプトを書いて実行してみたら、ソケットを使おうとするとなんかエラーが出る。
エラーが出る部分だけ切り出して試そう、と思ってirbを実行... したら、readline.soでSEGV。
じゃあミニマム再現コード、というわけでruby -r socket -e 0でエラー。
ついでにruby -r readline -e 0はSEGV。うぐぐ。
えーと、他のも試すか。ruby -r bigdecimal -e 0はエラー。要するに拡張ライブラリ全滅かよ。いつからだー。
SEGVはおいといて、エラーが出る物については、エラーはwrong argument type Fixnum (expected Class) (TypeError)
というもの。うーん。
% cat test.c
#include "ruby.h"
static VALUE cTest;
void Init_test(void)
{
cTest = rb_define_class("Test", rb_cObject);
}
% ruby -r mkmf -e "create_mkmf 'test'"
% nmake
(...)
% ruby -r ./test -ve 0
ruby 1.8.1 (2003-11-22) [i386-mswin32]
./test.so: wrong argument type Fixnum (expected Class) (TypeError)
%
% cat test.c
#include "ruby.h"
static VALUE cTest;
void Init_test(void)
{
rb_warn("%p", rb_cObject);
cTest = rb_define_class("Test", rb_cObject);
}
% ruby -r mkmf -e "create_mkmf 'test'"
% nmake
(...)
% ruby -r ./test -e 0
./test.so: warning: 201C25FF
./test.so: wrong argument type Fixnum (expected Class) (TypeError)
%
なるほどFixnumだ。
_ さてどこから手をつけるかなぁ。
えーと、2003-11-21なバイナリだと大丈夫だなぁ。
えー、あの大量のコミットから原因切り分けないといけないのー?
_ ebanさんにIRCで相談してみたところ、ebanさんの手元(VC7最適化なし)だと大丈夫だということなので、最適化オプションを外してやってみる。
... うーん、同じだ。
あ、拡張ライブラリの方で最適化オプション外さないとダメか。... 同じ。
_ まてよ、そもそも本体と拡張ライブラリとどっちが悪いんだろう。両方?
% cd 20031121 % ./ruby -r ../20031122/ext/socket/socket -ve 0 ruby 1.8.1 (2003-11-21) [i386-mswin32] ./test.so: wrong argument type Fixnum (expected Class) (TypeError) % cd ../20031122 % ./ruby -r ../20031121/ext/socket/socket -ve 0 ruby 1.8.1 (2003-11-22) [i386-mswin32] %
う、本体じゃなくて拡張ライブラリが悪いのか。むぎゅーん。
ebanさんのところでも、拡張ライブラリを再コンパイルしたら問題が再現できたとのこと。
_ すると、lib/mkmf.rbかなあ。違いはXCFLAGSだけなんだけど。
そもそも、XCFLAGSなんて空だよねぇ。
% grep XCFLAGS rbconfig.rb CONFIG["XCFLAGS"] = "-DRUBY_EXPORT" %
... ぎゃふん!
俺か、俺が悪いのか!
XCFLAGSが空だという思い込みが敗因かよー。
_ というわけで、bcc32/Makefile.sub・win32/Makefile.sub・wince/Makefile.sub(これだけ実は問題なかったけど、一応)を修正してcommit。
% ruby -r socket -ve 0 ruby 1.8.1 (2003-11-24) [i386-mswin32] %
Test::Unit::Util::BacktraceFilter#filter_backtraceで、例外がバックトレースを持たないときに正常に動作していなかった問題が修正されました。getcwd()を直接使用するのではなく、util.cのmy_getcwd()を使用するようになりました。また、my_getcwd()はgetcwd()のない環境でもgetwd()を使って動作するようになりました。Exception#to_strがException#to_sとは別に定義されました(デフォルトではException#to_sを呼びます)。また、Exception#messageは今まではException#to_sと同じでしたが、Exception#to_strと同じに変えられました。rb_class_inherited()が呼ばれるようになりました。--enable-pthreadな時はとりあえず使用するスタックサイズを1/4にするようになりました。marshal_dump()や_dump()経由のダンプ時、特異メソッドはチェックされなくなりました。freezeされているクラス/モジュールに対してクラス変数を追加するなどした場合の例外のメッセージが、クラスとモジュールとで分離されました。Curses.timeout=・Curses.def_prog_mode・Curses.reset_prog_modeの各クラスメソッドと、Curses#nodelay=・Curses#timeout=の各メソッドが追加されました。[ruby-core:1707]StringIOが使える時に、CGIに10240バイトより小さいファイルを送ると例外NoMethodErrorが発生していた問題が修正されました。[ruby-dev:21925]TkWindow#grab_releaseメソッドが追加されました。TkCompositeのバグが修正された、とのことです。が、どんなバグが修正されたのかはわかりません。rb_thread_schedule()を呼ぶ前にnative threadチェックが追加されました。--enable-pthreadが追加されました。デフォルトはyesです。--disable-pthreadを指定することによって、pthreadライブラリをリンクしなくなります(つまり従来の挙動に戻る)。
_ なんてこった... _| ̄|○
吊ってきます...
∧||∧
( ⌒ ヽ
∪ ノ
∪∪
_ 11月23日分。
なし。Changesを始めてから初かな?
ArgumentErrorが発生するようになりました。content_length_procおよびprogress_procというオプションが追加されました。passwd構造体のpw_passwdメンバの有無とgroup構造体のgr_passwdメンバの有無をチェックするようになりました。REQUEST_METHOD存在時)では、環境変数HTTP_PROXY(http_proxy)を見ずに環境変数CGI_HTTP_PROXY(CGI_http_proxy)を見るようになりました。[ruby-dev:22013]catch〜throwを利用するようになりました。RuntimeErrorを発生するようになりました。これは、例えば、HTTPからローカルファイルへのリダイレクトなどを禁止するためです。syntax errorとなる問題が修正されました。[ruby-bugs:PR#1221]--disable-pthreadがデフォルトとなりました。[ruby-dev:22031]http_proxyは安全なので、これは有効にするようになりました。[ruby-dev:22016]ENV.has_value?・ENV.indexで、環境変数名の大文字小文字を同一視、ではなく、環境変数値の大文字小文字を同一視してしまっていた問題が修正されました。釣ってきます...WEBrick::HTTPResponse#keep_alive=メソッドが追加されました。YAML::Syck::Loader#bufsize=・YAML::Syck::Loader#bufsizeの各メソッドが追加されました。
_ 人はどういうときに殺意を覚えるのか、というのは、人によっていろいろ違うんだろうけど、とりあえずグラコロの話題を聞くたびに破壊衝動にかられる今日この頃です。
恵まれたる者たちよ、あなた方の一口の裏には幾千もの恵まれざる人々の涙があることを忘れないように。
_ てゆーか、"冬の定番"
とか多くのお客様に愛され続け
とか今年もいよいよグラコロの季節です
とかゆーの、喧嘩売ってるとしか思えません。
さらに、香川と岡山だけ飛び地でやってるのもますます敵意をそそります。
FileTest.exist?("NUL")がfalseとなる問題が修正されました。ついでにFile.exist?("//host/share/.")がfalseになっていた問題も修正されました。TkTimer#cancel_on_exception=・TkTimer#loop_rest=は、それぞれ、引数の値ではなくselfを返すようになりました。TkTimer.callback内では例外を捕捉しなくなりました。TkTimer#do_callbackでは、今までは、@cancel_on_exceptionがtrueの時に例外が発生した場合、nilを返していましたが、その発生した例外を返すようになりました。TkTimer#waitは、実行中に例外が発生した場合、その例外を投げるようになりました。make testも通ったそうで、おそらく実用的に使えるレベルになったのだと思います。
被捕捉アンテナ類
[\ay antenna (testing)]
[Ant]
[Antenna-Julia]
[LayserあんてなV2]
[nAntenna]
[nuance de Antenna]
[Rabbit's Antenna]
[Read List]
[Ruby hotlinks 五月雨版 (るるりん。)]
[してたま (私的アンテナ with たまてばこ)]
[ただのあんてな]
[ちゃらんぽらん]
[でこぽんリンク]
[なよろアンテナ]
[にっきトレーサー]
[偽善者あんてな - 2nd season -]
[湘南日記放送局(SDB)]
[はてなの各アンテナ]