Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ICU4CをWindows10同梱のものに差し替える検討 #1783

Closed

Conversation

berryzplus
Copy link
Contributor

@berryzplus berryzplus commented Jan 29, 2022

PR の目的

こういうことできるぜぃっ! の情報共有が目的です。

カテゴリ

  • リファクタリング
  • 実験 (master へのマージを目的としない)

PR の背景

Azure Pilelines(無償版)でWindows Server 2016のサポートが終わるそうで、
その対策ディスカッションに「とある構想」を書き込みました。
#1752 (reply in thread)

#1104 の改善」とはどういうことなのか?を共有しておきたいと思います。

あとまぁ、いまのまま Win10 の icu.dll を使うように変更すると #1726 の実装が死ぬので「どうしようか?」を考えたいのも背景の一つです。

PR のメリット

PR のデメリット (トレードオフとかあれば)

仕様・動作説明

ICU4CをWindows 10組み込みのものに差し替えてみました。

実装してみて気付いたんですが、問題点が3つあります。

  1. Windows 10には icu.dll が入ってるバージョンと、そうでないバージョンがあります。
    ・・・ので、DllHandlerの機構を外すのはマズそうです。
  2. 実質的に uchardet.dll が存在したらそれを使って文字エンコーディングの検出が行われるように処理追加 #1726 の実装が死にます。
    グループポリシーで古いFeatureに固定してない限り、Win10には icu.dll が入っています。
    順番的に ICU4C を先にみる実装なので uchardet.dll は使われなくなってしまいます。
  3. 「ICU4C が標準で使える」という前提で考えると、検出した文字セット名を独自の文字セット定数に変換することが無駄に思えてきます、
    ICU4Cには文字コード変換関数も実装されているので「使える想定なのに何故使わない?」になる気がします。

修正範囲が増えると変更点が見辛くなるので、
MinGWビルド向けの修正を含めていません。
MinGWビルドはコケますが、気にしないでください。

PR の影響範囲

このPRで触っているのは「文字コード検出」ですが、
「文字コード変換」にも影響を与える提案をしています。

テスト内容

テスト1

手順

関連 issue, PR

参考資料

@AppVeyorBot
Copy link

Build sakura 1.0.4014 failed (commit a827ba2839 by @berryzplus)

@berryzplus
Copy link
Contributor Author

ビルドが通らなかったので、こっそり閉じておきます・・・

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants