Matz が不在だったり、いつものメンバーが四国方面に行ってそう、というのもあったので nobu と2人でなぜか月曜と火曜あたりから落ち始めた Windows のデバッグをしていた。
https://github.com/ruby/ruby/pull/16356
要は scoop で入れている GNU coreutils の Rust 版 uutils-coreutils というやつの shim が作成されなくなってしまって sort コマンドがどこからともなくやってきた sort コマンドに置き換わっていてビルドスクリプトが落ちていた、ということだった。これが Windows Update の影響によるジャンクションの制御が変わったから、とか理由はわからないのだけどとにかく動いてないものは動いてない、ということで動くようにしていた。
いやー、scoop が環境を汚さないでまともに使えるやつだと思って使っているのに、こういうトラブルがあるのは本当にしんどい。
先週作ったやつだと Psych は Psych、YAMLSerializer は YAMLSerializer という感じに完全に分離してテストや実装を作っていて、最終的に YAML 関連以外のテストが通れば OK!ということにしていたのだけど、次のフェーズとしてテストは Psych のものを信用しつつ、YAMLSerializerは全部その挙動に合わせるようにした。
https://github.com/ruby/rubygems/pull/9379
こんなのは Agent なら容易くやってくれるのであとは戦略だけになると思うんだけど、今まで分岐していた処理を分岐しないようにした上でテスト実行させた上で、一つずつエラーを見ては Psych の挙動になるようにして、と言い続けてるうちにできてしまった。1つだけ、コードの変更が大量になる割には「別にどうでもいい...」みたいなやつが残ったのでそれは別のレイヤーで吸収する感じにした。