Le grand changement est l'intégration de la technologie SSA (Static Single Assignement). Cela permet de faire une analyse abstraite du code source afin d'obtenir des optimisations générales et non plus de se limiter aux boucles précises et autres parties du code. C'est une amélioration majeure de l'architecture de GCC qui est ainsi mise en place pour le bénéfice de tous les utilisateurs du compilateur libre.
Il est à noter que cette version 4.0 ne sera que marginalement plus performante que le GCC actuel car le travail a porté surtout sur l'intégration propre et correcte de l'infrastructure tree-SSA. Les améliorations seront bien plus visibles avec la sortie de la 4.1 qui verra l'arrivée de l'autovectorisation et d'autres nouvelles techniques uniquement permises par tree-SSA.
Par contre il semble bien que la vitesse de compilation ait grandement été améliorée dès cette version 4.0 (plus de 20% avec le C++ dans certains cas).
Aller plus loin
- Les changements (15 clics)
- Explication sur le changement d'architecture de GCC (18 clics)
- Commentaires sur OSNews (1 clic)
- Autovectorisation (1 clic)
- News d'octobre 2003 sur les nouveautées de GCC (2 clics)
- Explication sur SSA (6 clics)
# À quand son utilisation partout ?
Posté par Pinaraf . Évalué à 4.
La plupart des distributions utilisent gcc 3.2 ou 3.3...
Quand est-ce-que toutes les distributions utiliseront gcc 4.0 par défaut ? D'ici 3 ans, histoire que gcc 5.0 soit là avec d'autres "strictitudes" en plus ?
Parce que trop d'applications ne compilent pas avec gcc4, et certaines ne passent même pas sur gcc3.4 ! Quand toutes les distribs utiliseront gcc4, toutes les applis seront "obligées" de compiler dessus...
Mais d'ici là, comment feront ceux qui font une LFS et qui veulent compiler plus vite (et profiter de -fvisibility) ? Patcher tous les programmes pour ça est tout sauf marrant !
[^] # Re: À quand son utilisation partout ?
Posté par Pascal Terjan (site web personnel) . Évalué à 6.
[^] # Re: À quand son utilisation partout ?
Posté par Sylvain (site web personnel) . Évalué à -8.
Lol \O/
[^] # Re: À quand son utilisation partout ?
Posté par Guillaume POIRIER . Évalué à 1.
Dans les cas d'utilisations courants, GCC 2.95 n'a pas à rougir de GCC 3.x. Il est bien plus rapide que la série 3.x, pour des performances proches.
[^] # Re: À quand son utilisation partout ?
Posté par Unixfix le Gaulois . Évalué à 5.
Cela dit gcc 2.95 est resté dans les annales comme le premier gcc qui compilaient les templates sans fautes....
[^] # Re: À quand son utilisation partout ?
Posté par Anomaly . Évalué à 6.
> bien plus rapide que la série 3.x, pour des performances proches.
Bien plus rapide oui, je veux bien te l'accorder. Pour compiler du C, gcc 2.95 convient parfaitement. Mais pour du C++ c'est autre chose : non seulement gcc 2.95 est relativement éloigné de la norme c++ (notamment au niveau de la bibliothèque standard), mais cette norme a aussi évolué entre temps. Pour développer en C++ propre, utiliser gcc 2.95 serait une erreur.
C'est vrai que gcc 3.x est très lent en c++, mais depuis gcc 3.4 on peut utiliser les en-têtes précompilés, et côté vitesse de compilation, ça change la vie ! \o/
[^] # Re: À quand son utilisation partout ?
Posté par Philippe F (site web personnel) . Évalué à 6.
Je dirai meme, pour developpe en C++ standard, utiliser n'importe quel compilateur est une erreur. En effet, il n'existe a ce jour aucun compilateur qui supporte completement et correctement l'integratlite de la norme C++.
Du coup, on se demande a quoi sert cette norme.
[^] # Re: À quand son utilisation partout ?
Posté par Ph Husson (site web personnel) . Évalué à 6.
Bah on va dire que c'est le graal des compilateurs C++ :)
euh bon graal me plait pas (oui bon l'abus de da vinci code est nuisible à la santé)
Enfin l'idée et la
[^] # Re: À quand son utilisation partout ?
Posté par Yann Droneaud (site web personnel) . Évalué à -2.
Pas portable, lent, cela me rappelerait presque Java, sauf que ce n'est pas du tout comparable !
[^] # Re: À quand son utilisation partout ?
Posté par patrick_g (site web personnel) . Évalué à 10.
est-ce la faute de GCC ou de ces applis ? GCC respecte la norme ISO pour le C et donc les applis (si elles se conforment à la norme internationale) devraient compiler.
En plus ce que tu nomme "strictitude" moi je le nomme "moyen-d'encourager-la-propreté-des-codes" ;-)
c'est en étant plus strict qu'on detecte des erreurs et des saletés cachées dans les sources.
[^] # Re: À quand son utilisation partout ?
Posté par Pinaraf . Évalué à 5.
Pour moi, strict n'est pas vraiment négatif, surtout dans le cas d'un langage de programmation
[^] # Re: À quand son utilisation partout ?
Posté par tgl . Évalué à 6.
> pour le C et donc les applis (si elles se conforment à la norme
> internationale) devraient compiler.
En pratique, j'ai pas l'impression que ce soit le C qui pose le plus de problèmes (là je pense que l'ISO est à peu près connu... encore que, tu prends le noyau, les patchs pour gcc4 étaient nombreux ces derniers mois, comme l'ont été il y a un moment ceux pour gcc3.4 un temps, et les autres avant), mais plus le C++. J'ai l'impression que là, pour pas mal de programmeurs, le standard en vigueur c'est vraiment ce qui compile avec leur g++ du moment.
[^] # Re: À quand son utilisation partout ?
Posté par Unixfix le Gaulois . Évalué à 4.
A l'époque, où Woody est sorti (c'est vrai c'était il y a 3 ans !!) gcc 3 avait encore quelques casseroles.
[^] # Re: À quand son utilisation partout ?
Posté par M . Évalué à 2.
[^] # Re: À quand son utilisation partout ?
Posté par Guillaume POIRIER . Évalué à 4.
Pourrais-tu en siter quelques-unes?
Je n'en ai jamais rencontré (avec 3.4, parceque avec le CVS de la 4.0, c'était déjà plus folklo)...
[^] # Re: À quand son utilisation partout ?
Posté par M . Évalué à 3.
En fesant une recherche sur le bugzilla de gcc, tu devrais trouver quelques regressions de ce genre.
[^] # Re: À quand son utilisation partout ?
Posté par Christophe Fergeau . Évalué à 6.
J'aurais tendance à dire « vivement qu'*une* distrib utilise gcc 4, comme ça la plupart des applis compileront avec »
> comment feront ceux qui font une LFS et qui veulent compiler plus vite ? Patcher tous les programmes pour ça est tout sauf marrant !
Il suffit qu'il y ait une personne utilisant une LFS qui envoie un patch aux mainteneurs, comme ça tout le monde en bénéficie...
> (et profiter de -fvisibility)
Yay, -O3 -march=xxx -mcpu=xxx est mort, long vie à -fvisibility, lanouvelle option de la mort qui tue qui fait aller un 486 à la vitesse d'un p4!!
[^] # Re: À quand son utilisation partout ?
Posté par fabb . Évalué à 2.
FC4 (sortie pour début juin) utilise gcc 4 par défaut. Je n'ai pas connaissance de paquet qui ne soit pas compilé avec gcc 4.0. Ça ne va pas sans effort, il y a quelques patchs pour corriger quelques applis.
[^] # Re: À quand son utilisation partout ?
Posté par Jacquot Raphael . Évalué à 10.
comme dirait Keith Packard on dit pas "Debian Stable" mais "Debian Stale"
[^] # Re: À quand son utilisation partout ?
Posté par Ramso . Évalué à 3.
> compiler plus vite (et profiter de -fvisibility) ? Patcher tous les
> programmes pour ça est tout sauf marrant !
Quel est l'intérêt de recompiler son système parce qu'un nouveau gcc est sorti, déjà...
Mais quitte à gâcher du temps et de l'énergie, autant contribuer au libre et envoyer les corrections à ces gorets.
C'est ce que je fais pour Ubuntu. Les logs de compilation de dia me donnent encore froid dans le dos...
[^] # Re: À quand son utilisation partout ?
Posté par machin Truc . Évalué à 4.
Ah... alors je dois rever car mon system tourne tres bien... j'ai une gentoo mon compilo est un gcc3.4... et mon system fonctionne... de plus (mais la je ne parles pas en connaissance de cause) certaines personnes sont passé en GCC 4 et arrive à tout compiler (bon c'est vrai qui y'en a qui n'y arrivent pas ;)
Tu as une LFS et tu connais des deboir avec GCC3.4 pour dire ca ? (ton non agressif hein !)
[^] # Re: À quand son utilisation partout ?
Posté par Pinaraf . Évalué à 2.
Je sais c'est peu... Mais j'ai pas testé sur tous les paquets du monde !
[^] # Re: À quand son utilisation partout ?
Posté par Christophe Fergeau . Évalué à 3.
[^] # Re: À quand son utilisation partout ?
Posté par drchaos (site web personnel) . Évalué à 4.
Etant le developpeur de monkey bubble, je peux peut etre fixer ça facilement.
[^] # Re: À quand son utilisation partout ?
Posté par Pascal Terjan (site web personnel) . Évalué à 3.
[^] # Re: À quand son utilisation partout ?
Posté par tgl . Évalué à 2.
http://www.gentoo.org/cgi-bin/viewcvs.cgi/*checkout*/games-arcade/m(...)
(rapporté dans ce bug : https://bugs.gentoo.org/show_bug.cgi?id=59000(...) )
Par contre, aucun soucis à signaler avec gcc-3.4.3, c'est ce que j'utilise et je certifie avoir testé la chose pendant bien des heures :)
[^] # Re: À quand son utilisation partout ?
Posté par Pinaraf . Évalué à 2.
pouf pouf
[^] # Re: À quand son utilisation partout ?
Posté par ookaze . Évalué à 2.
Il suffit de regarder sur BLFS (pour glib par exemple) ou chercher "ebuild package" sur Google (pour SDL par exemple), et d'aller dans le répertoire contenant les patches (files en général).
Les seuls packs que j'ai pas pu recompiler avec gcc 3.4.3, ce sont ceux de Gnomemm, surtout libglademm (le dernier 2.6.0). Je ne sais pas où est la régression, mais comme j'ai pas le temps pour ça ...
En revanche, avec GCC 4.0, c'est pire.
glib-1.2.10 compile sans souci, mais c'est pas le plus important.
Le pire, c'est que la glibc 2.3.5 vient de sortir, mais elle ne compile pas avec GCC 4.0. Les patches sont sortis (cf le site DIY Linux pour les hardcores comme moi pour qui LFS c'est un jeu pour enfants ;) ), mais je préfère attendre la sortie de glibc 2.3.6, qui va sortir, à ce que j'ai compris, rapidement, et exprès pour compiler avec gcc 4.0 !! Si c'est vrai, ça fera trois sorties de glibc très rapprochée, du jamais vu (surtout qu'avant, la 2.3.3 avait été sautée).
A mon avis, le -fvisibility ne sert que pour certaines biblio pour le desktop, pas besoin de tout recompiler !!
J'ai recompilé tout Gnome 2 avec. Pas trop difficile, le bug le plus courant est une déclaration en non statique, suivi d'une définition statique.
QT et KDE j'ai même pas essayé, car c'est vivement découragé partout (je vais essayer quand même tiens !).
Ce qui m'a fait le plus suer, c'est SDL, où il faut faire de sacrés modifs (parce que je ne maîtrise pas les alias de fonctions, celles-ci étant en assembleur ...).
J'ai fait tout ça car je voulais me préparer un bootcd pour mon Linux à moi, en gcc4, mais c'est pas pour demain, je vais rester en gcc 3.4.3 pour le bootcd pour l'instant.
[^] # Re: À quand son utilisation partout ?
Posté par Benoît Déchamps (site web personnel) . Évalué à 2.
# brevet...
Posté par M . Évalué à 10.
Remerciez nos amis MS pour avoir deposé un brevet ( http://appft1.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=HIT(...) )
[^] # Re: brevet...
Posté par Guillaume Knispel . Évalué à 10.
Je ne saurais meme pas déterminer en moins d'une semaine si un code correspond au brevet ou non ...
En tout cas le prochain crétin qui me dit que les brevets log pourrait favoriser l'innovation, je l'envois en lire des comme ca, il comprendra ca douleur.
Faut vraiment pas que de telles horreurs soient légales en Europe.
[^] # Re: brevet...
Posté par Anonyme . Évalué à 4.
Ca fait quand même une grosse base d'utilisateurs...
[^] # Re: brevet...
Posté par Christophe Fergeau . Évalué à 3.
Ca ne devrait pas être reformulé en « une version pour les pays où cette techno n'est pas brevetée » ? J'imagine qu'il peut y avoir des pays reconnaissant les brevets logiciels mais où Ms n'a pas déposé un tel brevet.
[^] # Re: brevet...
Posté par oliv . Évalué à 7.
[^] # Re: brevet...
Posté par herodiade . Évalué à 6.
# explication sur le ssa
Posté par M . Évalué à 5.
[^] # Re: explication sur le ssa
Posté par Christophe Chailloleau-Leclerc . Évalué à 3.
/Creator(LaTeX with beamer class version 3.01)/Producer(pdfeTeX-1.21a)
/PTEX.Fullbanner (This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) kpathsea version 3.5.4)
[^] # Re: explication sur le ssa
Posté par Christophe Fergeau . Évalué à 2.
T'as les noms exacts des softs qu'ont été utilisés pour ça ? J'imagine que ça peut être extrait des divers noms que t'as copié, mais je sais pas exactement lesquels sont significatifs ;) (j'imagine latex + la classe beamer, mais quid de pfdetex par ex ?)
[^] # Re: explication sur le ssa
Posté par Christophe Chailloleau-Leclerc . Évalué à 2.
J'ai juste regardé par curiosité, pour voir si j'allais trouvé un quelconque Powerpoint + Adbobe qqchose, ou encore des softs Mac (vu dans un pdf émis par Microsoft qui "comparait" son Office avec OOo...)
Je pense que Google avec quelques mots clés savamment choisis parmis les tags ci-dessus devraient t'aider...
pdfetex renvoie plein de choses en tout cas...
[^] # Re: explication sur le ssa
Posté par fusible . Évalué à 1.
[^] # Re: explication sur le ssa
Posté par TeXitoi (site web personnel) . Évalué à 4.
Le style correspond presque à l'exemple. (j'ai pas encore utilisé beamer)
pdfetex, c'est le moteur normal de pdflatex, donc rien de bien surprenant (etex etant une extention de tex, pdfetex etant la version pdf de etex, avec la couche latex, ca donne pdfelatex, en mode comptatibilité, ca donne pdflatex). Pareil pour kpathsea.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 4.
Ce commentaire a été supprimé par l’équipe de modération.
# gcc = g++ gcc et gjc et libgcj ?
Posté par rzr (site web personnel) . Évalué à 3.
Une fonctionalité qui me manque c'est de pouvoir produire des lib dynamiques C++ linkable avec d'autre compilo (au hazard msvc?) ...
gpg:0x467094BC
[^] # Re: gcc = g++ gcc et gjc et libgcj ?
Posté par SoWhat . Évalué à 5.
1. L'utilisation des classes templates changent d'un compilo à l'autre puisque ce n'est pas la même STL. Le link peut donc éventuellement bien se passer, mais la manipulation des objets (std::string par exemple) peut être catastrophique pour l'intégrité des données.
2. A moins d'une ABI C++ normalisée par un comité ANSI ou autre, comment être sûr d'une interopérabilité stable *et* durable ?
3. Plus encore que l'ABI, il faudrait que la représentation intrinsèque de l'objet (ie sa représentation en mémoire) soit la même. Donc même format de vtable, même codage des infos de typage dynamique, etc.
Bref, compliqué ! Notes d'ailleurs que même un compilateur comme MSVC est incompatible entre ses différentes versions, comme par exemple entre la version 6 et la version 7 (.NET). J'en garde d'assez mauvais souvenirs ! Alors l'interop entre des compilos différents, oublies !
[^] # Re: gcc = g++ gcc et gjc et libgcj ?
Posté par Christophe Fergeau . Évalué à 4.
Pour info, depuis gcc 3.qqchose, l'ABI c++ est censée être stable et à peu près normalisée car basée sur une ABI définie par Intel (je crois) entre autres. Ca n'empêche pas qu'ils trouvent toujours le moyen de faire des petits changements (dûs à des bugs) d'une version à l'autre de gcc :(
Mais tout espoir n'est pas perdue pour une interoperabilité! :)
Le C c'est quand même bien pour ça, y a pas tous ces pbs...
[^] # Re: gcc = g++ gcc et gjc et libgcj ?
Posté par SoWhat . Évalué à 1.
[^] # Re: gcc = g++ gcc et gjc et libgcj ?
Posté par Christophe Lucas (site web personnel) . Évalué à 3.
[^] # Re: gcc = g++ gcc et gjc et libgcj ?
Posté par Pierre Tramonson . Évalué à 7.
Probably the most visible enhancement of GCJ 4 comes from merging the libgcj runtime with the GNU Classpath core class library project. By collaborating with other free runtimes like the traditional kaffe environment and around 20 other projects, GCJ 4 is able to offer a core class library comparable to JDK 1.3 or 1.4. The collaboration of all these projects on a common core library implementation means that a lot of the libraries needed by applications, except for advanced Swing, Corba and sound usage, are available out of the box.
Ouais \o/ on se rapproche de Sun !
Swing c'est vraiment un gros morceau, je sais pas exactement où ils se sont arretés.
The other big change is the addition of the -findirect-dispatch switch to the compiler. Using that option causes GCJ to generate native code for classes and methods that follow the precise same binary compatibility rules as described in the Java Language Specification
Le PDF ftp://gcc.gnu.org/pub/gcc/summit/2004/GCJ%20New%20ABI.pdf(...) est _très_ intéressant sur le sujet.
Les points à venir dans GCJ :
- le début de l'équivalence JDK 1.5 (generics par exemple)
- le support accru des distribs (Fedora et Debian) pour un environnement Java libre et de qualité, par ex via http://www.jpackage.org/(...)
- le fait que de plus en plus de projets Java Open Source supportent l'initiative GCJ en utilisant le plus possible de libs documentées dans l'API standard (cela vient aussi du transfert de packages en "com.sun" vers "java.*", par ex les proxy auth ou jmx)
[^] # Re: gcc = g++ gcc et gjc et libgcj ?
Posté par wismerhill . Évalué à 3.
Il suffit d'aller voir sur le site de classpath http://www.gnu.org/software/classpath/classpath.html(...) , plus particulièrement les status par comparaison aux différentes versions du jdk, par exemple pour le 1.4 on a http://www.kaffe.org/~stuart/japi/htmlout/h-jdk14-classpath.html(...) et on voit qu'il y a déjà un bon morceau de swing qui est implémenté. PAr contre rien n'est encore commencé pour javax.sound et les packages en org.omg sont à peine entamés.
Au total il en sont (au moment où j'écrit, c'est mis à jour toutes les nuits) ils estiment avoir implémenté 90% du jdk 1.4 (mais ça fait également 82% du 1.3 et 85% du 1.2). Le jdk 1.1 est complètement implémenté (à 0.2% près et en négligeant les incompatibilités vis-à-vis des versions récentes).
Il est amusant de voir par contre que le jdk 1.0 n'est implémenté qu'à 91% à cause du manque du package java.awt.peer qui a disparu des versions suivantes.
Je garde un oeil dessus depuis un an (je travaille justement en java) et classpath à considérablement évolué ces derniers mois! (probablement grâce à l'implication de Redhat)
[^] # Re: gcc = g++ gcc et gjc et libgcj ?
Posté par Frédéric RISS . Évalué à 4.
Pour le boulot j'avais essayé de faire cohabiter des libs C++ mingwin et msvc sans succès ; par contre ca marche bien avec du code C (ming|cyg)win et une DLL C++ msvc.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.