IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

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 !

GCC 4.8 sort et marque la fin de la migration de son code de C vers C++
La suite de compilateurs gagne en performances

Le , par Hinault Romaric

146PARTAGES

8  1 
Une nouvelle version de la suite de compilateurs open source multiplateforme GCC (GNU Compiler Collection) est disponible.

La version 4.8 du compilateur marque une étape importante pour ses développeurs, car ceux-ci ont finalisé la migration de son code source de C vers C++.

Pour rappel, en juillet 2012 les développeurs de GCC avaient annoncé leur volonté de totalement réécrire le compilateur en C++, avec pour objectif de maintenir le code de GCC compréhensible et facilement maintenable.


La nouvelle version C++ de GCC apporte des améliorations de performance, une optimisation du code, le nouveau détecteur d’erreurs mémoires AddressSanitizer et les nouveaux outils ThreadSanitizer.

Le code source de GCC 4.8 peut être téléchargé à partir de plusieurs miroirs et du serveur SVN du projet sous les termes de la licence GPLv3. Les développeurs qui souhaitent construire leur propre version de l’outil devront désormais utiliser un compilateur C++ compatible C++ 2003.

Il faut noter que la suite de compilateurs GCC permet de transformer le code source en langage machine pour plusieurs langages de programmation dont C, C++, Java, Objective-C, Ada et même Fortran 95.

Télécharger GCC 4.8

Source : site du projet

Et vous ?

Que pensez-vous de cette première version C++ de GCC ?

L'adoption de C++ au détriment de C est-elle meilleure pour le compilateur ?

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

Avatar de germinolegrand
Membre expert https://www.developpez.com
Le 26/03/2013 à 11:24
J'attends le MinGW associé pour pouvoir le tester
2  0 
Avatar de Emmanuel Deloget
Expert confirmé https://www.developpez.com
Le 28/03/2013 à 10:25
Citation Envoyé par Shaidak Voir le message
Le seul bémol serait le non support des threads du C++11 pour windows sans passer par posix mais bon, on ne peut pas tout avoir.
pthread sur Windows, ce n'est qu'une API qui en encapsule une autre. Les différences de performance se font donc sur la création des threads, et pas sur l'exécutions de celle-ci (et encore, la perte de performance est vraiment minime). Sur de nombreux points, l'API posix ne fait qu'un mapping one-to-one avec l'API Windows (thread, mutex, sémaphores,...). Par contre, posix offre des possibilités que ne sont pas disponibles via l'API sans passer par des circonvolutions un peu extrêmes (lire : c'est tout à fait possible, mais c'est compliqué à mettre en oeuvre) : local thread storage (LTS ; à ne pas confondre avec le thread_local de C++11), once, spin lock, condition variables, read/write lock, contrôle du scheduler...

Pour ceux qui sont intéressés, les sources de pthread pour Windows sont visible ici : http://sourceware.org/cgi-bin/cvsweb...pthreads-win32

Ceci étant dit, au niveau C++11, le fait est que l'implémentation proposée par Visual C++ nécessite au final la réécriture d'une partie de pthread, car la sémantique des threads proposée par le standard est celle des threads posix et non pas celle des threads natives Windows.

De son coté, g++ fait sensiblement la même chose : l'API thread est encapsulée dans une API interne appelée gthread, qui passe par pthread quand cette librairie est disponible, ou par les threads natives sur les systèmes sans pthread. Du coup, l'implémentation Visual C++ et celle de g++ on sensiblement les même performances.

Au niveau des sources (pour vous faire une idée), ça se passe dans la libgcc :



Donc : n'ayez pas peur des threads g++ sous Windows
2  0 
Avatar de iNaKoll
Membre régulier https://www.developpez.com
Le 26/03/2013 à 16:23
@germino
http://sourceforge.net/projects/ming...eleases/4.8.0/

1  0 
Avatar de Shaidak
Membre actif https://www.developpez.com
Le 26/03/2013 à 20:05
Bonne nouvelle pour ma part puisque j'attends cette version depuis un moment. J'ai déjà recompilé plusieurs bibliothèques et projets pour tester et jusqu'à présent tout se passe en douceur.
Le seul bémol serait le non support des threads du C++11 pour windows sans passer par posix mais bon, on ne peut pas tout avoir .
Pour ce qui est de l'adoption du C++ pour le compilateur je présume que s'ils l'ont fait ça ne doit pas être une si mauvaise idée .
0  0 
Avatar de gbdivers
Inactif https://www.developpez.com
Le 27/03/2013 à 10:09
Citation Envoyé par Shaidak Voir le message
Le seul bémol serait le non support des threads du C++11 pour windows sans passer par posix mais bon, on ne peut pas tout avoir
POSIX sur Windows ? Je croyais que c'était dispo qu'avec des libs supplémentaire comme cygwin, ce que gcc n'utilise pas (je crois).
Si j'ai bien compris, gcc n'a pas réimplémenté les threads, mais utilise un binding vers des libs (POSIX sur linux, l'API système sur Windows)

(HS : d'ailleurs, en parlant de threads C++11, Emmanuel Deloget a commencé une série d'articles sur le sujet, je conseille la lecture : http://blog.emmanueldeloget.com/inde...ag/concurrence)
0  0 
Avatar de Shaidak
Membre actif https://www.developpez.com
Le 27/03/2013 à 14:15
Citation Envoyé par gbdivers Voir le message
POSIX sur Windows ? Je croyais que c'était dispo qu'avec des libs supplémentaire comme cygwin, ce que gcc n'utilise pas (je crois).
Si j'ai bien compris, gcc n'a pas réimplémenté les threads, mais utilise un binding vers des libs (POSIX sur linux, l'API système sur Windows)
C'est exact, je ne parlais déjà plus de gcc à ce niveau mais des builds de mingw mentionnés dans le post précédent. Navré de ne pas avoir été suffisamment clair .
0  0 
Avatar de gbdivers
Inactif https://www.developpez.com
Le 27/03/2013 à 14:38
J'ai l'habitude d'utiliser gcc compilé pour windows : http://www.equation.com/servlet/equa...cmd?fa=fortran mais je sais pas très bien les différences avec mingw
0  0 
Avatar de Shaidak
Membre actif https://www.developpez.com
Le 28/03/2013 à 13:12
Citation Envoyé par Emmanuel Deloget Voir le message
pthread sur Windows, ce n'est qu'une API qui en encapsule une autre.
...
Donc : n'ayez pas peur des threads g++ sous Windows
Je ne faisais que constater qu'il s'agissait d'un binding, loin de moi l'idée d'en avoir peur sinon je n'aurais pas téléchargé la version posix de mingw64 .
En ce qui concerne les performances je te fais confiance vu que tu as l'air d'avoir plus d'expérience à ce niveau et que cela va dans le sens de mes lectures (mon utilisation de la bibliothèque Pthreads sous windows date d'il y a un moment et ça n'était pas vraiment poussé). Ceci étant, cette version sera peut-être pour moi l'occasion de tester cet apsect et de pouvoir éliminer des dépendances à boost ou autres.
0  0 
Avatar de minnesota
Membre émérite https://www.developpez.com
Le 29/03/2013 à 15:58
Citation Envoyé par gbdivers Voir le message
J'ai l'habitude d'utiliser gcc compilé pour windows : http://www.equation.com/servlet/equa...cmd?fa=fortran mais je sais pas très bien les différences avec mingw
En ce qui concerne gcc/mingw, j'utilise habituellement les versions de tdm-gcc, (je suis actuellement en 4.6.1), j'ai un instant était tenté par MinGW Distro de nuwen.net, et là je zyeute sur mingw- w64(32), mais y'a de fortes chances que je finisse par compiler mes propres versions... en tout il me faut passer de C++0x à C++11, et la 4.8 arrive à point nommé.
0  0