Rubyで遊んだ日々の記録。あくまで著者視点の私的な記録なので、正確さを求めないように。
Rubyと関係ない話題にはその旨注記しているはず。なので、一見関係無いように見える話題もどこかで関係あるのかもしれません。または、注記の書き忘れかもしれません...
extendedというキーワードがtypedefされてることがあって、marshal.cのコンパイルに失敗するという問題が修正されました。[ruby-bugs:PR#1198]Socket.gethostbyname(Socket.gethostname)でSEGVるこがあったという問題が修正されました。[ruby-bugs:PR#1195]ruby_frameにuniqというメンバが増えて、frameの比較にはこれを使うようになりました。rb_catch()内でのpushとかpopがなくなってすっきりしました。proc{|s|}.callがSEGVしていたバグが修正されました。[ruby-dev:21632]
_ gc.cとeval.cがメインで難度の高い日でした。
つまりいまいちわかってねー。
_ 現時点でmswin32でtest/runner.rbを実行すると、drbを除くと(今はまだ調子悪いので)、0F3Eになります。
_ この3Eのうち、一つ目の1Eはtest/soap/calc/test_calc_cgi.rbで発生しているもので、前にも書いたように、native win32なrubyで、execの挙動がUNIXライクな環境のそれと異なるのが原因です。
この件については、このnative win32なrubyの挙動をどうすべきか(どうあるべきか)というのが問題なので、とりあえずは保留(*1)状態です。
_ このとき、execされたrubyインタプリタはそのまま居残って(時間が経てば終了する)、CGIの使う17171番ポートを掴みっぱなしにします。
ところが、続くtest/soap/helloworldのテストも同じ17171番ポートを使用しようとするため、ここでもテストが失敗してしまいます、というか、setup(とteardown)でエラーが出てテストが実行されません。これが残り2E。
_ test/soap/helloworldを単体でテストするとか、この二つのテストで使用するポートを変えるかすれば、test/soap/helloworldのテストは通ります。
つまり、現状、まとめて実行すると、test/soap/calcの失敗のせいで、test/soap/helloworldも失敗してしまう(というかテストされない)わけです。
_ この場合、テストというものの考え方からは、「test/soap/calcが通るようになるまでtest/soap/helloworldがテストされないのは仕方ない」のか、「test/soap/calcがどうであれ、test/soap/helloworldに影響があるべきではないので、どちらかのテストを修正すべき」なのか、どっちなんでしょう? またはそれ以外?
//)のせいで、環境によってはコンパイルが通らなかった問題が修正されました。[ruby-bugs:PR#1184]BigDecimal::verの返す値が"1.0.0"から"1.0.1"に変わりました。execは子プロセスが終了するまで自プロセスの終了を待って、子プロセスの終了ステータスを親プロセスに返すようになりました。0を返してさっさと終了していました。$:)に一時的に加えるようになりました。ruby_cleanup())時、各スレッドを消してしまう前にファイナライザ群(ruby_finalize_0())を呼ぶようになりました。File.readable?メソッドがtrueを返すべきときでもfalseを返すことがあった問題が修正されました。[ruby-bugs:PR#1189]ENDブロック内のexitの引数が無視されるようになってしまっていた問題が、修正されました。[ruby-dev:21670]Test::Unit::Collector::Dir#collect_fileで、LoadErrorが発生したテストに関しては単に無視するようになりました。's'でSEGVすることのあったバグの修正、かなあ。[ruby-bugs:PR#1196]
_ 横道にそれてIPv6対応について再確認してみる。
1.9では、winsock2を必須にして、mswin32でも真面目にIPv6に対応するつもり。
_ 宿題消化中。
VC5は事実上VC6と同じということを確認。
_ でも、今日の分のChanges(つまりたぶん明日書くはず)の冒頭に来るであろう、--enable-dlstackの強制化によって、long15個分の余裕がスタックに生まれたので、結果として何も対策しなくてよくなるんではないかという噂が...
--enable-dlstackが常に指定されていることになりました。ruby_cleanup()内でInit_stack()を呼ぶようになりました。[ruby-dev:21686]WEBrick::GenericServer#startで、IO.acceptがIOErrorを出した場合もrescueするようになりました。[ruby-dev:21692]IO.acceptはIO.selectの間違いだろうとなかださんから指摘を受けました。そうかも。そもそもIOクラスにacceptなんてクラスメソッドはない...
_ 「一片たりとも信じるべきではない」ってことはないでしょう。
あの文章も嘘やでたらめばかりではなくて、真実もたくさん書かれているはずです。
なにが信じられてなにが信じられないか、というのは、真摯な目で読めばだいたいわかるもんではないかと思います。
_ 私があの文章でいちばん気にいらないのは、風評による差別を広げてしまっている点です。
他は百歩譲って全部許せても、これだけは許せません。
てゆーか、お前らも「ああそうか、原発の近所じゃ子供も産めないんだなぁ」とか納得してんじゃねー。んなわけねーだろ!
...
取り乱してしまいました。すみません。
_ 国民に不審と不安を抱かせるような現在の原発行政には、私も不満でいっぱいです。
また、将来に渡って蓄積し続ける環境コストという面から、できることなら原発以外のエネルギー源で将来の需要をまかなっていくようになっていって欲しい、とも願っています。
ですが、「今の原発は常時放射能を撒き散らしてて、周囲は人間も含めてみんな被爆してる。だから原発をやめよう」なんていう、根拠のない、嘘とでたらめに基づく意見には断固として反対します。
File#pathで、すでにファイルがクローズされていた場合にIOErrorが発生していましたが、単にnilを返すようになりました。おそらく[ruby-dev:21701]絡み。Hash#eachは、ハッシュのキーと値のペアをブロックに渡しますが、二つのオブジェクトをブロックに渡すのではなく、assocした結果のオブジェクトをブロックに渡すようになりました。[ruby-talk:84420]Hash#eachのブロックは一つのパラメータを受け取るように書けましたが、1.8.0では警告が出るようになっていました。警告を避けるためには、明示的に*を付けるなり二つのパラメータを受け取るように書き変えるなりする必要があったわけです。今回の修正で、1.6と同じコードが1.8.1でも警告なしに使用できるようになりました。Hash#each_pairは、1.8.0と同様に、1.8.1でも二つのオブジェクトをブロックに渡します。よって、一つしかパラメータを受けないように記述すると、今まで通り警告が出ます。#inspectが例外を起こす場合に無限再帰してしまう問題が修正されました。[ruby-bugs:PR#1204]
_ 現在の進捗: 6/11 ページ
これで15分は埋まるのかどうか。
プロジェクターとの相性問題とかが発生すればあっという間に15分くらいつぶせそうだ。
-dオプションを付けると$SAFE >= 4の時にexitがfatal errorとなる問題が修正されました。[ruby-dev:21730]$SAFE >= 4ではexitはInsecure operationとして禁止されるはずなのですが、この変更では成功してしまいます。それを修正するパッチも既に[ruby-dev:21734]に出ていますので、たぶん近いうちにcommitされるでしょう。
_ 現在の進捗: 9/11 ページ
うーん、15分じゃやっぱりページが足りないかもなあ。
あと、オチが決まらない。むう。
yield [1, 2]は1と2という二つのオブジェクトをブロックに渡すのではなく、[1, 2]という一つのオブジェクトをブロックに渡すようになりました。[ruby-dev:21726]_ テストを見る限りでは、人によっては影響が大きい変更のような気もするのですが、はてさて。
_ なかださんの予定によると、少なくとも11/4までは戻ってこないらしい。どうも車のようなので、11/5・11/6あたりもいないかも。
てなわけで、[ruby-dev:21734]のパッチはどうなるのかしらん?
_ 私の発表はどうでもいいといえばどうでもいいんだけど、宴会の人の集まりがいまいちだなあ。これも人徳か。
宴会に興味のある方は、[ruby-list:38546]を参照の上、急いでメーリングリストに参加されたし。
おっと、宴会は10/31の夜なので、お間違えなく。
_ オチの話。
マーシャとライザは... ごにょごにょ。
ぷろ子とぴろ子はなんか何も思い浮かばねー。ところで「ぷろ子」は「ぷろし」と読むんですじゃよ?(ウソ)
_ 現在の進捗: 12/12 ページ
というわけでいちおう資料の作成は終了。これでちゃんと持ち時間埋まるかしら?
なお、結局オチは用意してないのであしからず。
ruby -e 'next()'がSEGVするバグが修正されました。[ruby-talk:84530]CGI#paramsは、一瞬初期値をブロックで与えるようになりましたが、すぐに元([])に戻された上でfreezeされるようになりました。[ruby-list:38689]・[ruby-list:38695]sysstack_errorはtaintされるようになりました。[ruby-talk:84534]-d指定時に$SAFE >= 4でexitできるようになっちゃった問題が修正されました。[ruby-dev:21733]Regexp.unionメソッドが追加されました。[ruby-dev:21187]Pathname#realpathで、環境によってはDir.pwdがシンボリックリンクを含むことがあるのに、それに対応していなかった問題が修正されました。CONSTの有無が異なるのにCONSTありに決め付けていた問題が修正されました。OpenSSL::SSL::SSLContextに@extra_chain_certが追加されました。Buffering#initializeで@syncを@io.syncから設定するようになりました。よって、ext/openssl/lib/openssl/ssl.rbのOpenSSL::SSL::SSLServer#acceptやext/openssl/lib/net/protocols.rbのNet::SSLIO#ssl_connectでは@syncはいじらなくなりました。lambda経由でない)Proc#callに渡す場合、yield相当として扱うようになりました。[ruby-dev:21726]CGI::Session#to_aが配列を返さないことがあった問題が修正されました。[ruby-dev:21766]Optparse#initializeの第一引数にArrayを渡すと、その時点で例外を投げるようになりました。[ruby-bugs:PR#1207]絡み?systemの引数が安全かどうかチェックされないことがあった問題が修正されました。[ruby-talk:84555]() and 1などがSEGVする問題が修正されました。[ruby-talk:84539]NODE_WHENを処理するコードも不要ということで削除されましたが、これは間違いだと判明し、後で修正されました。READ_DATA_BUFFEREDというマクロが追加されています。Fileのパス名はrb_io_fptr_cleanup()ではなくrb_io_fptr_finalize()で解放されるようになりました。HASHが無駄に長かったのが短くなりました。encodingStyle属性を持つエレメントに余計なnamespaceを付加していたのを削除し、arrayType属性を持つエレメントに必要なnamespaceを付加していなかったのを付加するようになりました。DRb::DRbArrayクラスが追加され、yield周りの仕様変更に追従しました。[ruby-dev:21773]Hash#each問題が修正されました。[ruby-dev:21773]requireする際、socketライブラリでUNIXServerクラスが定義されないとLoadErrorが発生するようになりました。[ruby-dev:21743]
_ というわけで、昨日はpreview1が出ましたが、今日はpreview2が出てます。はやっ。
preview1は粗忽者人気者のwhyがMANIFESTを修正し忘れたのでコンパイル通りません。preview2は大丈夫ですのでそっちをどうぞ。
被捕捉アンテナ類
[\ay antenna (testing)]
[Ant]
[Antenna-Julia]
[LayserあんてなV2]
[nAntenna]
[nuance de Antenna]
[Rabbit's Antenna]
[Read List]
[Ruby hotlinks 五月雨版 (るるりん。)]
[してたま (私的アンテナ with たまてばこ)]
[ただのあんてな]
[ちゃらんぽらん]
[でこぽんリンク]
[なよろアンテナ]
[にっきトレーサー]
[偽善者あんてな - 2nd season -]
[湘南日記放送局(SDB)]
[はてなの各アンテナ]