[h=2]Performance de l'éditeur[/h]
Les environnements de développement C++ ne sont pas toujours connus pour leur rapidité, défaut partagé par l'étape de compilation (le C++ est un langage plus lent à compiler que la majorité…). Avec cette version, la solution maison pour gérer l'autocomplétion a été complétée par clangd, un dérivé du compilateur Clang. Cela signifie que, chaque fois que l'EDI lance l'autocomplétion, plusieurs moteurs sont lancés, les résultats étant affichés dès qu'ils sont reçus (avec une limite à cent résultats). clangd est toutefois limité dans ses possibilités, vu qu'il ne peut pas gérer du code en cours d'écriture (il n'est pas compilable, presque par définition).
Pour les projets de taille moyenne, clangd n'apporte pas grand-chose. Par contre, pour des projets bien plus grands, comme LLVM (projet père de Clang) ou Eigen (bibliothèque de calcul numérique), avec une énorme utilisation de fonctionnalités avancées de C++ (comme les templates pour Eigen), le résultat peut être époustouflant, les résultats arrivant jusqu'à plus de cent fois plus vite ! Le processus prenait parfois plusieurs secondes sur un ordinateur portable récent, il est maintenant bien plus raisonnable. Même pour des bibliothèques qui n'utilisent pas tellement de fonctionnalités avancées de C++, comme Qt, les gains sont appréciables.
Bon nombre de blocages de l'interface ont été résolus. En particulier, le renommage peut se limiter à des recherches uniquement dans les utilisations du code à renommer (pas les commentaires et les valeurs constantes) : auparavant, la recherche était toujours lancée, même si l'utilisateur n'avait pas besoin de tous les résultats.
Les étapes de création et de mise à jour de la base de données des symboles ont aussi été énormément retravaillées pour être plus rapides. Selon les projets, cette opération prend de dix à cinquante pour cent de temps en moins, ce qui se ressent très rapidement.
[h=2]Systèmes de compilation[/h]
Jusqu'à présent, CLion ne gérait la compilation qu'à travers les fichiers Makefile générés par CMake. Cette manière de travailler simplifiait fortement la conception de l'éditeur, en analysant directement la sortie de CMake. Désormais, avec CMake 3.15, CLion utilise directement l'API de CMake permettant de récupérer les mêmes données sans devoir passer par un Makefile. Ainsi, CLion peut utiliser n'importe quel générateur géré par CMake pour lancer la compilation, comme Ninja (plus rapide), des solutions Visual Studio ou des projets Xcode (des systèmes plus intégrés pour Windows ou macOS, respectivement). La sélection du système de génération est cependant assez sommaire :
[h=2]Débogage[/h]
CLion peut désormais lancer une instance distante de GDB pour le débogage. CLion se charge alors de téléverser l'exécutable à lancer et de le lancer avec gdbserver sur la machine distante.
LLDB 9 est inclus pour Linux et macOS, ce qui a permis de nettoyer une partie du code gérant l'affichage des variables dont le type est un conteneur de la STL (selon l'implémentation utilisée : celle de Clang, libc++, ou celle de GCC, libstdcxx — celle de Clang étant bien mieux gérée).
[h=2]Concepts de C++20[/h]
L'une des nouveautés les plus attendues de C++20 est la notion de concept. L'objectif est de contraindre les possibilités des arguments template avec des prérequis sémantiques (l'argument peut être haché, par exemple). CLion 2019.3 ne se limite pas à la coloration syntaxique, bien évidemment. L'EDI fournit une inspection pour les concepts inutilisés, la complétion automatique pour les types contraints par les concepts std::is_base_of et std::is_same, le renommage, ainsi que la navigation vers la définition et les utilisations d'un concept.
[h=2]Analyse de code[/h]
De nouvelles analyses statiques de code sont disponibles, notamment l'appel de fonctions virtuelles depuis les constructeurs et destructeurs. La vérification orthographique est activée pour les commentaires CMake et Doxygen.
L'analyse de la couverture d'une suite de tests est implémentée et peut utiliser llvm-cov ou gcov.
Téléchargez CLion
Source principale : JetBrains.
Sources secondaires : 2019.3 EAP: Performance improvements […], 2019.3 EAP: […] CMake, 2019.3 EAP: Debugger improvements.