Wine 11.15、2006年報告のバグ修正。Wayland色あせ解消
バグ番号4811。2006年3月に報告され、20年間開いたままだったMSXML3の不具合が、ようやく閉じられた。
バグ番号4811。2006年3月に報告され、20年間開いたままだったMSXML3の不具合が、ようやく閉じられた。
20年越しのクローズ
Wine 11.15が現地時間8月8日にリリースされた。通常は隔週金曜だが、今回は土曜の公開となった。
41件のバグ修正の中に、Bug #4811がある。
MSXML3のXMLDOMDocumentオブジェクトがIStreamインターフェースで問い合わせできない、という不具合。報告は2006年3月13日。WindowsのXMLパーサーが備えている標準的なインターフェースをWineのMSXML3が実装していなかったために、XMLDOMDocumentをストリームとして扱おうとするアプリケーションが正しく動作しなかった。
Wineのバグトラッカーで4811番台は、プロジェクトが世に出てからまだ13年目の頃に開かれた領域だ。2008年にはパッチも提出されたが、当時は受理に至らなかった。今回、ニコライ・シヴォフ(Nikolay Sivov)氏による一連のMSXML3改修の中で、IStreamサポートの実装、save()のUTF-16 BOM書き出し、load()のドキュメント間読み込み対応といった作業が行われ、20年来の課題がまとめて解消された。
Waylandの2つの修正
41件の修正にはWaylandに関連する2件が含まれる。
1件目はEGLコードのsRGB二重変換の修正だ。OpenGLのデフォルトフレームバッファでGL_FRAMEBUFFER_SRGBが有効になっている環境では、コンポジタ側でもsRGBへの変換が行われるため、結果として色が二重に補正されて白っぽく褪せた表示になっていた。WaylandでOpenGLアプリケーションを動かしたときに画面全体の彩度が落ちる現象の原因がこれだった。
2件目は、4:3の固定解像度でフルスクリーン表示した場合にコンテンツがずれ、未定義の余白が表示される不具合の修正。トップレベルウィンドウの矩形計算に可視領域を使うよう変更された。
新機能と基盤強化
新機能は4つ。
BCrypt(暗号化API)にKDFアルゴリズムが追加された。TLS 1.1/1.2用のKDFとHKDFの実装が含まれる。ハンス・ライデッカー(Hans Leidekker)氏の作業で、ハッシュブロック長の取得やTLS1 KDFラベルの省略可能化も同時に入っている。
ARM64ECビルドのMinGWモード対応。ARM64X(ARM64とARM64ECの混合イメージ)のビルド時にClangのターゲットオプションが常に付与されるようになり、.NETアプリケーションのネイティブ対応判定ロジックも追加された。
WindowsCodecsには新たなフォーマット変換パスが追加された。32bppBGRAや64bppPRGBAから128bppRGBAFloatへの変換など、高精度な画像処理パイプラインでの利用を想定した変換が含まれる。
ローカルNTLM認証にも対応した。msv1_0がインプロセスでNTLM認証を処理できるようになり、問題が発生した場合はntlm_authツールにフォールバックする。NTLMはMicrosoftが開発したチャレンジ・レスポンス型のレガシー認証プロトコルだ。これを内部で完結できるようになったことで、外部ツールへの依存が減る。
ゲームとアプリケーションの修正
ゲーム関連の不具合も多い。
MapleStory(バージョン216150)はCharPrevA/CharPrevExAにNULLポインタが渡されるとクラッシュしていた。Steamではマウスの動作がおかしくなる問題、Final Fantasy XI Onlineでは右Shiftキーの挙動が期待と異なる問題がそれぞれ修正された。
複数のアプリケーションで発生していたフリーズも解消された。Mugen、東方Project 8作目(東方永夜抄)、Final Burn Neoが対象だ。
WinSCPやIrfanViewではDPI 144の環境でダイアログが実際のサイズの4分の1に描画される問題が修正され、KakaoTalkの断続的なハングも解消されている。
2006年3月 MSXML3のIStream未対応 バグ番号4811。パッチは2008年に出たが受理されず 2007年 Notepad++がフリーズ 仮想デスクトップ外でファイル変更を検出するとフリーズ 2025年 OpenGLの色あせ sRGB二重変換でWayland上の表示が白っぽく褪色 2026年 4:3フルスクリーンの表示ずれ Waylandで固定解像度アプリのコンテンツがオフセット 2026年 Steamのマウス不具合 マウスの動作がおかしくなる問題 2026年 複数アプリのフリーズ Mugen、東方永夜抄、Final Burn Neo 2026年 DPI 144でダイアログ縮小 IrfanView、WinSCPでダイアログが4分の1サイズに描画 2026年 WinWingの誤認識 Xboxコントローラとして誤認識されていた |
WordPerfect 7のインストール失敗やQuickBooks 2009のインストーラクラッシュといった、古いビジネスアプリケーションの修正も含まれる。
WinWingのOrionフライトコントローラがhidrawでデフォルト認識されるようになり、Xboxコントローラとして誤認識される問題が解消された。
conhostにはビープ音の出力機能が追加された。Notepad++が仮想デスクトップ外でファイル変更を検出するとフリーズする問題(Bug #11595、2007年報告)も修正されている。
サーバー内部の大規模リファクタリング
今回のリリースでは、プロジェクトリーダーのアレクサンドル・ジュリアード(Alexandre Julliard)氏が28件のコミットを入れている。その大半がWineサーバー内部のオブジェクト初期化処理のリファクタリングだ。
イベント、ミューテックス、セマフォ、タイマー、デバッグオブジェクト、ALPCポート、完了オブジェクト、ディレクトリ、シンボリックリンク、メールスロット、名前付きパイプ、デバイス、セクション、レジストリキー、ジョブオブジェクトなど、サーバーが管理するほぼすべてのオブジェクト型にinit()オペレーションが実装された。
オブジェクト生成時のパラメータ受け渡しが構造体経由に統一され、名前付きオブジェクトの生成とオープンの共通処理が整理されている。
ユーザーから見える変化ではない。だがWineサーバーのコードベースが将来の拡張に耐えるための基盤工事だ。今回のリリースの中で最も記述量の大きい変更でもある。
Bug #4811が報告されたとき、Wineのバージョンは0.9系だった。プロジェクトは1.0を経てメジャーバージョンが二桁に乗り、WaylandやARM64ECに対応するまでに育った。バグ1件が閉じられるのに要した20年は、Wineが歩いた20年そのものだ。
関連記事
- Wine-Staging 11.11リリース。289パッチで本流を補強
- Wine Wayland、ポインタワープ新方式へ
- Fedora 44正式リリース、GNOME 50でX11廃止
- Flutterをデスクトップの「中」に埋めた新Waylandコンポジター
- Rust製X11サーバーyserver 1.4。SteamとChromeがGPU加速に対応
- AIが作ったLinuxデスクトップ。今度は本物だった
- SDLの上にXlibを再実装、libx11-compat公開
- アセンブリだけでX11サーバーを書いた男のデスクトップ
- Linuxゲーミングのアンチチート問題にオープンソースの対案が出た
- 映画業界がWayland移行に本腰を入れる