Cette nouvelle version apporte plein d'améliorations, notamment au niveau des performances, et de nouveautés, que ce soit dans LLVM ou dans les projets annexes. Quelques-unes des principales avancées sont données dans la suite de la dépêche. Clang
Clang a maintenant atteint une certaine maturité et est considéré comme utilisable en production pour tous les langages C, C++, Objective C, Objective C++. Cette version 2.8 apporte une compatibilité avec les standard C++ 1998 et 2003, ainsi qu'Objective C++, la gestion de certains #pragma de GCC (visibility et align), la gestion d'instructions étendues (SSE, AVX, ARM NEON, et AltiVec), la gestion des en-têtes C++ précompilés. Clang utilise maintenant l'architecture MC (Machine Code, voir après) pour générer du code binaire et analyser syntaxiquement l'assembleur inline.
Machine Code
Le sous-système MC est la partie chargée de gérer tous les problèmes au niveau assembleur et code objet. Il s'agit encore une fois d'une collection de petits modules qui ont un rôle particulier mais qui, une fois conjugués, permettent de fabriquer des assembleurs, des désassembleurs, et d'autres outils qui travaillent à ce niveau.
La version 2.8 permet enfin de générer du code objet pour l'architecture darwin/x86[-64] et est donc utilisée par llc (qui transforme le bytecode en code objet) et Clang (auparavant, Clang générait un fichier assembleur texte qui était compilé par un assembleur externe). Le développement est en bonne voie pour la prise en charge du jeu d'instructions ARM et pour les format objet ELF et COFF. Comme dit précédemment, MC est aussi utilisé pour compiler l'assembleur inline. Une des forces de l'intégration de MC et Clang au sein de LLVM est qu'il est possible de remonter les erreurs au niveau de l'assembleur inline directement dans CLang, chose impossible à faire avec GCC qui appellent un processus externe (as) et donc perd les informations sur le code source original en C.
libc++
libc++ est une implémentation de la bibliothèque standard C++ telle que définie dans le futur standard C++0x. Cette nouvelle implémentation a été décidée sur trois critères : créer une bibliothèque standard performante en utilisant toute l'expérience accumulée par les autres implémentations sans s'occuper de la compatibilité binaire avec l'existant, avoir une bibliothèque standard non-GPL, ne pas s'occuper de la compatibilité avec les anciens standard C++ mais directement viser C++0x.
Cette bibliothèque, bien que très jeune, est déjà quasiment complète. Il lui manque juste le compilateur qui va avec, donc la gestion du C++0x dans Clang.
LLDB, Low Level Debugger
LLDB est le dernier né des sous-projets de LLVM. C'est un nouveau débogueur qui en est encore à ses débuts mais qui est construit comme le reste des sous-projets de manière modulaire et qui réutilise des modules venant d'autres sous-projets, comme le désassembleur LLVM, ou l'analyseur syntaxique de Clang.
Les autres sous-projets
Le sous-projet compiler-rt permet à présent de disposer des morceaux de code bas-niveau nécessaires pour la compilation, comme certaines conversions de types de base, ou une implémentation d'une unité de calcul flottant logicielle pour les architectures qui ne disposent pas d'une unité matérielle.
DragonEgg, le greffon GCC qui permet de remplacer l'optimisation et la génération de code de GCC par celles de LLVM poursuit son chemin et est maintenant capable de compiler de l'Ada, du Fortran, du C et du C++. Entre autres améliorations, notons un temps de chargement plus court grâce à une réduction du nombre de symboles exportés.
Le sous-projet VMKit est un ensemble de modules pour fabriquer des machines virtuelles. À l'origine, le but était d'avoir une implémentation de la JVM et une implémentation de la machine virtuelle de .NET. Malheureusement, le développement de cette dernière a été abandonné.
Projets utilisant LLVM
La liste des projets utilisant LLVM s'allonge encore. On peut notamment citer plusieurs nouveaux langages de programmation :
- Horizon est un langage de bytecode qui vise les systèmes d'exploitation à espace d'adressage unique ;
- Clay est un langage de programmation système utilisant la programmation générique ;
- Crack est un langage de script qui s'inspire de C, C++, Java et Python et dont le but est de s'exécuter aussi vite qu'un langage compilé. Il est réalisé par Google et les notes donnent une assez bonne idée de ce à quoi veut ressembler ce langage ;
- Kai (会) est un interpréteur expérimental utilisant des expressions symboliques imbriquées.
Aller plus loin
- LLVM (13 clics)
- Les notes de version de LLVM 2.8 (3 clics)
- Clang (7 clics)
# Merci Apple
Posté par Troy McClure (site web personnel) . Évalué à -6.
[^] # Re: Merci Apple
Posté par Jux (site web personnel) . Évalué à -9.
[1] http://www.ibmandtheholocaust.com/
(j'ai gagné un point :) )
[^] # Re: Merci Apple
Posté par claudex . Évalué à 10.
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
[^] # Re: Merci Apple
Posté par yellowiscool . Évalué à 7.
Envoyé depuis mon lapin.
[^] # Re: Merci Apple
Posté par zerkman (site web personnel) . Évalué à 1.
SINON LE CAPS LOCK DAY C'ÉTAIT VENDREDI DERNIER
[^] # Re: Merci Apple
Posté par barmic . Évalué à 3.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: Merci Apple
Posté par zerkman (site web personnel) . Évalué à -3.
[^] # Re: Merci Apple
Posté par Frédéric Perrin (site web personnel) . Évalué à 6.
Les contributions d'Apple, qui s'accompagnent d'un succès assez immédiat.
[^] # Re: Merci Apple
Posté par marahi . Évalué à 2.
PS: AppStore arrive bientôt sous OSX, AppStore : Synaptic sous DRM,
bon courage les macqueux les macqués.
[^] # Re: Merci Apple
Posté par rewind (Mastodon) . Évalué à 10.
[^] # Re: Merci Apple
Posté par M . Évalué à 3.
- la target principal est darwin x86 et arm. Le support des autres os tient parfois du hack ou n'est pas correct (au niveau ABI). Le support des autres archi (sparc, ppc) est pauvre.
- support de la cross compilation marche bien que sous MacOS
- le support de arm est orienté sur les coeurs récent (utilisé dans les iphone). Pour les plus vieux armv5, il existe des bugs qui n'interresse pas les développeurs.
De plus il se fait passer pour gcc, mais ne l'émule pas toujours correctement.
Ca avance, mais il n'a pas l'air d'être encore bon pour faire des trucs industriel sous Linux.
[^] # Re: Merci Apple
Posté par zul (site web personnel) . Évalué à 5.
Alors oui, on peut râler, apple patati patata, mais bon le code est sous licence BSD, et n'importe qui peut l'améliorer. En attendant, llvm fournit une bonne base pour faire des analyseurs statiques, des IDE, des expérimentations de nouveaux langages, là ou gcc et son architecture ultra monolithique emmerde le monde. SI il y'a des bugs, on peut les corriger, non, le code est libre (et y'a des bugs dans gcc aussi heing sur les architectures exotiques :)).
Enfin, on peut se plaindre du support processeur de llvm mais gcc a aussi supprimé le support d'un tas d'architectures matériels (voir tous les ports où NetBSD utilisant encore un gcc3). Dans le même temps, llvm fonctionne assez bien sur FreeBSD pour avoir été integré au base système.
[^] # Re: Merci Apple
Posté par Gabin . Évalué à 2.
Encore une raison pour tenter le couple Linux+Userland BSD! au lieu de faire l'inverse GNU/KFreebsd
cf: mon précédent message sur :
https://linuxfr.org/comments/1173322.html#1173322
Franchement les gars, ça n'existe pas? Ou dis-je une connerie énorme quant au concept?
[^] # Re: Merci Apple
Posté par totof2000 . Évalué à 8.
En tout cas ça ne me choque pas :
- les sources sont dispo
- il semble modulaire
deces 2 faits, n'importe qui ayant besoin d'un compilo pour supporter son archi peut reprendre l'ensemble du code et adapter la partie qui l'intéresse.
Qu'Apple s'oriene surtout vers les architectures qu'il supporte, c'eszt normal, tant qu'ils n'empêchent pas les autres par une politique torue, d'utiliser le code source pour faire ce qu'ils veulent.
Autant je n'aime pas Apple sur certains points, autant là dessus il n'y a rien à leur reprocher (c'est un peu comme la majorité des devs de logiciel libre qui ne codent que pour Linux et qui se moquent totalement de la portabilité, et il y en a des tas).
[^] # Re: Merci Apple
Posté par claudex . Évalué à 9.
Sincère condoléances.
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
[^] # Re: Merci Apple
Posté par zerkman (site web personnel) . Évalué à 3.
# Scala
Posté par Victor . Évalué à 4.
http://github.com/greedy/scala
\o/
# ca sent le roussi pour .Net
Posté par Albert_ . Évalué à 3.
Entre ca et l'abandon de ironpython c'est tout de meme curieux je trouve, non pas que cela me deplaise.
[^] # Re: ca sent le roussi pour .Net
Posté par auve . Évalué à -2.
# Qt Creator
Posté par viridis (site web personnel) . Évalué à 2.
source : http://labs.qt.nokia.com/2010/10/15/peek-and-poke-vol-4/
[^] # Re: Qt Creator
Posté par claudex . Évalué à 1.
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
[^] # Re: Qt Creator
Posté par viridis (site web personnel) . Évalué à 2.
D'ailleurs, il serait étonnant qu'ils abandonnent gcc/gdb vu le nombre d'utilisateur de ces outils.
[^] # Re: Qt Creator
Posté par Yves Bourguignon . Évalué à 1.
[^] # Re: Qt Creator
Posté par bubar🦥 (Mastodon) . Évalué à 2.
[^] # Re: Qt Creator
Posté par Yves Bourguignon . Évalué à 1.
[^] # Re: Qt Creator
Posté par claudex . Évalué à 1.
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
[^] # Re: Qt Creator
Posté par nicolas . Évalué à 4.
(ben quoi ? le troll-day c’est tout les vendredi !)
# Pour moi clang est plus lent que gcc 4.5.1à compiler et ça bug
Posté par cppuser . Évalué à 1.
j'ai fait quelques tests avec clang et il est à chaque fois plus lent de peu pour compiler. Je n'ai fait des tests sur que des exemples de programmes avec Qt. Et sur l'exemple wolfenqt, en plus le programme une fois compilé plante avec un "segmentation fault" alors qu'il fontionne très bien compilé avec ggc.
Je n'ai pas regardé d'ou venait l'erreur mais bon. Je suis de toute façon intrigué par le fait qu'ils indiquent que c'est bien plus rapide que gcc.
Si quelqu'un a une idée du pourquoi de la chose. Merci
Bonne journée
[^] # Re: Pour moi clang est plus lent que gcc 4.5.1à compiler et ça bug
Posté par claudex . Évalué à 2.
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
[^] # Re: Pour moi clang est plus lent que gcc 4.5.1à compiler et ça bug
Posté par zul (site web personnel) . Évalué à 1.
# clang est déjà dans ma distribution
Posté par cppuser . Évalué à 1.
Bon si le fait que Qt ait été compilé sur archlinux avec gcc fait que ça plante, ça va pas être évident non plus. Car si je dois recompiler toutes les bibliothèques avec clang c'est pas gagné. Je suis pas expert en compilation mais je croyais qu'il y avait un format standard pour les binaires ?
Bonne soirée
[^] # Re: clang est déjà dans ma distribution
Posté par zul (site web personnel) . Évalué à 1.
Je n'utilise pas Qt donc je ne peux rien dire pour ce problème, mais normalement, clang supporte l'abi de gcc. Mes projets utilisent uniquement boost, mais je peux utiliser les librariries boost compilé avec gcc-4.4.3 sans problème particulier. Le mieux est de demander sur la ML clang si Qt est supporté ou si il y'a des problèmes connus avec.
[^] # Re: clang est déjà dans ma distribution
Posté par rewind (Mastodon) . Évalué à 2.
http://llvm.org/bugs/show_bug.cgi?id=5881
[^] # Re: clang est déjà dans ma distribution
Posté par viridis (site web personnel) . Évalué à 1.
[^] # Re: clang est déjà dans ma distribution
Posté par claudex . Évalué à 3.
Ça dépend du langage. En C, c'est le cas, pas en C++.
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
# Relecture et correction
Posté par Davy Defaud . Évalué à 1.
- « boite », boîte, la boite ou boëte, c'est de la vinasse ;
- « Cette nouvelle implémentation a été décidé », décidée ;
- « LLDB est le dernier né des sous-projet », sous-projets ;
- « débuggueur », (franglais) soit débogueur (français), soit debugger (anglais);
- « implémentation d'une unité de calcul flottant logiciel », logicielle ;
- « les architectures qui ne dispose pas d'une unité matérielle », disposent ;
- « Malheureusement, le développement de cette dernière a été abandonnée. », abandonné.
Ça fait beaucoup quand même...
[^] # Re: Relecture et correction
Posté par Benoît Sibaud (site web personnel) . Évalué à 2.
# Rubunius
Posté par fridim . Évalué à 1.
http://rubini.us/
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.