U++のインストールは通常ソースからビルドする。その筋通りにFedora 42でビルドした。TheIDEを起動して、何らかのプロジェクトを開くとクラッシュする。どうやらlibclangの互換性に問題があるらしい。そういうメッセージが表示される。
もともとU++は独自のコード補完の機能を搭載していたが、それも今の時代にそぐわないためだろうか、2022年頃からlibclangを使用するように置き換えられた。そのlibclangが原因でクラッシュする。Fedora 42ではパッケージマネージャーでclang-libsというパッケージをインスールすることでlibclangが使える。そのバージョンは20になっている。それより前のバージョンはclang19-libsのような名前のパッケージになっている。
TheIDEで使用するlibclangのバイナリのパスを手動で設定する方法がないようだ。システムの方でデフォルトのclangのバージョンを変更してしまうのも良い考えだとは思えない。コード補完の機能を完全にオフにしてしまえばクラッシュはしないと思われるが、それでは不便すぎる。
もしかしたら見落としているだけの可能性もある。
FlatpakにTheIDEが存在しているのを見つけたのでそちらも試してみた。クラッシュはしない。しかし、やはりコード補完がおかしい。具体的には、次のようコードをエラーとする。
void foo(char const *s) {}
void ExpectNoError()
{
Upp::String x = "Hello, U++!";
foo(x);
}
これはエラーであるべきではないし、実際にコンパイルはパスする。しかし、AssistのコードチェックではStringからconst char *への変換はできないとエラーを報告する。
奇妙なことに、Assistの設定でC++標準をデフォルトのC++17からC++23にするとすべてがうまく行く。だからといってそのまま使い続けるのは気持ちが悪いので全くハッピーになれない。残念な気持ちのほうが強い。
Fedora 42は新しすぎるので仕方のないことだ。別の環境では特に問題に遭遇していない。そんなに落ち込む必要はない。
コメントを残す