29の日ではありませんが、が常態化しているけど 5.5.0 をリリースした。
https://tdiary.org/20260724.html
前にちょっと書いた内部から CGI を無くして Rack で動かすようにしつつ、そこに到達する経路として CGI/FCGI/Rack を残すという大幅な変更を加えている。とはいえ外から見るとほとんど何も変わってないとは思うので、一旦ここで区切りをつけたリリースとなる。
他にも最近の Web ならこれくらいは設定するよね、というような変更が大量にあるのでちょくちょく入れてリリースしていこうと思う。ついでに tag 打つだけでリリースできるようにしたのでバンバンできてしまう。
2週間くらい前から FreeBSD 15 の CI が動かなくなっていてなんだろうと眺めてもよくわからず、しかも ssh ログインできない、という状況だったので AWS の console で再起動し、その後 ssh で入ってから chkbuild をマニュアル実行してみるとなんと途中で kill されて落ちる、という状況だった。
全然わからんな、と思ってログを眺めてみると String のテストでターミナルの折り返しで数万桁になるくらいのログがあって、何これ、となって claude に投げてみると FreeBSD の aarch64 では DTrace の不具合があって、アロケートするメモリが溢れるということだった。マジかー。
https://github.com/ruby/ruby/pull/17960
で、これを無効にして大丈夫だろうと思ったら再び Ruby CI で沈黙状態になったので眺めてみるとメモリが足りないな、ということで 4GB あるのになんで、とはなりつつも 8GB を追加して合計 12GBで様子見。
で、今日、それでも回復せず、時間もできたので本気で調べるために ssh ログインしようとしたらインスタンスも落ちた、という状態だったので AWS コンソールから再び再起動して、今度は scp で /var/log/message* をすべて読ませてから claude に ssh ログインしていいよ、と許可しつつ調べさせたら、なんと一気に問題を解決して便利だった。
詳細はサーバー内の話もあるので省略するが、要は DTrace によるメモリ溢れの時に rss のダンプがメモリ溢れの状況のまま作成され、それが100M+のサイズで残り続け、chkbuild が後処理で parse するときに oom で落ちていた、ということだった。ここまで特定するとかすごいな。
結局、rss を保存しているファイルを削除して、新規実行時に再作成させることで CI は無事復旧してよかった。なんか今回の経験から、個別の要素要素は知識と経験からわかってるものの、それらを疲れないレベルで根気よく調べ続けるってのはもう AI にぶん投げた方がいいのだな、ってなったので今後はそうやっていこうと思う。
今日、security advisory が公開された。
https://blog.rubygems.org/2026/07/22/security-advisory-legacy-api-key-leak.html
内容を読めばわかるけど、legacy key という昔の all scope キーが Rails および CDN の設定不備で一定条件で漏れていた、という内容になる。すでに全ての legacy key は revoke され、GET だけでキーを作れる歴史的経緯で残ってるエンドポイントも塞いだ。
という2点が利用者にとってのアクションアイテムになるので、対象になる人は対応をお願いします。
自分は直接的な作業は行ってないけど、方針であるとかアナウンスなどについては把握してレビューコメントをするなどしていた。自分でやった方が早いんだけど、みたいなものもありつつ、レビューというのも求められる仕事ではある。お疲れ様でした。
Webrick という開発向けに簡易 Web サーバーを立ち上げるライブラリがある。あくまでも 簡易、なので実際の Web サーバーによくある crlf の処理などがざっくりしていて使い方によっては client に攻撃できるよ、というやつに対して、勝手に CVE を申請する者がいて実際に受理されてしまうことがあった。
具体的には CVE-2024-47220 と CVE-2026-38969 なのだが、これが受理されて発行されると dependency に webrick を入れている gem は vulnerable としてマークされ、dependabot であるとか scan で alert がでて本当に迷惑なことになる。
なんか問題があるなら CVE を発行すべきとかグダグダ言ってる人もいるけど、メンテナが脆弱性じゃない、と判断したら脆弱性じゃないし、CVE というのはアップデートせよ、という警告の意味もあり、webrick を使ってて CVE によってプロダクトが危険!と思うなら、webrick を使ってる方がはるかに危険なので今すぐ puma などに置き換えろとしか思わない。根本的に優先順位がおかしい。
というわけで MITRE に対して reject の申請をして2件とも reject された。今までは reject のメール書くのだるい...となっていたけど、claude に chrome の権限を渡して、こういう要請を書いて、と壁打ちしてから送信させれば事足りるので便利になったと思う。
PS5 のコントローラを Phantom Pro にしてからの体験が非常に良く、やっぱインプットデバイスとか毎日使うものには投資するものだな、となったので HHKB Studio の墨+灰キーキャップの限定モデルを買った。
実際到着してから軽くキーマップを設定してみたが打鍵感はなかなか良い。ただそれよりも重視したのは
というあたり。実際、自分は3台のマシンを開発に使っており、普段はソフトKVMで共有しているんだけど、始業時/就業時は貸与マシンは切断するために BT での切り替えも必要なのであった。
キーのリマップとかはもう少し使い込んでからというところ。ところで初期の墨モデルだとキーに何が書いているか全くわからなくて不便だったので、灰キーキャップ付きのを買って正解だった。
Ruby を native な Windows で開発する場合に「git のデフォルトの autocrlf=false だと改行コードが全て変わってしまうので true にしないといけないが、autocrlf=true だとビルドできない」という何だそれというバグが実はあり、この前直していた。
https://github.com/ruby/ruby/pull/17841
これはビルド時の処理に prism を使うようにしたときに Windows のことを考慮していないから、ということが原因だったのだけど、ここまで放置されると清々しくもある。
前回のリリースは 7/10 の金曜だったこともあり、もう2週間経ったのという感じだが RubyGems 4.0.17 をリリースした。
https://blog.rubygems.org/2026/07/22/4.0.17-released.html
今回も Windows で開発するときに見つけた、何とも言えない微妙な挙動をひたすら直していた。スペースがある、とか末尾のスラッシュとか、そういうやつ。結構直したつもりではあるけど、まだ残ってるんだよなー...。
ちまちま直しつつ、バックポートという形で出していきます。