雑感の件続き

従来は、Character#valueの値をそのまま1バイト単位でパーセントエンコーディングしていました。ISO_LATIN# 文字セットであれば1バイトで表現できますが、それをエンコードしていたわけです。ウムラウトとかアクセントつき文字は0x80以上の領域にありますが、それがエンコード結果でも%##1個で表現されていたはずです。
今回 デフォルトでutf8ベースでのエンコード・デコードに変更しようとしています(3.8/3.9はそのままですが、本家SqL05は既に変更されたエンコード実装がコミットされています)。0x7Fまでの文字はutf8でも同じコードなので影響はありませんが、0x80以上のISO8859コード1バイトはutf8では別のコードにマップされます。つまり、パーセントエンコードの結果や、エンコード済みのものをデコードする処理の結果は、Squeakのバージョンで違ってしまいます。
この件が単にURLを処理するところだけであればそれほど問題はないのです。しかし #unescapePercentsのsendersを見ると、SARの処理、およびResourceManager/Locatorの処理に関係しているようなのです。今回の変更がこれらに影響を及ぼさないことを示せれば、胸を張って本家版(ひいては3.8/3.9)に受け入れてもらえると思います。
ResouceManager/Locatorがどこで使われているかはわかりません。スペイン・ドイツ・フランス語圏にはアクティブなSqueakerたちがいますから、SARについては既に0x80以上込みでエンコードされたファイルが存在しているかもしれません。その人たちが作った資産はいままでどおり取り扱うことができて、また今後もSqueakのバージョンの違いを気にしなくてよいということを示したい、あるいはそういう設計にしたいわけです。
単に考えすぎならそれでいいのです(そうあってほしい。。。)
AR氏あたりに相談できれば話が早そうですがね。