ここ最近流行っている GC 周りの話をしつつ、KADOKAWA への攻撃であるとか、3.3.4 のリリースとその後の定期リリースについておしゃべりしていた。
ミーティングでは、タイムアウトの処理と計算、プログラミングの概念、およびリリーススケジュールについて議論されました。また、セキュリティの脆弱性とゼロトラストアプローチの重要性が話し合われました。さらに、正確なガベージコレクション(GC)の実装に関する複雑な問題点が挙げられました。
今週の AI サマリはこんな感じ。timeout って何の話だっけ?
ruby/ruby のリポジトリから WEBrick を消すということを始めたの続き。先週の木金を全部使って open-uri
のテストで動かしている WEBrick の mock サーバーも TCPServer と OpenSSL::SSL::SSLServer を使って全部書き直した。
https://github.com/ruby/open-uri/pull/37
これ自体は金曜のうちには出来て、月曜にマージして ruby/ruby
にも取り込んだら、RJIT や RubyCI でだけドカドカ落ちるという現象があって、なんだよ〜わかんね〜と一度 revert したのだった。
今日は上記のケースをしっかり眺めてみると、他のテストでは parallel で実行してるけど、RJIT や Ruby CI の chkbuild は単一プロセスで逐次実行しているので、そのへんが差分かなと、手元で同じように実行したらちゃんと落ちた。
手元で起きるなら後はデバッグすればいいので、Thread.abort_on_exception
をつけて、ひたすら実行させてコードを眺めていると proxy サーバーのスレッドを作るところで同じ設定で 2 つ作っていることが原因ということに気がついたので消すことで直った。
https://github.com/ruby/open-uri/commit/205bdac8ec16c9c2940d2618a3ffc9a80cda62c8
open-uri 側でも Windows で動かね〜というのがあって、木金にコードを書いていたときには気が付かなかったけど、上記の修正で全部ちゃんと動く用になった。いや〜、結構頑張ったわ...。
7/11 に開催予定の開発者会議の準備会に参加した。今回の議題は以下の通り。
https://bugs.ruby-lang.org/issues/20574
ざーっと見て2hくらいで終わり。続きは木曜日。