Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Sortie de LLVM et Clang 4.0
Avec un support expérimental des coroutines dans LLVM, de nouvelles fonctionnalités C++17 pour Clang et bien plus

Le , par dourouc05

22PARTAGES

2  0 
Comme tous les six mois, voici une nouvelle version de LLVM, l’infrastructure de compilateur, notamment utilisée par Clang. Elle est numérotée 4.0, suite aux changements effectués dans les conventions du projet : auparavant, les versions successives étaient obtenues en ajoutant 0.1 (par exemple, la 3.9 a succédé à la 3.8) ; désormais, elles le seront par incrément de 1.0 (dans six mois sortira LLVM 5.0). En effet, le projet LLVM cherche à sortir une version tous les six mois, peu importe les fonctionnalités qui y ont trouvé leur place (et, pour les utilisateurs de l’API interne de LLVM et Clang, passer d’une version à l’autre pose presque toujours des problèmes). Certes, les versions 2.0 et 3.0 coïncidaient avec des changements majeurs qui cassaient la rétrocompatibilité de manière marquée, mais ce n’était pas tellement voulu (ces versions suivaient les 1.9 et 2.9, respectivement).

En quelques mots, LLVM 4.0 peut utiliser les informations de profilage avec ThinLTO (optimisation lors de l’édition des liens). Son élimination du code mort agressive supprime plus de code. Les coroutines sont arrivées dans le langage intermédiaire (LLVM IR) mais restent expérimentales (plus d’informations données lors du Developpers’ Meeting). LLVM 4.0 peut produire des binaires pour la plateforme Atmel AVR (après un développement sur GitHub, le code est intégré dans LLVM). L’éditeur de liens LLD a vu sa performance largement améliorée. Deux nouvelles conventions de passage d’arguments et de valeur de retour des fonctions ont été implémentées ; elles ont pour objectif de limiter le nombre d’éléments qui sortent des registres.

Côté C++, de nouvelles fonctionnalités du prochain standard (probablement numéroté C++17, mais dénommé C++1z pour le moment) sont intégrées à Clang. L’attribut diagnose_if peut être utilisé pour afficher des messages à l’utilisateur sous condition. De nouvelles optimisations par dévirtualisation des appels de méthode virtuelle ont été implémentées et peuvent être activées séparément. La gestion d’OpenCL a vu bon nombre de défauts corrigés.

Une erreur dans cette actualité ? Signalez-le nous !