2010-12-12 95 views
5

Apple pousse beaucoup LLVM et Clang. Les rumeurs disent que c'est parce que Apple veut abandonner GCC (en raison de problèmes avec la licence GPLv3), et passer à Clang.Dois-je commencer à cibler Clang/LLVM avec mon projet iPhone C++?

Quelqu'un a une idée de ce qui va se passer?

Je démarre un projet C++ que je prévois de porter sur l'iPhone, et je ne sais pas si je devrais utiliser les fonctionnalités C++ 0x (du moins celles prises en charge par Clang), ou si je devais écrire code compatible avec GCC 4.1 ...

+0

Jusqu'à présent, Clang ne prend en charge que quelques fonctionnalités C++ 0x, je ne pense pas qu'il supporte tout ce que GCC ne supporte pas. – delnan

+0

Eh bien, Apple utilise GCC 4.1 et Clang est plus mature (au moins pour les fonctionnalités supportées) que GCC 4.1. – peoro

+0

Sauf qu'Apple utilise GCC 4.2.1 pas 4.1. – jer

Répondre

13

les rumeurs disent qu'il est parce que Apple veut GCC baisse (en raison de problèmes de licence GPLv3 ) et passer à Clang.

Ce n'est pas une rumeur, c'est la position déclarée d'Apple. La licence GPL sur GCC empêche Apple d'intégrer complètement le compilateur/analyseur dans ses outils de développement. Avec Clang/LLVM, ils n'ont pas de telles restrictions et sont donc capables de faire beaucoup plus avec leurs outils (en commençant par le Clang Static Analyzer intégré dans Xcode 3.2 et allant beaucoup plus loin avec Xcode 4). Au-delà des problèmes de licence, Clang/LLVM se construit beaucoup plus vite que GCC et dans les benchmarks d'Apple (et ma propre expérience) crée des exécutables plus performants que GCC. Il génère également des messages d'erreur beaucoup plus utiles. Il a été conçu de manière modulaire, ce qui devrait également faciliter la maintenance et l'extension de GCC. Apple a déclaré que toutes les fonctionnalités C++ à l'exception des modèles exportés sont prises en charge dans le prochain compilateur LLVM 2.0 dans Xcode 4, et le compilateur a été auto-hébergé depuis un petit moment maintenant. Si vous ne pouvez pas attendre, ou ne voulez pas essayer les aperçus du développeur Xcode 4, vous pouvez vérifier le compilateur maintenant en saisissant le code source du main LLVM site.

Je recommande fortement de regarder le WWDC 2010 videos disponible gratuitement pour la session 300 - "Outils de développement Etat de l'Union" et la session 312 - "Quoi de neuf dans le compilateur LLVM" où ils exposent ce qu'ils travaillent actuellement avec le compilateur LLVM . En ce qui concerne le timing, seul Apple peut vous dire quand ils vont faire quelque chose, et même ils ne peuvent pas savoir exactement quand quelque chose sera prêt pour la prime time. Vous pouvez faire des suppositions éclairées basées sur la trajectoire d'amélioration des aperçus du développeur Xcode, mais c'est tout. Cependant, Clang/LLVM est la façon dont Apple va, alors pourquoi ne pas planifier pour cela?

+0

Bonne réponse. De plus, Xcode 3.2.5 utilise LLVM 1.6 (par rapport à 1.5 dans les versions 3.2.x précédentes). – rjstelling

+0

En effet, à partir des benchmarks Phoronix, il semble que les binaires générés par gcc 4.6 surpassent Clang avec une bonne marge. Mais j'ai de l'espoir :) –

+0

@Matthieu - J'ai vu ces mêmes repères, qui sont difficiles à concilier avec les benchmarks OpenSSL d'Apple sur Mac (montrant une augmentation de performance de 5% -25% par rapport à GCC) et sur iPhone (montrant un Augmentation de performance de 12% à 60%). Apple utilise une version personnalisée de GCC, donc peut-être que cela ne suit pas les dernières versions du compilateur, ou peut-être qu'il y avait quelque chose de différent dans la configuration de Phoronix. Il semble aussi que Phoronix soit lui-même critiqué: http://www.osnews.com/thread?449249, même si je ne vois rien de manifestement faux dans les tests. –