Тут обновлял свой CMakeProjectManager2 и краем глаза заметил добавление файла dist/changes-7.0.0.md. Решил перечитать (с некоторыми изменениями я сталкиваюсь регулярно, так как живу на master-ветке).
Там фигурирует:
### C++
* Switched to Clangd by default (QTCREATORBUG-22917)
И таки да, они переключились на кодовую модель от Clangd. Оно появилось ещё раньше, где-то к версии 6.0, но была выключена. Можно ознакомиться с анонсом из первоисточника: Qt Creator and clangd: An Introduction. Или почитать комментарии к соответствующей новости на Phoronix.
В частности, они там объясняют причины. Основная (как мне кажется): libclang больше активно не развивается и для полноценной навигации, рефакторинга и прочего приходится держать две модели.
Там же они рекомендуют использовать самую последнюю версию clangd. Так что ссылки ниже ваши други:
Ну а теперь мои личные впечатления… Точнее табличка, которую я для себя составил. Плюсы и минусы.
Плюсы | Минусы |
---|---|
Как мне показалось, лучше парсит, более точно видит использование символа | Парсит долго. Нет, не так. ОЧЕНЬ ДОЛГО! |
База постоянная, т.е. сохраняется между запусками и инкрементно обновляется | Пока парсит, отъедает много памяти. Потом немного возвращает. |
Если отстреливается (например по нехватке памяти от earlyoom или nohang), то перезапускается только два раза, потом нужно перезапускать IDE или перегружать проект |
|
В итоге жрёт памяти примерно в два раза больше, чем без него. Это следствие того, что по факту, оба парсера сейчас работают в параллель, дополняя друг друга. |
|
И самое гнусное: постоянные подвисания редактора кода при вводе. Это очень сильно раздражает. |
В сухом остатке, если бы не последний пункт недостатков, то с его работой можно было бы мириться.
По памяти тоже минус. Но для больших проектов (у меня ядро Linux 4.19-Xilinx из комплекта PetaLinux 2019.2 через Generic Project подключено) его можно отключить (пока):
- В данный момент можно выключить Clangd глобально и включать только для отдельных проектов в их настройках.
- Или включить глобально и выключать для отдельных проектов.
В любом случае, считаю, что переключаться на него, как на дефолтный парсер явно преждевременно. И особенно преждевременно заявлять о полном переходе на него. Хотя причины такого понятны: получить больше фидбека. Но лаги при вводе… это же вообще ставит крест на юзабилити.
PS это напомнило на возникающие лаги, при работе в Emacs при подключении Language Server или даже ещё раньше, всяких автокомплитеров и т.п.